diff --git a/1.1/Assemblies/RimNudeWorldHARAddon.dll b/1.1/Assemblies/RimNudeWorldHARAddon.dll
new file mode 100644
index 0000000..321026b
Binary files /dev/null and b/1.1/Assemblies/RimNudeWorldHARAddon.dll differ
diff --git a/1.1/Assemblies/RimNudeWorldHARAddon.pdb b/1.1/Assemblies/RimNudeWorldHARAddon.pdb
new file mode 100644
index 0000000..0e6aaf0
Binary files /dev/null and b/1.1/Assemblies/RimNudeWorldHARAddon.pdb differ
diff --git a/1.1/Patches/AnusPatch-Humans.xml b/1.1/Patches/AnusPatch-Humans.xml
new file mode 100644
index 0000000..2c17e2d
--- /dev/null
+++ b/1.1/Patches/AnusPatch-Humans.xml
@@ -0,0 +1,222 @@
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons
+
+
+ Anus/FeaturelessAnus
+ Anus
+ Transparent
+ true
+ -0.325
+ false
+
+ Legs
+
+
+
+
+
+ Anus/anus_micro
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+ Anus/anus_insect
+ Anus/anus_common
+ Anus/anus_micro
+ Anus/anus_hyd
+ Anus/anus_common
+
+ Anus/anus_common
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Anus/anus_common
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+
+ Anus/anus_common
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+
+ Anus/anus_common
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+
+
+
+ Anus/anus_common
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+
+ Anus/anus_common
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+
+ Anus/anus_common
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+
+ Anus/anus_common
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+
+ Anus/anus_common
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+
+ Anus/anus_common
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+
+ Anus/anus_common
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+
+
+
+ (-0.4264,0.2328)
+ (-0.439,0.17)
+ (-0.42,0.16)
+ (-0.42,0.226)
+ (-0.42,0.02)
+
+
+
+
+ (0.002,0.615)
+ (-0.01,0.59)
+ (-0.002,0.6)
+ (-0.008,0.632)
+ (0,0.427)
+
+
+
+
+ (-0.544,0.26)
+ (-0.29,0.3)
+ (-0.76,0.19)
+ (-0.428,0.24)
+ (-0.486,0.024)
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.1/Patches/BackBreastsPositionFix-Humans.xml.old b/1.1/Patches/BackBreastsPositionFix-Humans.xml.old
new file mode 100644
index 0000000..ae1efcd
--- /dev/null
+++ b/1.1/Patches/BackBreastsPositionFix-Humans.xml.old
@@ -0,0 +1,36 @@
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessRight"]/offsets/north
+
+
+
+ (-0.03,0.5)
+ (-0.02,0.56)
+ (-0.07,0.61)
+ (-0.01,0.537)
+ (0,0.41)
+
+
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessLeft"]/offsets/north
+
+
+
+ (-0.03,0.5)
+ (0.019,0.56)
+ (0.06,0.61)
+ (0.013,0.537)
+ (0,0.41)
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.1/Patches/BellyPatch-Humans.xml b/1.1/Patches/BellyPatch-Humans.xml
new file mode 100644
index 0000000..55815e6
--- /dev/null
+++ b/1.1/Patches/BellyPatch-Humans.xml
@@ -0,0 +1,77 @@
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[hediffGraphics/RJW_pregnancy]
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons
+
+
+ Belly/FeaturelessBelly
+ Torso
+ CutoutComplex
+ true
+ -0.289
+ false
+
+ Torso
+
+
+
+
+
+ Belly/FeaturelessBelly
+
+ Belly/BellyBulge_huge
+ Belly/BellyBulge_huge
+ Belly/BellyBulge_large
+ Belly/BellyBulge_medium
+ Belly/BellyBulge_small
+ Belly/FeaturelessBelly
+
+
+
+ Belly/FeaturelessBelly
+
+ Belly/BellyBulge_huge
+ Belly/BellyBulge_huge
+ Belly/BellyBulge_large
+ Belly/BellyBulge_medium
+ Belly/BellyBulge_small
+ Belly/FeaturelessBelly
+
+
+
+
+
+
+ (-0.42,0.20)
+ (-0.42,0.20)
+ (-0.42,0.22)
+ (-0.42,0.226)
+ (-0.42,0.0023)
+
+
+
+
+ (0.002,0.6)
+ (0.002,0.570)
+ (-0.002,0.6)
+ (-0.008,0.632)
+ (-0.002,0.6)
+
+
+
+
+ (-0.4264,0.2328)
+ (-0.42,0.20)
+ (-0.42,0.22)
+ (-0.42,0.226)
+ (-0.42,0.23)
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.1/Patches/BreastGraphicPatch-Humans.xml b/1.1/Patches/BreastGraphicPatch-Humans.xml
new file mode 100644
index 0000000..64f9a0c
--- /dev/null
+++ b/1.1/Patches/BreastGraphicPatch-Humans.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessLeft"]/hediffGraphics/Breasts
+
+
+ Breasts/breasts_micro_left
+
+ Breasts/breasts_backb_left
+ Breasts/breasts_oversized_left
+ Breasts/breasts_huge_left
+ Breasts/breasts_large_left
+ Breasts/breasts_average_left
+ Breasts/breasts_small_left
+ Breasts/breasts_micro_left
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessRight"]/hediffGraphics/Breasts
+
+
+ Breasts/breasts_micro_right
+
+ Breasts/breasts_backb_right
+ Breasts/breasts_oversized_right
+ Breasts/breasts_huge_right
+ Breasts/breasts_large_right
+ Breasts/breasts_average_right
+ Breasts/breasts_small_right
+ Breasts/breasts_micro_right
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.1/Patches/BreastsPositionFix-Humans.xml.old b/1.1/Patches/BreastsPositionFix-Humans.xml.old
new file mode 100644
index 0000000..080bf88
--- /dev/null
+++ b/1.1/Patches/BreastsPositionFix-Humans.xml.old
@@ -0,0 +1,76 @@
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessRight"]/offsets
+
+
+
+
+ (-0.456,0.194)
+ (-0.437,0.20)
+ (-0.565,0.16)
+ (-0.42,0.22)
+ (-0.5336,0.05)
+
+
+
+
+ (-0.03,0.5)
+ (-0.02,0.56)
+ (-0.07,0.61)
+ (-0.01,0.537)
+ (0,0.41)
+
+
+
+
+ (-0.518,0.1913)
+ (-0.428,0.236)
+ (-0.6521,0.21)
+ (-0.409,0.22)
+ (-0.48,0.5)
+
+
+
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessLeft"]/offsets
+
+
+
+
+ (-0.385,0.194)
+ (-0.4178,0.20)
+ (-0.279,0.16)
+ (-0.42,0.22)
+ (-0.302,0.05)
+
+
+
+
+ (-0.03,0.5)
+ (0.019,0.56)
+ (0.06,0.61)
+ (0.013,0.537)
+ (0,0.41)
+
+
+
+
+ (-0.518,0.1913)
+ (-0.428,0.236)
+ (-0.6521,0.21)
+ (-0.409,0.22)
+ (-0.6,0.093)
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.1/Patches/HumansAreAliensToo_FemaleAndMaleBodySeparationPatch.xml.old b/1.1/Patches/HumansAreAliensToo_FemaleAndMaleBodySeparationPatch.xml.old
new file mode 100644
index 0000000..7943245
--- /dev/null
+++ b/1.1/Patches/HumansAreAliensToo_FemaleAndMaleBodySeparationPatch.xml.old
@@ -0,0 +1,8 @@
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator
+
+ true
+
+
+
\ No newline at end of file
diff --git a/1.1/Patches/LayerOffsetFix-Humans..xml.old b/1.1/Patches/LayerOffsetFix-Humans..xml.old
new file mode 100644
index 0000000..469ef8f
--- /dev/null
+++ b/1.1/Patches/LayerOffsetFix-Humans..xml.old
@@ -0,0 +1,40 @@
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart="Genitals"]/hediffGraphics/Penis/../../layerOffset
+
+ -0.2882
+
+
+
+
+
+ Always
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Genitals/Pubes/Pubes"]
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Genitals/Pubes/Pubes"]/layerOffset
+
+ -0.2892
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessLeft"]/layerOffset
+
+
+ -0.280
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessRight"]/layerOffset
+
+ -0.280
+
+
+
+
+
\ No newline at end of file
diff --git a/1.1/Patches/OTYBallsOffsetPatch.xml b/1.1/Patches/OTYBallsOffsetPatch.xml
new file mode 100644
index 0000000..f45ada6
--- /dev/null
+++ b/1.1/Patches/OTYBallsOffsetPatch.xml
@@ -0,0 +1,38 @@
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Genitals/Testicles/FeaturelessTesticles"]/offsets
+
+
+
+
+ (-0.4263,-0.2235)
+ (-0.4196,-0.267)
+ (-0.4199,-0.2834)
+ (-0.4199,-0.2239)
+ (-0.4199,-0.4363)
+
+
+
+
+ (0,0.082)
+ (-0.01156913,0.0455)
+ (-0.006,0.0291)
+ (-0.006030868,0.087)
+ (0,-0.1109)
+
+
+
+
+ (-0.49,-0.1901)
+ (-0.4854,-0.2469)
+ (-0.6634,-0.2793)
+ (-0.383,-0.1908)
+ (-0.3832,-0.4262)
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.1/Patches/OTYBallsSizePatch.xml b/1.1/Patches/OTYBallsSizePatch.xml
new file mode 100644
index 0000000..ada428c
--- /dev/null
+++ b/1.1/Patches/OTYBallsSizePatch.xml
@@ -0,0 +1,17 @@
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Genitals/Testicles/FeaturelessTesticles"]/hediffGraphics/Penis
+
+
+ Genitals/Testicles/balls_micro
+
+ Genitals/Testicles/balls_huge
+ Genitals/Testicles/balls_large
+ Genitals/Testicles/balls_average
+ Genitals/Testicles/balls_micro
+
+
+
+
+
\ No newline at end of file
diff --git a/1.1/Patches/OTYBreastsOffsetPatch.xml b/1.1/Patches/OTYBreastsOffsetPatch.xml
new file mode 100644
index 0000000..7709d50
--- /dev/null
+++ b/1.1/Patches/OTYBreastsOffsetPatch.xml
@@ -0,0 +1,38 @@
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessLeft"]/offsets
+
+
+
+
+ (-0.4042926,0.194)
+ (-0.4049383,0.20)
+ (-0.3277679,0.16)
+ (-0.42,0.22)
+ (-0.3084309,0.05)
+
+
+
+
+ (0.02787782,0.5)
+ (-0.0002926054,0.56)
+ (-0.05575563,0.46)
+ (0.006569132,0.537)
+ (0,0.41)
+
+
+
+
+ (-0.518,0.1913)
+ (-0.428,0.236)
+ (-0.62,0.21)
+ (-0.409,0.22)
+ (-0.6,0.093)
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.1/Patches/OTYVaginaOffsetPatch.xml b/1.1/Patches/OTYVaginaOffsetPatch.xml
new file mode 100644
index 0000000..3acd78b
--- /dev/null
+++ b/1.1/Patches/OTYVaginaOffsetPatch.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Genitals/FeaturelessCrotch"]/offsets
+
+
+
+
+ (-0.4198691,-0.2235)
+ (-0.4196,-0.267)
+ (-0.4199,-0.2834)
+ (-0.4199,-0.2239)
+ (-0.4199,-0.4363)
+
+
+
+
+ (-0.006430868,0.082)
+ (-0.018,0.0455)
+ (-0.006,0.0291)
+ (-0.01246174,0.087)
+ (-0.0064308,-0.1109)
+
+
+
+
+ (-0.49,-0.1901)
+ (-0.4854,-0.2469)
+ (-0.6634,-0.2793)
+ (-0.383,-0.1908)
+ (-0.3832,-0.4262)
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.1/Patches/OTYVaginaSizePatch.xml b/1.1/Patches/OTYVaginaSizePatch.xml
new file mode 100644
index 0000000..bde62d3
--- /dev/null
+++ b/1.1/Patches/OTYVaginaSizePatch.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Genitals/FeaturelessCrotch"]/hediffGraphics/Vagina
+
+
+ Genitals/vagina_micro
+
+ Genitals/vagina_oversized
+ Genitals/vagina_gaping
+ Genitals/vagina_lips
+ Genitals/vagina_common
+ Genitals/vagina_tight
+ Genitals/vagina_micro
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.1/Patches/PenisGraphicPatch-Humans.xml.old b/1.1/Patches/PenisGraphicPatch-Humans.xml.old
new file mode 100644
index 0000000..4e0ce17
--- /dev/null
+++ b/1.1/Patches/PenisGraphicPatch-Humans.xml.old
@@ -0,0 +1,20 @@
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li/hediffGraphics/Penis
+
+
+ Genitals/penis_micro
+
+ Genitals/penis_oversized
+ Genitals/penis_huge
+ Genitals/penis_large
+ Genitals/penis_average
+ Genitals/penis_small
+ Genitals/penis_micro
+
+
+
+
+
\ No newline at end of file
diff --git a/1.1/Patches/PenisPositionFix-Humans..xml.old b/1.1/Patches/PenisPositionFix-Humans..xml.old
new file mode 100644
index 0000000..f541cb6
--- /dev/null
+++ b/1.1/Patches/PenisPositionFix-Humans..xml.old
@@ -0,0 +1,39 @@
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart="Genitals"]/hediffGraphics/Penis/../../offsets
+
+
+
+
+ (-0.4264,0.2328)
+ (-0.42,0.17)
+ (-0.42,0.16)
+ (-0.42,0.226)
+ (-0.42,0.02)
+
+
+
+
+ (-0.002,0.56)
+ (-0.02,0.58)
+ (0.06,0.49)
+ (-0.01,0.557)
+ (0,0.43)
+
+
+
+
+ (-0.544,0.26)
+ (-0.54,0.184)
+ (-0.76,0.19)
+ (-0.428,0.24)
+ (-0.486,0.024)
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.1/Patches/PussyPatch-Humans.xml.old b/1.1/Patches/PussyPatch-Humans.xml.old
new file mode 100644
index 0000000..66f0d9c
--- /dev/null
+++ b/1.1/Patches/PussyPatch-Humans.xml.old
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart="Genitals"]/hediffGraphics/Vagina/../..
+
+ false
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart="Genitals"]/hediffGraphics/Vagina/../../layerOffset
+
+ -0.2896
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart="Genitals"]/hediffGraphics/Vagina/../../offsets
+
+
+
+
+ (-0.4264,0.2328)
+ (-0.4218505,0.17)
+ (-0.42,0.16)
+ (-0.42,0.226)
+ (-0.42,0.02)
+
+
+
+
+ (-0.008,0.577)
+ (-0.003,0.54)
+ (-0.01,0.55)
+ (-0.018,0.61)
+ (-0.004,0.39)
+
+
+
+
+ (-0.544,0.26)
+ (0,0.55)
+ (-0.76,0.19)
+ (-0.428,0.24)
+ (-0.486,0.024)
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.1/Patches/z_FemeleBB-Humans.xml.old b/1.1/Patches/z_FemeleBB-Humans.xml.old
new file mode 100644
index 0000000..7856754
--- /dev/null
+++ b/1.1/Patches/z_FemeleBB-Humans.xml.old
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li/hediffGraphics/Penis/../../offsets/south/bodyTypes
+
+ (-0.434,0.324)
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li/hediffGraphics/Penis/../../offsets/north/bodyTypes
+
+ (-0.06,0.47)
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li/hediffGraphics/Penis/../../offsets/east/bodyTypes
+
+ (-0.565,0.184)
+
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart="Genitals"]/hediffGraphics/Vagina/../../offsets/south/bodyTypes
+
+ (-0.430,0.302)
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart="Genitals"]/hediffGraphics/Vagina/../../offsets/north/bodyTypes
+
+ (-0.021,0.627)
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart="Genitals"]/hediffGraphics/Vagina/../../offsets/east/bodyTypes
+
+ (-0.54,0.184)
+
+
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Genitals/Pubes/Pubes"]/offsets/south/bodyTypes
+
+ (-0.430,0.368)
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Genitals/Pubes/Pubes"]/offsets/north/bodyTypes
+
+ (-0.06,0.47)
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Genitals/Pubes/Pubes"]/offsets/east/bodyTypes
+
+ (-0.54,0.184)
+
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessLeft"]/offsets/south/bodyTypes
+
+ (-0.4178,0.20)
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessLeft"]/offsets/north/bodyTypes
+
+ (0.019,0.56)
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessLeft"]/offsets/east/bodyTypes
+
+ (-0.428,0.236)
+
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessRight"]/offsets/south/bodyTypes
+
+ (-0.437,0.20)
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessRight"]/offsets/north/bodyTypes
+
+ (-0.02,0.56)
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessRight"]/offsets/east/bodyTypes
+
+ (-0.428,0.236)
+
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart = "Anus"]/offsets/south/bodyTypes
+
+ (-0.439,0.17)
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart = "Anus"]/offsets/north/bodyTypes
+
+ (-0.009,0.669)
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart = "Anus"]/offsets/east/bodyTypes
+
+ (-0.29,0.3)
+
+
+
+
+
\ No newline at end of file
diff --git a/1.2/Assemblies/RimNudeWorldHARAddon.dll b/1.2/Assemblies/RimNudeWorldHARAddon.dll
new file mode 100644
index 0000000..321026b
Binary files /dev/null and b/1.2/Assemblies/RimNudeWorldHARAddon.dll differ
diff --git a/1.2/Assemblies/RimNudeWorldHARAddon.pdb b/1.2/Assemblies/RimNudeWorldHARAddon.pdb
new file mode 100644
index 0000000..0e6aaf0
Binary files /dev/null and b/1.2/Assemblies/RimNudeWorldHARAddon.pdb differ
diff --git a/1.2/Patches/AnusPatch-Humans.xml b/1.2/Patches/AnusPatch-Humans.xml
new file mode 100644
index 0000000..2c17e2d
--- /dev/null
+++ b/1.2/Patches/AnusPatch-Humans.xml
@@ -0,0 +1,222 @@
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons
+
+
+ Anus/FeaturelessAnus
+ Anus
+ Transparent
+ true
+ -0.325
+ false
+
+ Legs
+
+
+
+
+
+ Anus/anus_micro
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+ Anus/anus_insect
+ Anus/anus_common
+ Anus/anus_micro
+ Anus/anus_hyd
+ Anus/anus_common
+
+ Anus/anus_common
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Anus/anus_common
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+
+ Anus/anus_common
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+
+ Anus/anus_common
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+
+
+
+ Anus/anus_common
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+
+ Anus/anus_common
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+
+ Anus/anus_common
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+
+ Anus/anus_common
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+
+ Anus/anus_common
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+
+ Anus/anus_common
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+
+ Anus/anus_common
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+
+
+
+ (-0.4264,0.2328)
+ (-0.439,0.17)
+ (-0.42,0.16)
+ (-0.42,0.226)
+ (-0.42,0.02)
+
+
+
+
+ (0.002,0.615)
+ (-0.01,0.59)
+ (-0.002,0.6)
+ (-0.008,0.632)
+ (0,0.427)
+
+
+
+
+ (-0.544,0.26)
+ (-0.29,0.3)
+ (-0.76,0.19)
+ (-0.428,0.24)
+ (-0.486,0.024)
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.2/Patches/BackBreastsPositionFix-Humans.xml.old b/1.2/Patches/BackBreastsPositionFix-Humans.xml.old
new file mode 100644
index 0000000..ae1efcd
--- /dev/null
+++ b/1.2/Patches/BackBreastsPositionFix-Humans.xml.old
@@ -0,0 +1,36 @@
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessRight"]/offsets/north
+
+
+
+ (-0.03,0.5)
+ (-0.02,0.56)
+ (-0.07,0.61)
+ (-0.01,0.537)
+ (0,0.41)
+
+
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessLeft"]/offsets/north
+
+
+
+ (-0.03,0.5)
+ (0.019,0.56)
+ (0.06,0.61)
+ (0.013,0.537)
+ (0,0.41)
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.2/Patches/BellyPatch-Humans.xml b/1.2/Patches/BellyPatch-Humans.xml
new file mode 100644
index 0000000..55815e6
--- /dev/null
+++ b/1.2/Patches/BellyPatch-Humans.xml
@@ -0,0 +1,77 @@
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[hediffGraphics/RJW_pregnancy]
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons
+
+
+ Belly/FeaturelessBelly
+ Torso
+ CutoutComplex
+ true
+ -0.289
+ false
+
+ Torso
+
+
+
+
+
+ Belly/FeaturelessBelly
+
+ Belly/BellyBulge_huge
+ Belly/BellyBulge_huge
+ Belly/BellyBulge_large
+ Belly/BellyBulge_medium
+ Belly/BellyBulge_small
+ Belly/FeaturelessBelly
+
+
+
+ Belly/FeaturelessBelly
+
+ Belly/BellyBulge_huge
+ Belly/BellyBulge_huge
+ Belly/BellyBulge_large
+ Belly/BellyBulge_medium
+ Belly/BellyBulge_small
+ Belly/FeaturelessBelly
+
+
+
+
+
+
+ (-0.42,0.20)
+ (-0.42,0.20)
+ (-0.42,0.22)
+ (-0.42,0.226)
+ (-0.42,0.0023)
+
+
+
+
+ (0.002,0.6)
+ (0.002,0.570)
+ (-0.002,0.6)
+ (-0.008,0.632)
+ (-0.002,0.6)
+
+
+
+
+ (-0.4264,0.2328)
+ (-0.42,0.20)
+ (-0.42,0.22)
+ (-0.42,0.226)
+ (-0.42,0.23)
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.2/Patches/BreastGraphicPatch-Humans.xml b/1.2/Patches/BreastGraphicPatch-Humans.xml
new file mode 100644
index 0000000..64f9a0c
--- /dev/null
+++ b/1.2/Patches/BreastGraphicPatch-Humans.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessLeft"]/hediffGraphics/Breasts
+
+
+ Breasts/breasts_micro_left
+
+ Breasts/breasts_backb_left
+ Breasts/breasts_oversized_left
+ Breasts/breasts_huge_left
+ Breasts/breasts_large_left
+ Breasts/breasts_average_left
+ Breasts/breasts_small_left
+ Breasts/breasts_micro_left
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessRight"]/hediffGraphics/Breasts
+
+
+ Breasts/breasts_micro_right
+
+ Breasts/breasts_backb_right
+ Breasts/breasts_oversized_right
+ Breasts/breasts_huge_right
+ Breasts/breasts_large_right
+ Breasts/breasts_average_right
+ Breasts/breasts_small_right
+ Breasts/breasts_micro_right
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.2/Patches/BreastsPositionFix-Humans.xml.old b/1.2/Patches/BreastsPositionFix-Humans.xml.old
new file mode 100644
index 0000000..080bf88
--- /dev/null
+++ b/1.2/Patches/BreastsPositionFix-Humans.xml.old
@@ -0,0 +1,76 @@
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessRight"]/offsets
+
+
+
+
+ (-0.456,0.194)
+ (-0.437,0.20)
+ (-0.565,0.16)
+ (-0.42,0.22)
+ (-0.5336,0.05)
+
+
+
+
+ (-0.03,0.5)
+ (-0.02,0.56)
+ (-0.07,0.61)
+ (-0.01,0.537)
+ (0,0.41)
+
+
+
+
+ (-0.518,0.1913)
+ (-0.428,0.236)
+ (-0.6521,0.21)
+ (-0.409,0.22)
+ (-0.48,0.5)
+
+
+
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessLeft"]/offsets
+
+
+
+
+ (-0.385,0.194)
+ (-0.4178,0.20)
+ (-0.279,0.16)
+ (-0.42,0.22)
+ (-0.302,0.05)
+
+
+
+
+ (-0.03,0.5)
+ (0.019,0.56)
+ (0.06,0.61)
+ (0.013,0.537)
+ (0,0.41)
+
+
+
+
+ (-0.518,0.1913)
+ (-0.428,0.236)
+ (-0.6521,0.21)
+ (-0.409,0.22)
+ (-0.6,0.093)
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.2/Patches/HumansAreAliensToo_FemaleAndMaleBodySeparationPatch.xml.old b/1.2/Patches/HumansAreAliensToo_FemaleAndMaleBodySeparationPatch.xml.old
new file mode 100644
index 0000000..7943245
--- /dev/null
+++ b/1.2/Patches/HumansAreAliensToo_FemaleAndMaleBodySeparationPatch.xml.old
@@ -0,0 +1,8 @@
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator
+
+ true
+
+
+
\ No newline at end of file
diff --git a/1.2/Patches/LayerOffsetFix-Humans..xml.old b/1.2/Patches/LayerOffsetFix-Humans..xml.old
new file mode 100644
index 0000000..469ef8f
--- /dev/null
+++ b/1.2/Patches/LayerOffsetFix-Humans..xml.old
@@ -0,0 +1,40 @@
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart="Genitals"]/hediffGraphics/Penis/../../layerOffset
+
+ -0.2882
+
+
+
+
+
+ Always
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Genitals/Pubes/Pubes"]
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Genitals/Pubes/Pubes"]/layerOffset
+
+ -0.2892
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessLeft"]/layerOffset
+
+
+ -0.280
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessRight"]/layerOffset
+
+ -0.280
+
+
+
+
+
\ No newline at end of file
diff --git a/1.2/Patches/OTYBallsOffsetPatch.xml b/1.2/Patches/OTYBallsOffsetPatch.xml
new file mode 100644
index 0000000..f45ada6
--- /dev/null
+++ b/1.2/Patches/OTYBallsOffsetPatch.xml
@@ -0,0 +1,38 @@
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Genitals/Testicles/FeaturelessTesticles"]/offsets
+
+
+
+
+ (-0.4263,-0.2235)
+ (-0.4196,-0.267)
+ (-0.4199,-0.2834)
+ (-0.4199,-0.2239)
+ (-0.4199,-0.4363)
+
+
+
+
+ (0,0.082)
+ (-0.01156913,0.0455)
+ (-0.006,0.0291)
+ (-0.006030868,0.087)
+ (0,-0.1109)
+
+
+
+
+ (-0.49,-0.1901)
+ (-0.4854,-0.2469)
+ (-0.6634,-0.2793)
+ (-0.383,-0.1908)
+ (-0.3832,-0.4262)
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.2/Patches/OTYBallsSizePatch.xml b/1.2/Patches/OTYBallsSizePatch.xml
new file mode 100644
index 0000000..ada428c
--- /dev/null
+++ b/1.2/Patches/OTYBallsSizePatch.xml
@@ -0,0 +1,17 @@
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Genitals/Testicles/FeaturelessTesticles"]/hediffGraphics/Penis
+
+
+ Genitals/Testicles/balls_micro
+
+ Genitals/Testicles/balls_huge
+ Genitals/Testicles/balls_large
+ Genitals/Testicles/balls_average
+ Genitals/Testicles/balls_micro
+
+
+
+
+
\ No newline at end of file
diff --git a/1.2/Patches/OTYBreastsOffsetPatch.xml b/1.2/Patches/OTYBreastsOffsetPatch.xml
new file mode 100644
index 0000000..7709d50
--- /dev/null
+++ b/1.2/Patches/OTYBreastsOffsetPatch.xml
@@ -0,0 +1,38 @@
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessLeft"]/offsets
+
+
+
+
+ (-0.4042926,0.194)
+ (-0.4049383,0.20)
+ (-0.3277679,0.16)
+ (-0.42,0.22)
+ (-0.3084309,0.05)
+
+
+
+
+ (0.02787782,0.5)
+ (-0.0002926054,0.56)
+ (-0.05575563,0.46)
+ (0.006569132,0.537)
+ (0,0.41)
+
+
+
+
+ (-0.518,0.1913)
+ (-0.428,0.236)
+ (-0.62,0.21)
+ (-0.409,0.22)
+ (-0.6,0.093)
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.2/Patches/OTYVaginaOffsetPatch.xml b/1.2/Patches/OTYVaginaOffsetPatch.xml
new file mode 100644
index 0000000..3acd78b
--- /dev/null
+++ b/1.2/Patches/OTYVaginaOffsetPatch.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Genitals/FeaturelessCrotch"]/offsets
+
+
+
+
+ (-0.4198691,-0.2235)
+ (-0.4196,-0.267)
+ (-0.4199,-0.2834)
+ (-0.4199,-0.2239)
+ (-0.4199,-0.4363)
+
+
+
+
+ (-0.006430868,0.082)
+ (-0.018,0.0455)
+ (-0.006,0.0291)
+ (-0.01246174,0.087)
+ (-0.0064308,-0.1109)
+
+
+
+
+ (-0.49,-0.1901)
+ (-0.4854,-0.2469)
+ (-0.6634,-0.2793)
+ (-0.383,-0.1908)
+ (-0.3832,-0.4262)
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.2/Patches/OTYVaginaSizePatch.xml b/1.2/Patches/OTYVaginaSizePatch.xml
new file mode 100644
index 0000000..bde62d3
--- /dev/null
+++ b/1.2/Patches/OTYVaginaSizePatch.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Genitals/FeaturelessCrotch"]/hediffGraphics/Vagina
+
+
+ Genitals/vagina_micro
+
+ Genitals/vagina_oversized
+ Genitals/vagina_gaping
+ Genitals/vagina_lips
+ Genitals/vagina_common
+ Genitals/vagina_tight
+ Genitals/vagina_micro
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.2/Patches/PenisGraphicPatch-Humans.xml.old b/1.2/Patches/PenisGraphicPatch-Humans.xml.old
new file mode 100644
index 0000000..4e0ce17
--- /dev/null
+++ b/1.2/Patches/PenisGraphicPatch-Humans.xml.old
@@ -0,0 +1,20 @@
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li/hediffGraphics/Penis
+
+
+ Genitals/penis_micro
+
+ Genitals/penis_oversized
+ Genitals/penis_huge
+ Genitals/penis_large
+ Genitals/penis_average
+ Genitals/penis_small
+ Genitals/penis_micro
+
+
+
+
+
\ No newline at end of file
diff --git a/1.2/Patches/PenisPositionFix-Humans..xml.old b/1.2/Patches/PenisPositionFix-Humans..xml.old
new file mode 100644
index 0000000..f541cb6
--- /dev/null
+++ b/1.2/Patches/PenisPositionFix-Humans..xml.old
@@ -0,0 +1,39 @@
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart="Genitals"]/hediffGraphics/Penis/../../offsets
+
+
+
+
+ (-0.4264,0.2328)
+ (-0.42,0.17)
+ (-0.42,0.16)
+ (-0.42,0.226)
+ (-0.42,0.02)
+
+
+
+
+ (-0.002,0.56)
+ (-0.02,0.58)
+ (0.06,0.49)
+ (-0.01,0.557)
+ (0,0.43)
+
+
+
+
+ (-0.544,0.26)
+ (-0.54,0.184)
+ (-0.76,0.19)
+ (-0.428,0.24)
+ (-0.486,0.024)
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.2/Patches/PussyPatch-Humans.xml.old b/1.2/Patches/PussyPatch-Humans.xml.old
new file mode 100644
index 0000000..66f0d9c
--- /dev/null
+++ b/1.2/Patches/PussyPatch-Humans.xml.old
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart="Genitals"]/hediffGraphics/Vagina/../..
+
+ false
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart="Genitals"]/hediffGraphics/Vagina/../../layerOffset
+
+ -0.2896
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart="Genitals"]/hediffGraphics/Vagina/../../offsets
+
+
+
+
+ (-0.4264,0.2328)
+ (-0.4218505,0.17)
+ (-0.42,0.16)
+ (-0.42,0.226)
+ (-0.42,0.02)
+
+
+
+
+ (-0.008,0.577)
+ (-0.003,0.54)
+ (-0.01,0.55)
+ (-0.018,0.61)
+ (-0.004,0.39)
+
+
+
+
+ (-0.544,0.26)
+ (0,0.55)
+ (-0.76,0.19)
+ (-0.428,0.24)
+ (-0.486,0.024)
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.2/Patches/z_FemeleBB-Humans.xml.old b/1.2/Patches/z_FemeleBB-Humans.xml.old
new file mode 100644
index 0000000..7856754
--- /dev/null
+++ b/1.2/Patches/z_FemeleBB-Humans.xml.old
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li/hediffGraphics/Penis/../../offsets/south/bodyTypes
+
+ (-0.434,0.324)
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li/hediffGraphics/Penis/../../offsets/north/bodyTypes
+
+ (-0.06,0.47)
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li/hediffGraphics/Penis/../../offsets/east/bodyTypes
+
+ (-0.565,0.184)
+
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart="Genitals"]/hediffGraphics/Vagina/../../offsets/south/bodyTypes
+
+ (-0.430,0.302)
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart="Genitals"]/hediffGraphics/Vagina/../../offsets/north/bodyTypes
+
+ (-0.021,0.627)
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart="Genitals"]/hediffGraphics/Vagina/../../offsets/east/bodyTypes
+
+ (-0.54,0.184)
+
+
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Genitals/Pubes/Pubes"]/offsets/south/bodyTypes
+
+ (-0.430,0.368)
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Genitals/Pubes/Pubes"]/offsets/north/bodyTypes
+
+ (-0.06,0.47)
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Genitals/Pubes/Pubes"]/offsets/east/bodyTypes
+
+ (-0.54,0.184)
+
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessLeft"]/offsets/south/bodyTypes
+
+ (-0.4178,0.20)
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessLeft"]/offsets/north/bodyTypes
+
+ (0.019,0.56)
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessLeft"]/offsets/east/bodyTypes
+
+ (-0.428,0.236)
+
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessRight"]/offsets/south/bodyTypes
+
+ (-0.437,0.20)
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessRight"]/offsets/north/bodyTypes
+
+ (-0.02,0.56)
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessRight"]/offsets/east/bodyTypes
+
+ (-0.428,0.236)
+
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart = "Anus"]/offsets/south/bodyTypes
+
+ (-0.439,0.17)
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart = "Anus"]/offsets/north/bodyTypes
+
+ (-0.009,0.669)
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[bodyPart = "Anus"]/offsets/east/bodyTypes
+
+ (-0.29,0.3)
+
+
+
+
+
\ No newline at end of file
diff --git a/1.3/Assemblies/RimNudeWorldHARAddon.dll b/1.3/Assemblies/RimNudeWorldHARAddon.dll
new file mode 100644
index 0000000..693cf58
Binary files /dev/null and b/1.3/Assemblies/RimNudeWorldHARAddon.dll differ
diff --git a/1.3/Assemblies/RimNudeWorldHARAddon.pdb b/1.3/Assemblies/RimNudeWorldHARAddon.pdb
new file mode 100644
index 0000000..1a4c03e
Binary files /dev/null and b/1.3/Assemblies/RimNudeWorldHARAddon.pdb differ
diff --git a/1.3/Patches/AnusPatch-Humans.xml b/1.3/Patches/AnusPatch-Humans.xml
new file mode 100644
index 0000000..afa303f
--- /dev/null
+++ b/1.3/Patches/AnusPatch-Humans.xml
@@ -0,0 +1,226 @@
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons
+
+
+ Anus/FeaturelessAnus
+ Anus
+ Transparent
+ true
+ false
+ Tail
+ false
+
+ Legs
+
+
+
+
+
+ Anus/anus_micro
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+ Anus/anus_insect
+ Anus/anus_common
+ Anus/anus_micro
+ Anus/anus_hyd
+ Anus/anus_common
+
+ Anus/anus_common
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Anus/anus_common
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+
+ Anus/anus_common
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+
+ Anus/anus_common
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+
+
+
+ Anus/anus_common
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+
+ Anus/anus_common
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+
+ Anus/anus_common
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+
+ Anus/anus_common
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+
+ Anus/anus_common
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+
+ Anus/anus_common
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+
+ Anus/anus_common
+
+ Anus/anus_oversized
+ Anus/anus_gaping
+ Anus/anus_lips
+ Anus/anus_common
+ Anus/anus_tight
+ Anus/anus_micro
+
+
+
+
+
+ -0.325
+
+ (-0.4264,0.2328)
+ (-0.439,0.17)
+ (-0.42,0.16)
+ (-0.42,0.226)
+ (-0.42,0.02)
+
+
+
+ -0.325
+
+ (0.002,0.615)
+ (-0.01,0.59)
+ (-0.002,0.6)
+ (-0.008,0.632)
+ (0,0.427)
+
+
+
+ -0.325
+
+ (-0.544,0.26)
+ (-0.29,0.3)
+ (-0.76,0.19)
+ (-0.428,0.24)
+ (-0.486,0.024)
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.3/Patches/BellyPatch-Humans.xml b/1.3/Patches/BellyPatch-Humans.xml
new file mode 100644
index 0000000..e41584f
--- /dev/null
+++ b/1.3/Patches/BellyPatch-Humans.xml
@@ -0,0 +1,81 @@
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[hediffGraphics/RJW_pregnancy]
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[hediffGraphics/CatVagina]
+
+
+ Belly/FeaturelessBelly
+ Torso
+ CutoutComplex
+ true
+ false
+ Tail
+ false
+
+ Torso
+
+
+
+
+
+ Belly/FeaturelessBelly
+
+ Belly/BellyBulge_huge
+ Belly/BellyBulge_huge
+ Belly/BellyBulge_large
+ Belly/BellyBulge_medium
+ Belly/BellyBulge_small
+ Belly/FeaturelessBelly
+
+
+
+ Belly/FeaturelessBelly
+
+ Belly/BellyBulge_huge
+ Belly/BellyBulge_huge
+ Belly/BellyBulge_large
+ Belly/BellyBulge_medium
+ Belly/BellyBulge_small
+ Belly/FeaturelessBelly
+
+
+
+
+
+ -0.289
+
+ (-0.42,0.20)
+ (-0.42,0.20)
+ (-0.42,0.22)
+ (-0.42,0.226)
+ (-0.42,0.0023)
+
+
+
+ -0.289
+
+ (0.002,0.6)
+ (0.002,0.570)
+ (-0.002,0.6)
+ (-0.008,0.632)
+ (-0.002,0.6)
+
+
+
+ -0.289
+
+ (-0.4264,0.2328)
+ (-0.42,0.20)
+ (-0.42,0.22)
+ (-0.42,0.226)
+ (-0.42,0.23)
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.3/Patches/BreastGraphicPatch-Humans.xml b/1.3/Patches/BreastGraphicPatch-Humans.xml
new file mode 100644
index 0000000..0e78eaf
--- /dev/null
+++ b/1.3/Patches/BreastGraphicPatch-Humans.xml
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessLeft"]/hediffGraphics/Breasts
+
+
+ Breasts/NatOTY/breasts_micro_left
+
+ Breasts/NatOTY/breasts_backb_left
+ Breasts/NatOTY/breasts_oversized_left
+ Breasts/NatOTY/breasts_huge_left
+ Breasts/NatOTY/breasts_large_left
+ Breasts/NatOTY/breasts_average_left
+ Breasts/NatOTY/breasts_small_left
+ Breasts/NatOTY/breasts_micro_left
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessRight"]/hediffGraphics/Breasts
+
+
+ Breasts/NatOTY/breasts_micro_right
+
+ Breasts/NatOTY/breasts_backb_right
+ Breasts/NatOTY/breasts_oversized_right
+ Breasts/NatOTY/breasts_huge_right
+ Breasts/NatOTY/breasts_large_right
+ Breasts/NatOTY/breasts_average_right
+ Breasts/NatOTY/breasts_small_right
+ Breasts/NatOTY/breasts_micro_right
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessLeft"]/hediffGraphics/HydraulicBreasts
+
+
+ Breasts/HydOTY/breasts_hyd_micro_left
+
+ Breasts/HydOTY/breasts_hyd_oversized_left
+ Breasts/HydOTY/breasts_hyd_huge_left
+ Breasts/HydOTY/breasts_hyd_large_left
+ Breasts/HydOTY/breasts_hyd_left
+ Breasts/HydOTY/breasts_hyd_small_left
+ Breasts/HydOTY/breasts_hyd_micro_left
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessRight"]/hediffGraphics/HydraulicBreasts
+
+
+ Breasts/HydOTY/breasts_hyd_micro_right
+
+ Breasts/HydOTY/breasts_hyd_oversized_right
+ Breasts/HydOTY/breasts_hyd_huge_right
+ Breasts/HydOTY/breasts_hyd_large_right
+ Breasts/HydOTY/breasts_hyd_right
+ Breasts/HydOTY/breasts_hyd_small_right
+ Breasts/HydOTY/breasts_hyd_micro_right
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessLeft"]/hediffGraphics/BionicBreasts
+
+
+ Breasts/BioOTY/breasts_bio_micro_left
+
+ Breasts/BioOTY/breasts_bio_oversized_left
+ Breasts/BioOTY/breasts_bio_huge_left
+ Breasts/BioOTY/breasts_bio_large_left
+ Breasts/BioOTY/breasts_bio_left
+ Breasts/BioOTY/breasts_bio_small_left
+ Breasts/BioOTY/breasts_bio_micro_left
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessRight"]/hediffGraphics/BionicBreasts
+
+
+ Breasts/BioOTY/breasts_bio_micro_right
+
+ Breasts/BioOTY/breasts_bio_oversized_right
+ Breasts/BioOTY/breasts_bio_huge_right
+ Breasts/BioOTY/breasts_bio_large_right
+ Breasts/BioOTY/breasts_bio_right
+ Breasts/BioOTY/breasts_bio_small_right
+ Breasts/BioOTY/breasts_bio_micro_right
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessLeft"]/hediffGraphics/ArchotechBreasts
+
+
+ Breasts/ArcOTY/breasts_arc_micro_left
+
+ Breasts/ArcOTY/breasts_arc_oversized_left
+ Breasts/ArcOTY/breasts_arc_huge_left
+ Breasts/ArcOTY/breasts_arc_large_left
+ Breasts/ArcOTY/breasts_arc_left
+ Breasts/ArcOTY/breasts_arc_small_left
+ Breasts/ArcOTY/breasts_arc_micro_left
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessRight"]/hediffGraphics/ArchotechBreasts
+
+
+ Breasts/ArcOTY/breasts_arc_micro_right
+
+ Breasts/ArcOTY/breasts_arc_oversized_right
+ Breasts/ArcOTY/breasts_arc_huge_right
+ Breasts/ArcOTY/breasts_arc_large_right
+ Breasts/ArcOTY/breasts_arc_right
+ Breasts/ArcOTY/breasts_arc_small_right
+ Breasts/ArcOTY/breasts_arc_micro_right
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.3/Patches/OTYBallsOffsetPatch.xml b/1.3/Patches/OTYBallsOffsetPatch.xml
new file mode 100644
index 0000000..8603abe
--- /dev/null
+++ b/1.3/Patches/OTYBallsOffsetPatch.xml
@@ -0,0 +1,41 @@
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Genitals/Testicles/FeaturelessTesticles"]/offsets
+
+
+
+ -0.2764
+
+ (-0.4263,-0.2235)
+ (-0.4196,-0.267)
+ (-0.4199,-0.2834)
+ (-0.4199,-0.2239)
+ (-0.4199,-0.4363)
+
+
+
+ -0.2764
+
+ (0,0.082)
+ (-0.01156913,0.0455)
+ (-0.006,0.0291)
+ (-0.006030868,0.087)
+ (0,-0.1109)
+
+
+
+ -0.2764
+
+ (-0.49,-0.1901)
+ (-0.4854,-0.2469)
+ (-0.6634,-0.2793)
+ (-0.383,-0.1908)
+ (-0.3832,-0.4262)
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.3/Patches/OTYBallsSizePatch.xml b/1.3/Patches/OTYBallsSizePatch.xml
new file mode 100644
index 0000000..ada428c
--- /dev/null
+++ b/1.3/Patches/OTYBallsSizePatch.xml
@@ -0,0 +1,17 @@
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Genitals/Testicles/FeaturelessTesticles"]/hediffGraphics/Penis
+
+
+ Genitals/Testicles/balls_micro
+
+ Genitals/Testicles/balls_huge
+ Genitals/Testicles/balls_large
+ Genitals/Testicles/balls_average
+ Genitals/Testicles/balls_micro
+
+
+
+
+
\ No newline at end of file
diff --git a/1.3/Patches/OTYBreastsOffsetPatch.xml b/1.3/Patches/OTYBreastsOffsetPatch.xml
new file mode 100644
index 0000000..dc18a0a
--- /dev/null
+++ b/1.3/Patches/OTYBreastsOffsetPatch.xml
@@ -0,0 +1,41 @@
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Breasts/FeaturelessLeft"]/offsets
+
+
+
+ -0.2765
+
+ (-0.4042926,0.194)
+ (-0.4049383,0.20)
+ (-0.3277679,0.16)
+ (-0.42,0.22)
+ (-0.3084309,0.05)
+
+
+
+ -0.2765
+
+ (0.02787782,0.5)
+ (-0.0002926054,0.56)
+ (-0.05575563,0.46)
+ (0.006569132,0.537)
+ (0,0.41)
+
+
+
+ -0.2765
+
+ (-0.518,0.1913)
+ (-0.428,0.236)
+ (-0.62,0.21)
+ (-0.409,0.22)
+ (-0.6,0.093)
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.3/Patches/OTYPenisOffsetPatch.xml b/1.3/Patches/OTYPenisOffsetPatch.xml
new file mode 100644
index 0000000..8b14a65
--- /dev/null
+++ b/1.3/Patches/OTYPenisOffsetPatch.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[hediffGraphics/Penis][path="Genitals/FeaturelessCrotch"]/offsets/east/layerOffset
+
+ -0.291
+
+
+
+
\ No newline at end of file
diff --git a/1.3/Patches/OTYVaginaOffsetPatch.xml b/1.3/Patches/OTYVaginaOffsetPatch.xml
new file mode 100644
index 0000000..d8d88bd
--- /dev/null
+++ b/1.3/Patches/OTYVaginaOffsetPatch.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[hediffGraphics/Vagina]/offsets
+
+
+
+ -0.289
+
+ (-0.4198691,-0.2235)
+ (-0.4196,-0.267)
+ (-0.4199,-0.2834)
+ (-0.4199,-0.2239)
+ (-0.4199,-0.4363)
+
+
+
+ -0.289
+
+ (-0.006430868,0.082)
+ (-0.018,0.0455)
+ (-0.006,0.0291)
+ (-0.01246174,0.087)
+ (-0.0064308,-0.1109)
+
+
+
+ -0.289
+
+ (-0.49,-0.1901)
+ (-0.4854,-0.2469)
+ (-0.6634,-0.2793)
+ (-0.383,-0.1908)
+ (-0.3832,-0.4262)
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.3/Patches/OTYVaginaSizePatch.xml b/1.3/Patches/OTYVaginaSizePatch.xml
new file mode 100644
index 0000000..bde62d3
--- /dev/null
+++ b/1.3/Patches/OTYVaginaSizePatch.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+ Defs/ThingDef[defName="Human"]/alienRace/generalSettings/alienPartGenerator/bodyAddons/li[path="Genitals/FeaturelessCrotch"]/hediffGraphics/Vagina
+
+
+ Genitals/vagina_micro
+
+ Genitals/vagina_oversized
+ Genitals/vagina_gaping
+ Genitals/vagina_lips
+ Genitals/vagina_common
+ Genitals/vagina_tight
+ Genitals/vagina_micro
+
+
+
+
+
+
\ No newline at end of file
diff --git a/About/About.xml b/About/About.xml
new file mode 100644
index 0000000..5ce11d3
--- /dev/null
+++ b/About/About.xml
@@ -0,0 +1,68 @@
+
+
+ OTY_NUDE Unofficial Update
+ OTYOTY, Ashen, Tory187, Ed86
+
+
+ 1.1
+ 1.2
+ 1.3
+
+ OTYOTY.NudePatchForRimNudeWorld.UnofficialUpdate
+ version 0.65 Unofficial Update
+
+if you want to retexture bukkake, load this mod after RJW.
+
+Harmony needed
+AlienRaces needed
+RimNudeWorld needed
+
+Changelog:
+.65
+Tory187:
+Enabled OTY's Hydaulic, Bionic, Archotech breasts graphics
+Hopefully OTY textures are only applying to humans now
+
+nugerumon:
+Fixed static constructor error for 4.8.x+ RJW
+
+.64
+Tory187:
+Adjusted patches for better render order and made sure they only targeted humans
+Added comments to some patches
+
+.63
+Tory187:
+Added 1.3 tag
+Added LoadFolders
+Recompiled .dll for 1.3 just in case
+Updated offsets for 1.3
+Reverted back to using Rimnudes's penis textures
+Made east textures for penises render behind body
+
+.59-.62
+Ashen:
+Archotech, Bionic, and Hydraulic breasts have had their textures edited to fit OTY's textures better.
+Unused genital textures have been aligned properly and enabled.
+Genital/Anus/Breast textures should scale properly with RJW's new set points.
+Offsets for genitals, testicles, and breasts have been fixed for all body types.
+
+Tory187:
+Merged Ashen's edits into mod
+Updated Severity scales
+Added 1.2 tag
+Patched out Rimnude's bellys
+Fixed a couple errors (duplicate addons)
+
+Ed86:
+Belly support for bestiality and other rjw pregnancies
+
+Chaeren:
+Fixed pubes
+Altered penis textures to appear behind leg for futas on east/west
+
+
+ brrainz.harmony
+ shauaputa.rimnudeworld
+
+
\ No newline at end of file
diff --git a/About/Manifest.xml b/About/Manifest.xml
new file mode 100644
index 0000000..008adb2
--- /dev/null
+++ b/About/Manifest.xml
@@ -0,0 +1,4 @@
+
+
+ 0.65.2
+
\ No newline at end of file
diff --git a/Defs/HediffDefs/Hediff_BellyBulge.xml b/Defs/HediffDefs/Hediff_BellyBulge.xml
new file mode 100644
index 0000000..fcc3a6e
--- /dev/null
+++ b/Defs/HediffDefs/Hediff_BellyBulge.xml
@@ -0,0 +1,15 @@
+
+
+
+
+ RNW_BellyBulge
+ Belly Bulge
+ BellyBulge heddiff for graphic. calculated from cumflation and pregnancy
+ (1, 0.41, 0.81)
+ 0.002
+ false
+ RimNudeWorldHARAddon.BellyBulge
+
+
+
+
\ No newline at end of file
diff --git a/README.md b/README.md
deleted file mode 100644
index d136228..0000000
--- a/README.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# OTY-Nude Unofficial
-
diff --git a/Textures/Anus/FeaturelessAnus_east.png b/Textures/Anus/FeaturelessAnus_east.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Anus/FeaturelessAnus_east.png differ
diff --git a/Textures/Anus/FeaturelessAnus_north.png b/Textures/Anus/FeaturelessAnus_north.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Anus/FeaturelessAnus_north.png differ
diff --git a/Textures/Anus/anus_common_east.png b/Textures/Anus/anus_common_east.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Anus/anus_common_east.png differ
diff --git a/Textures/Anus/anus_common_north.png b/Textures/Anus/anus_common_north.png
new file mode 100644
index 0000000..72b50cb
Binary files /dev/null and b/Textures/Anus/anus_common_north.png differ
diff --git a/Textures/Anus/anus_common_south.png b/Textures/Anus/anus_common_south.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Anus/anus_common_south.png differ
diff --git a/Textures/Anus/anus_gaping_east.png b/Textures/Anus/anus_gaping_east.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Anus/anus_gaping_east.png differ
diff --git a/Textures/Anus/anus_gaping_north.png b/Textures/Anus/anus_gaping_north.png
new file mode 100644
index 0000000..802076e
Binary files /dev/null and b/Textures/Anus/anus_gaping_north.png differ
diff --git a/Textures/Anus/anus_gaping_south.png b/Textures/Anus/anus_gaping_south.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Anus/anus_gaping_south.png differ
diff --git a/Textures/Anus/anus_hyd_east.png b/Textures/Anus/anus_hyd_east.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Anus/anus_hyd_east.png differ
diff --git a/Textures/Anus/anus_hyd_north.png b/Textures/Anus/anus_hyd_north.png
new file mode 100644
index 0000000..064ffbc
Binary files /dev/null and b/Textures/Anus/anus_hyd_north.png differ
diff --git a/Textures/Anus/anus_hyd_northm.png b/Textures/Anus/anus_hyd_northm.png
new file mode 100644
index 0000000..a8b0812
Binary files /dev/null and b/Textures/Anus/anus_hyd_northm.png differ
diff --git a/Textures/Anus/anus_hyd_south.png b/Textures/Anus/anus_hyd_south.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Anus/anus_hyd_south.png differ
diff --git a/Textures/Anus/anus_insect_east.png b/Textures/Anus/anus_insect_east.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Anus/anus_insect_east.png differ
diff --git a/Textures/Anus/anus_insect_north.png b/Textures/Anus/anus_insect_north.png
new file mode 100644
index 0000000..1166b34
Binary files /dev/null and b/Textures/Anus/anus_insect_north.png differ
diff --git a/Textures/Anus/anus_insect_south.png b/Textures/Anus/anus_insect_south.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Anus/anus_insect_south.png differ
diff --git a/Textures/Anus/anus_lips_east.png b/Textures/Anus/anus_lips_east.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Anus/anus_lips_east.png differ
diff --git a/Textures/Anus/anus_lips_north.png b/Textures/Anus/anus_lips_north.png
new file mode 100644
index 0000000..f1a4b1c
Binary files /dev/null and b/Textures/Anus/anus_lips_north.png differ
diff --git a/Textures/Anus/anus_lips_south.png b/Textures/Anus/anus_lips_south.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Anus/anus_lips_south.png differ
diff --git a/Textures/Anus/anus_micro_east.png b/Textures/Anus/anus_micro_east.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Anus/anus_micro_east.png differ
diff --git a/Textures/Anus/anus_micro_north.png b/Textures/Anus/anus_micro_north.png
new file mode 100644
index 0000000..93180aa
Binary files /dev/null and b/Textures/Anus/anus_micro_north.png differ
diff --git a/Textures/Anus/anus_oversized_east.png b/Textures/Anus/anus_oversized_east.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Anus/anus_oversized_east.png differ
diff --git a/Textures/Anus/anus_oversized_north.png b/Textures/Anus/anus_oversized_north.png
new file mode 100644
index 0000000..a38eeef
Binary files /dev/null and b/Textures/Anus/anus_oversized_north.png differ
diff --git a/Textures/Anus/anus_oversized_north.sai2 b/Textures/Anus/anus_oversized_north.sai2
new file mode 100644
index 0000000..befaf91
Binary files /dev/null and b/Textures/Anus/anus_oversized_north.sai2 differ
diff --git a/Textures/Anus/anus_oversized_south.png b/Textures/Anus/anus_oversized_south.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Anus/anus_oversized_south.png differ
diff --git a/Textures/Anus/anus_tight_east.png b/Textures/Anus/anus_tight_east.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Anus/anus_tight_east.png differ
diff --git a/Textures/Anus/anus_tight_north.png b/Textures/Anus/anus_tight_north.png
new file mode 100644
index 0000000..0b79f1b
Binary files /dev/null and b/Textures/Anus/anus_tight_north.png differ
diff --git a/Textures/Anus/anus_tight_south.png b/Textures/Anus/anus_tight_south.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Anus/anus_tight_south.png differ
diff --git a/Textures/Anus/wip/anus_arco_common_east.png b/Textures/Anus/wip/anus_arco_common_east.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Anus/wip/anus_arco_common_east.png differ
diff --git a/Textures/Anus/wip/anus_arco_common_north.png b/Textures/Anus/wip/anus_arco_common_north.png
new file mode 100644
index 0000000..4436081
Binary files /dev/null and b/Textures/Anus/wip/anus_arco_common_north.png differ
diff --git a/Textures/Anus/wip/anus_arco_common_south.png b/Textures/Anus/wip/anus_arco_common_south.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Anus/wip/anus_arco_common_south.png differ
diff --git a/Textures/Anus/wip/anus_arco_gaping_east.png b/Textures/Anus/wip/anus_arco_gaping_east.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Anus/wip/anus_arco_gaping_east.png differ
diff --git a/Textures/Anus/wip/anus_arco_gaping_north.png b/Textures/Anus/wip/anus_arco_gaping_north.png
new file mode 100644
index 0000000..9e40285
Binary files /dev/null and b/Textures/Anus/wip/anus_arco_gaping_north.png differ
diff --git a/Textures/Anus/wip/anus_arco_gaping_south.png b/Textures/Anus/wip/anus_arco_gaping_south.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Anus/wip/anus_arco_gaping_south.png differ
diff --git a/Textures/Anus/wip/anus_arco_lips_east.png b/Textures/Anus/wip/anus_arco_lips_east.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Anus/wip/anus_arco_lips_east.png differ
diff --git a/Textures/Anus/wip/anus_arco_lips_north.png b/Textures/Anus/wip/anus_arco_lips_north.png
new file mode 100644
index 0000000..58dcc90
Binary files /dev/null and b/Textures/Anus/wip/anus_arco_lips_north.png differ
diff --git a/Textures/Anus/wip/anus_arco_lips_south.png b/Textures/Anus/wip/anus_arco_lips_south.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Anus/wip/anus_arco_lips_south.png differ
diff --git a/Textures/Anus/wip/anus_arco_micro_east.png b/Textures/Anus/wip/anus_arco_micro_east.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Anus/wip/anus_arco_micro_east.png differ
diff --git a/Textures/Anus/wip/anus_arco_micro_north.png b/Textures/Anus/wip/anus_arco_micro_north.png
new file mode 100644
index 0000000..51f6b15
Binary files /dev/null and b/Textures/Anus/wip/anus_arco_micro_north.png differ
diff --git a/Textures/Anus/wip/anus_arco_micro_south.png b/Textures/Anus/wip/anus_arco_micro_south.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Anus/wip/anus_arco_micro_south.png differ
diff --git a/Textures/Anus/wip/anus_arco_oversized_east.png b/Textures/Anus/wip/anus_arco_oversized_east.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Anus/wip/anus_arco_oversized_east.png differ
diff --git a/Textures/Anus/wip/anus_arco_oversized_north.png b/Textures/Anus/wip/anus_arco_oversized_north.png
new file mode 100644
index 0000000..048cbd6
Binary files /dev/null and b/Textures/Anus/wip/anus_arco_oversized_north.png differ
diff --git a/Textures/Anus/wip/anus_arco_oversized_south.png b/Textures/Anus/wip/anus_arco_oversized_south.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Anus/wip/anus_arco_oversized_south.png differ
diff --git a/Textures/Anus/wip/anus_arco_south.png b/Textures/Anus/wip/anus_arco_south.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Anus/wip/anus_arco_south.png differ
diff --git a/Textures/Anus/wip/anus_arco_tight_north.png b/Textures/Anus/wip/anus_arco_tight_north.png
new file mode 100644
index 0000000..8961b54
Binary files /dev/null and b/Textures/Anus/wip/anus_arco_tight_north.png differ
diff --git a/Textures/Anus/wip/anus_arco_tight_south.png b/Textures/Anus/wip/anus_arco_tight_south.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Anus/wip/anus_arco_tight_south.png differ
diff --git a/Textures/Anus/wip/anus_bio_east.png b/Textures/Anus/wip/anus_bio_east.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Anus/wip/anus_bio_east.png differ
diff --git a/Textures/Anus/wip/anus_bio_north.png b/Textures/Anus/wip/anus_bio_north.png
new file mode 100644
index 0000000..20dad92
Binary files /dev/null and b/Textures/Anus/wip/anus_bio_north.png differ
diff --git a/Textures/Anus/wip/anus_bio_south.png b/Textures/Anus/wip/anus_bio_south.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Anus/wip/anus_bio_south.png differ
diff --git a/Textures/Belly/BellyBulge_huge_Fat_east.png b/Textures/Belly/BellyBulge_huge_Fat_east.png
new file mode 100644
index 0000000..0588df8
Binary files /dev/null and b/Textures/Belly/BellyBulge_huge_Fat_east.png differ
diff --git a/Textures/Belly/BellyBulge_huge_Fat_eastm.png b/Textures/Belly/BellyBulge_huge_Fat_eastm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_huge_Fat_eastm.png differ
diff --git a/Textures/Belly/BellyBulge_huge_Fat_north.png b/Textures/Belly/BellyBulge_huge_Fat_north.png
new file mode 100644
index 0000000..273e76d
Binary files /dev/null and b/Textures/Belly/BellyBulge_huge_Fat_north.png differ
diff --git a/Textures/Belly/BellyBulge_huge_Fat_south.png b/Textures/Belly/BellyBulge_huge_Fat_south.png
new file mode 100644
index 0000000..273e76d
Binary files /dev/null and b/Textures/Belly/BellyBulge_huge_Fat_south.png differ
diff --git a/Textures/Belly/BellyBulge_huge_Fat_southm.png b/Textures/Belly/BellyBulge_huge_Fat_southm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_huge_Fat_southm.png differ
diff --git a/Textures/Belly/BellyBulge_huge_Female_east.png b/Textures/Belly/BellyBulge_huge_Female_east.png
new file mode 100644
index 0000000..65b4183
Binary files /dev/null and b/Textures/Belly/BellyBulge_huge_Female_east.png differ
diff --git a/Textures/Belly/BellyBulge_huge_Female_eastm.png b/Textures/Belly/BellyBulge_huge_Female_eastm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_huge_Female_eastm.png differ
diff --git a/Textures/Belly/BellyBulge_huge_Female_north.png b/Textures/Belly/BellyBulge_huge_Female_north.png
new file mode 100644
index 0000000..f8093af
Binary files /dev/null and b/Textures/Belly/BellyBulge_huge_Female_north.png differ
diff --git a/Textures/Belly/BellyBulge_huge_Female_south.png b/Textures/Belly/BellyBulge_huge_Female_south.png
new file mode 100644
index 0000000..f8093af
Binary files /dev/null and b/Textures/Belly/BellyBulge_huge_Female_south.png differ
diff --git a/Textures/Belly/BellyBulge_huge_Female_southm.png b/Textures/Belly/BellyBulge_huge_Female_southm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_huge_Female_southm.png differ
diff --git a/Textures/Belly/BellyBulge_huge_Hulk_east.png b/Textures/Belly/BellyBulge_huge_Hulk_east.png
new file mode 100644
index 0000000..802b42d
Binary files /dev/null and b/Textures/Belly/BellyBulge_huge_Hulk_east.png differ
diff --git a/Textures/Belly/BellyBulge_huge_Hulk_eastm.png b/Textures/Belly/BellyBulge_huge_Hulk_eastm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_huge_Hulk_eastm.png differ
diff --git a/Textures/Belly/BellyBulge_huge_Hulk_north.png b/Textures/Belly/BellyBulge_huge_Hulk_north.png
new file mode 100644
index 0000000..3239b4d
Binary files /dev/null and b/Textures/Belly/BellyBulge_huge_Hulk_north.png differ
diff --git a/Textures/Belly/BellyBulge_huge_Hulk_south.png b/Textures/Belly/BellyBulge_huge_Hulk_south.png
new file mode 100644
index 0000000..3239b4d
Binary files /dev/null and b/Textures/Belly/BellyBulge_huge_Hulk_south.png differ
diff --git a/Textures/Belly/BellyBulge_huge_Hulk_southm.png b/Textures/Belly/BellyBulge_huge_Hulk_southm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_huge_Hulk_southm.png differ
diff --git a/Textures/Belly/BellyBulge_huge_Male_east.png b/Textures/Belly/BellyBulge_huge_Male_east.png
new file mode 100644
index 0000000..934e029
Binary files /dev/null and b/Textures/Belly/BellyBulge_huge_Male_east.png differ
diff --git a/Textures/Belly/BellyBulge_huge_Male_eastm.png b/Textures/Belly/BellyBulge_huge_Male_eastm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_huge_Male_eastm.png differ
diff --git a/Textures/Belly/BellyBulge_huge_Male_north.png b/Textures/Belly/BellyBulge_huge_Male_north.png
new file mode 100644
index 0000000..dfbd445
Binary files /dev/null and b/Textures/Belly/BellyBulge_huge_Male_north.png differ
diff --git a/Textures/Belly/BellyBulge_huge_Male_south.png b/Textures/Belly/BellyBulge_huge_Male_south.png
new file mode 100644
index 0000000..dfbd445
Binary files /dev/null and b/Textures/Belly/BellyBulge_huge_Male_south.png differ
diff --git a/Textures/Belly/BellyBulge_huge_Male_southm.png b/Textures/Belly/BellyBulge_huge_Male_southm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_huge_Male_southm.png differ
diff --git a/Textures/Belly/BellyBulge_huge_Thin_east.png b/Textures/Belly/BellyBulge_huge_Thin_east.png
new file mode 100644
index 0000000..2cf96fd
Binary files /dev/null and b/Textures/Belly/BellyBulge_huge_Thin_east.png differ
diff --git a/Textures/Belly/BellyBulge_huge_Thin_eastm.png b/Textures/Belly/BellyBulge_huge_Thin_eastm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_huge_Thin_eastm.png differ
diff --git a/Textures/Belly/BellyBulge_huge_Thin_north.png b/Textures/Belly/BellyBulge_huge_Thin_north.png
new file mode 100644
index 0000000..ac41d90
Binary files /dev/null and b/Textures/Belly/BellyBulge_huge_Thin_north.png differ
diff --git a/Textures/Belly/BellyBulge_huge_Thin_south.png b/Textures/Belly/BellyBulge_huge_Thin_south.png
new file mode 100644
index 0000000..ac41d90
Binary files /dev/null and b/Textures/Belly/BellyBulge_huge_Thin_south.png differ
diff --git a/Textures/Belly/BellyBulge_huge_Thin_southm.png b/Textures/Belly/BellyBulge_huge_Thin_southm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_huge_Thin_southm.png differ
diff --git a/Textures/Belly/BellyBulge_huge_east.png b/Textures/Belly/BellyBulge_huge_east.png
new file mode 100644
index 0000000..bd524ec
Binary files /dev/null and b/Textures/Belly/BellyBulge_huge_east.png differ
diff --git a/Textures/Belly/BellyBulge_huge_eastm.png b/Textures/Belly/BellyBulge_huge_eastm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_huge_eastm.png differ
diff --git a/Textures/Belly/BellyBulge_huge_north.png b/Textures/Belly/BellyBulge_huge_north.png
new file mode 100644
index 0000000..7f7cc24
Binary files /dev/null and b/Textures/Belly/BellyBulge_huge_north.png differ
diff --git a/Textures/Belly/BellyBulge_huge_south.png b/Textures/Belly/BellyBulge_huge_south.png
new file mode 100644
index 0000000..7f7cc24
Binary files /dev/null and b/Textures/Belly/BellyBulge_huge_south.png differ
diff --git a/Textures/Belly/BellyBulge_huge_southm.png b/Textures/Belly/BellyBulge_huge_southm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_huge_southm.png differ
diff --git a/Textures/Belly/BellyBulge_large_Fat_east.png b/Textures/Belly/BellyBulge_large_Fat_east.png
new file mode 100644
index 0000000..42bd403
Binary files /dev/null and b/Textures/Belly/BellyBulge_large_Fat_east.png differ
diff --git a/Textures/Belly/BellyBulge_large_Fat_eastm.png b/Textures/Belly/BellyBulge_large_Fat_eastm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_large_Fat_eastm.png differ
diff --git a/Textures/Belly/BellyBulge_large_Fat_north.png b/Textures/Belly/BellyBulge_large_Fat_north.png
new file mode 100644
index 0000000..a676423
Binary files /dev/null and b/Textures/Belly/BellyBulge_large_Fat_north.png differ
diff --git a/Textures/Belly/BellyBulge_large_Fat_south.png b/Textures/Belly/BellyBulge_large_Fat_south.png
new file mode 100644
index 0000000..a676423
Binary files /dev/null and b/Textures/Belly/BellyBulge_large_Fat_south.png differ
diff --git a/Textures/Belly/BellyBulge_large_Fat_southm.png b/Textures/Belly/BellyBulge_large_Fat_southm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_large_Fat_southm.png differ
diff --git a/Textures/Belly/BellyBulge_large_Female_east.png b/Textures/Belly/BellyBulge_large_Female_east.png
new file mode 100644
index 0000000..d787143
Binary files /dev/null and b/Textures/Belly/BellyBulge_large_Female_east.png differ
diff --git a/Textures/Belly/BellyBulge_large_Female_eastm.png b/Textures/Belly/BellyBulge_large_Female_eastm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_large_Female_eastm.png differ
diff --git a/Textures/Belly/BellyBulge_large_Female_north.png b/Textures/Belly/BellyBulge_large_Female_north.png
new file mode 100644
index 0000000..800bfac
Binary files /dev/null and b/Textures/Belly/BellyBulge_large_Female_north.png differ
diff --git a/Textures/Belly/BellyBulge_large_Female_south.png b/Textures/Belly/BellyBulge_large_Female_south.png
new file mode 100644
index 0000000..800bfac
Binary files /dev/null and b/Textures/Belly/BellyBulge_large_Female_south.png differ
diff --git a/Textures/Belly/BellyBulge_large_Female_southm.png b/Textures/Belly/BellyBulge_large_Female_southm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_large_Female_southm.png differ
diff --git a/Textures/Belly/BellyBulge_large_Hulk_east.png b/Textures/Belly/BellyBulge_large_Hulk_east.png
new file mode 100644
index 0000000..475ecd3
Binary files /dev/null and b/Textures/Belly/BellyBulge_large_Hulk_east.png differ
diff --git a/Textures/Belly/BellyBulge_large_Hulk_eastm.png b/Textures/Belly/BellyBulge_large_Hulk_eastm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_large_Hulk_eastm.png differ
diff --git a/Textures/Belly/BellyBulge_large_Hulk_north.png b/Textures/Belly/BellyBulge_large_Hulk_north.png
new file mode 100644
index 0000000..c5f1e3b
Binary files /dev/null and b/Textures/Belly/BellyBulge_large_Hulk_north.png differ
diff --git a/Textures/Belly/BellyBulge_large_Hulk_south.png b/Textures/Belly/BellyBulge_large_Hulk_south.png
new file mode 100644
index 0000000..c5f1e3b
Binary files /dev/null and b/Textures/Belly/BellyBulge_large_Hulk_south.png differ
diff --git a/Textures/Belly/BellyBulge_large_Hulk_southm.png b/Textures/Belly/BellyBulge_large_Hulk_southm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_large_Hulk_southm.png differ
diff --git a/Textures/Belly/BellyBulge_large_Male_east.png b/Textures/Belly/BellyBulge_large_Male_east.png
new file mode 100644
index 0000000..6b1fe60
Binary files /dev/null and b/Textures/Belly/BellyBulge_large_Male_east.png differ
diff --git a/Textures/Belly/BellyBulge_large_Male_eastm.png b/Textures/Belly/BellyBulge_large_Male_eastm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_large_Male_eastm.png differ
diff --git a/Textures/Belly/BellyBulge_large_Male_north.png b/Textures/Belly/BellyBulge_large_Male_north.png
new file mode 100644
index 0000000..2ef1dc1
Binary files /dev/null and b/Textures/Belly/BellyBulge_large_Male_north.png differ
diff --git a/Textures/Belly/BellyBulge_large_Male_south.png b/Textures/Belly/BellyBulge_large_Male_south.png
new file mode 100644
index 0000000..2ef1dc1
Binary files /dev/null and b/Textures/Belly/BellyBulge_large_Male_south.png differ
diff --git a/Textures/Belly/BellyBulge_large_Male_southm.png b/Textures/Belly/BellyBulge_large_Male_southm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_large_Male_southm.png differ
diff --git a/Textures/Belly/BellyBulge_large_Thin_east.png b/Textures/Belly/BellyBulge_large_Thin_east.png
new file mode 100644
index 0000000..76e6f9d
Binary files /dev/null and b/Textures/Belly/BellyBulge_large_Thin_east.png differ
diff --git a/Textures/Belly/BellyBulge_large_Thin_eastm.png b/Textures/Belly/BellyBulge_large_Thin_eastm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_large_Thin_eastm.png differ
diff --git a/Textures/Belly/BellyBulge_large_Thin_north.png b/Textures/Belly/BellyBulge_large_Thin_north.png
new file mode 100644
index 0000000..e2c715d
Binary files /dev/null and b/Textures/Belly/BellyBulge_large_Thin_north.png differ
diff --git a/Textures/Belly/BellyBulge_large_Thin_south.png b/Textures/Belly/BellyBulge_large_Thin_south.png
new file mode 100644
index 0000000..e2c715d
Binary files /dev/null and b/Textures/Belly/BellyBulge_large_Thin_south.png differ
diff --git a/Textures/Belly/BellyBulge_large_Thin_southm.png b/Textures/Belly/BellyBulge_large_Thin_southm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_large_Thin_southm.png differ
diff --git a/Textures/Belly/BellyBulge_large_east.png b/Textures/Belly/BellyBulge_large_east.png
new file mode 100644
index 0000000..0cbc6fd
Binary files /dev/null and b/Textures/Belly/BellyBulge_large_east.png differ
diff --git a/Textures/Belly/BellyBulge_large_eastm.png b/Textures/Belly/BellyBulge_large_eastm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_large_eastm.png differ
diff --git a/Textures/Belly/BellyBulge_large_north.png b/Textures/Belly/BellyBulge_large_north.png
new file mode 100644
index 0000000..458ed58
Binary files /dev/null and b/Textures/Belly/BellyBulge_large_north.png differ
diff --git a/Textures/Belly/BellyBulge_large_south.png b/Textures/Belly/BellyBulge_large_south.png
new file mode 100644
index 0000000..458ed58
Binary files /dev/null and b/Textures/Belly/BellyBulge_large_south.png differ
diff --git a/Textures/Belly/BellyBulge_large_southm.png b/Textures/Belly/BellyBulge_large_southm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_large_southm.png differ
diff --git a/Textures/Belly/BellyBulge_medium_Fat_east.png b/Textures/Belly/BellyBulge_medium_Fat_east.png
new file mode 100644
index 0000000..b6f8bb2
Binary files /dev/null and b/Textures/Belly/BellyBulge_medium_Fat_east.png differ
diff --git a/Textures/Belly/BellyBulge_medium_Fat_eastm.png b/Textures/Belly/BellyBulge_medium_Fat_eastm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_medium_Fat_eastm.png differ
diff --git a/Textures/Belly/BellyBulge_medium_Fat_north.png b/Textures/Belly/BellyBulge_medium_Fat_north.png
new file mode 100644
index 0000000..31d758e
Binary files /dev/null and b/Textures/Belly/BellyBulge_medium_Fat_north.png differ
diff --git a/Textures/Belly/BellyBulge_medium_Fat_south.png b/Textures/Belly/BellyBulge_medium_Fat_south.png
new file mode 100644
index 0000000..31d758e
Binary files /dev/null and b/Textures/Belly/BellyBulge_medium_Fat_south.png differ
diff --git a/Textures/Belly/BellyBulge_medium_Fat_southm.png b/Textures/Belly/BellyBulge_medium_Fat_southm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_medium_Fat_southm.png differ
diff --git a/Textures/Belly/BellyBulge_medium_Female_east.png b/Textures/Belly/BellyBulge_medium_Female_east.png
new file mode 100644
index 0000000..6a79119
Binary files /dev/null and b/Textures/Belly/BellyBulge_medium_Female_east.png differ
diff --git a/Textures/Belly/BellyBulge_medium_Female_eastm.png b/Textures/Belly/BellyBulge_medium_Female_eastm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_medium_Female_eastm.png differ
diff --git a/Textures/Belly/BellyBulge_medium_Female_north.png b/Textures/Belly/BellyBulge_medium_Female_north.png
new file mode 100644
index 0000000..283cdae
Binary files /dev/null and b/Textures/Belly/BellyBulge_medium_Female_north.png differ
diff --git a/Textures/Belly/BellyBulge_medium_Female_south.png b/Textures/Belly/BellyBulge_medium_Female_south.png
new file mode 100644
index 0000000..283cdae
Binary files /dev/null and b/Textures/Belly/BellyBulge_medium_Female_south.png differ
diff --git a/Textures/Belly/BellyBulge_medium_Female_southm.png b/Textures/Belly/BellyBulge_medium_Female_southm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_medium_Female_southm.png differ
diff --git a/Textures/Belly/BellyBulge_medium_Hulk_east.png b/Textures/Belly/BellyBulge_medium_Hulk_east.png
new file mode 100644
index 0000000..fb16fec
Binary files /dev/null and b/Textures/Belly/BellyBulge_medium_Hulk_east.png differ
diff --git a/Textures/Belly/BellyBulge_medium_Hulk_eastm.png b/Textures/Belly/BellyBulge_medium_Hulk_eastm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_medium_Hulk_eastm.png differ
diff --git a/Textures/Belly/BellyBulge_medium_Male_east.png b/Textures/Belly/BellyBulge_medium_Male_east.png
new file mode 100644
index 0000000..9475884
Binary files /dev/null and b/Textures/Belly/BellyBulge_medium_Male_east.png differ
diff --git a/Textures/Belly/BellyBulge_medium_Male_eastm.png b/Textures/Belly/BellyBulge_medium_Male_eastm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_medium_Male_eastm.png differ
diff --git a/Textures/Belly/BellyBulge_medium_Male_north.png b/Textures/Belly/BellyBulge_medium_Male_north.png
new file mode 100644
index 0000000..b059c7f
Binary files /dev/null and b/Textures/Belly/BellyBulge_medium_Male_north.png differ
diff --git a/Textures/Belly/BellyBulge_medium_Male_south.png b/Textures/Belly/BellyBulge_medium_Male_south.png
new file mode 100644
index 0000000..b059c7f
Binary files /dev/null and b/Textures/Belly/BellyBulge_medium_Male_south.png differ
diff --git a/Textures/Belly/BellyBulge_medium_Male_southm.png b/Textures/Belly/BellyBulge_medium_Male_southm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_medium_Male_southm.png differ
diff --git a/Textures/Belly/BellyBulge_medium_Thin_east.png b/Textures/Belly/BellyBulge_medium_Thin_east.png
new file mode 100644
index 0000000..9ee6311
Binary files /dev/null and b/Textures/Belly/BellyBulge_medium_Thin_east.png differ
diff --git a/Textures/Belly/BellyBulge_medium_Thin_eastm.png b/Textures/Belly/BellyBulge_medium_Thin_eastm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_medium_Thin_eastm.png differ
diff --git a/Textures/Belly/BellyBulge_medium_Thin_north.png b/Textures/Belly/BellyBulge_medium_Thin_north.png
new file mode 100644
index 0000000..b5daff1
Binary files /dev/null and b/Textures/Belly/BellyBulge_medium_Thin_north.png differ
diff --git a/Textures/Belly/BellyBulge_medium_Thin_south.png b/Textures/Belly/BellyBulge_medium_Thin_south.png
new file mode 100644
index 0000000..b5daff1
Binary files /dev/null and b/Textures/Belly/BellyBulge_medium_Thin_south.png differ
diff --git a/Textures/Belly/BellyBulge_medium_Thin_southm.png b/Textures/Belly/BellyBulge_medium_Thin_southm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_medium_Thin_southm.png differ
diff --git a/Textures/Belly/BellyBulge_medium_east.png b/Textures/Belly/BellyBulge_medium_east.png
new file mode 100644
index 0000000..8b973b1
Binary files /dev/null and b/Textures/Belly/BellyBulge_medium_east.png differ
diff --git a/Textures/Belly/BellyBulge_medium_eastm.png b/Textures/Belly/BellyBulge_medium_eastm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_medium_eastm.png differ
diff --git a/Textures/Belly/BellyBulge_medium_north.png b/Textures/Belly/BellyBulge_medium_north.png
new file mode 100644
index 0000000..86ffeb8
Binary files /dev/null and b/Textures/Belly/BellyBulge_medium_north.png differ
diff --git a/Textures/Belly/BellyBulge_medium_south.png b/Textures/Belly/BellyBulge_medium_south.png
new file mode 100644
index 0000000..86ffeb8
Binary files /dev/null and b/Textures/Belly/BellyBulge_medium_south.png differ
diff --git a/Textures/Belly/BellyBulge_medium_southm.png b/Textures/Belly/BellyBulge_medium_southm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_medium_southm.png differ
diff --git a/Textures/Belly/BellyBulge_midium_Hulk_north.png b/Textures/Belly/BellyBulge_midium_Hulk_north.png
new file mode 100644
index 0000000..c053929
Binary files /dev/null and b/Textures/Belly/BellyBulge_midium_Hulk_north.png differ
diff --git a/Textures/Belly/BellyBulge_midium_Hulk_south.png b/Textures/Belly/BellyBulge_midium_Hulk_south.png
new file mode 100644
index 0000000..c053929
Binary files /dev/null and b/Textures/Belly/BellyBulge_midium_Hulk_south.png differ
diff --git a/Textures/Belly/BellyBulge_midium_Hulk_southm.png b/Textures/Belly/BellyBulge_midium_Hulk_southm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_midium_Hulk_southm.png differ
diff --git a/Textures/Belly/BellyBulge_small_Fat_east.png b/Textures/Belly/BellyBulge_small_Fat_east.png
new file mode 100644
index 0000000..49ee570
Binary files /dev/null and b/Textures/Belly/BellyBulge_small_Fat_east.png differ
diff --git a/Textures/Belly/BellyBulge_small_Fat_eastm.png b/Textures/Belly/BellyBulge_small_Fat_eastm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_small_Fat_eastm.png differ
diff --git a/Textures/Belly/BellyBulge_small_Fat_north.png b/Textures/Belly/BellyBulge_small_Fat_north.png
new file mode 100644
index 0000000..b584d4d
Binary files /dev/null and b/Textures/Belly/BellyBulge_small_Fat_north.png differ
diff --git a/Textures/Belly/BellyBulge_small_Fat_south.png b/Textures/Belly/BellyBulge_small_Fat_south.png
new file mode 100644
index 0000000..b584d4d
Binary files /dev/null and b/Textures/Belly/BellyBulge_small_Fat_south.png differ
diff --git a/Textures/Belly/BellyBulge_small_Fat_southm.png b/Textures/Belly/BellyBulge_small_Fat_southm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_small_Fat_southm.png differ
diff --git a/Textures/Belly/BellyBulge_small_Female_east.png b/Textures/Belly/BellyBulge_small_Female_east.png
new file mode 100644
index 0000000..78320ae
Binary files /dev/null and b/Textures/Belly/BellyBulge_small_Female_east.png differ
diff --git a/Textures/Belly/BellyBulge_small_Female_eastm.png b/Textures/Belly/BellyBulge_small_Female_eastm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_small_Female_eastm.png differ
diff --git a/Textures/Belly/BellyBulge_small_Female_north.png b/Textures/Belly/BellyBulge_small_Female_north.png
new file mode 100644
index 0000000..0df65d8
Binary files /dev/null and b/Textures/Belly/BellyBulge_small_Female_north.png differ
diff --git a/Textures/Belly/BellyBulge_small_Female_south.png b/Textures/Belly/BellyBulge_small_Female_south.png
new file mode 100644
index 0000000..0df65d8
Binary files /dev/null and b/Textures/Belly/BellyBulge_small_Female_south.png differ
diff --git a/Textures/Belly/BellyBulge_small_Female_southm.png b/Textures/Belly/BellyBulge_small_Female_southm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_small_Female_southm.png differ
diff --git a/Textures/Belly/BellyBulge_small_Hulk_east.png b/Textures/Belly/BellyBulge_small_Hulk_east.png
new file mode 100644
index 0000000..bf051fc
Binary files /dev/null and b/Textures/Belly/BellyBulge_small_Hulk_east.png differ
diff --git a/Textures/Belly/BellyBulge_small_Hulk_eastm.png b/Textures/Belly/BellyBulge_small_Hulk_eastm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_small_Hulk_eastm.png differ
diff --git a/Textures/Belly/BellyBulge_small_Hulk_north.png b/Textures/Belly/BellyBulge_small_Hulk_north.png
new file mode 100644
index 0000000..f0cf4e1
Binary files /dev/null and b/Textures/Belly/BellyBulge_small_Hulk_north.png differ
diff --git a/Textures/Belly/BellyBulge_small_Hulk_south.png b/Textures/Belly/BellyBulge_small_Hulk_south.png
new file mode 100644
index 0000000..f0cf4e1
Binary files /dev/null and b/Textures/Belly/BellyBulge_small_Hulk_south.png differ
diff --git a/Textures/Belly/BellyBulge_small_Hulk_southm.png b/Textures/Belly/BellyBulge_small_Hulk_southm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_small_Hulk_southm.png differ
diff --git a/Textures/Belly/BellyBulge_small_Male_east.png b/Textures/Belly/BellyBulge_small_Male_east.png
new file mode 100644
index 0000000..38219aa
Binary files /dev/null and b/Textures/Belly/BellyBulge_small_Male_east.png differ
diff --git a/Textures/Belly/BellyBulge_small_Male_eastm.png b/Textures/Belly/BellyBulge_small_Male_eastm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_small_Male_eastm.png differ
diff --git a/Textures/Belly/BellyBulge_small_Male_north.png b/Textures/Belly/BellyBulge_small_Male_north.png
new file mode 100644
index 0000000..99cd2b3
Binary files /dev/null and b/Textures/Belly/BellyBulge_small_Male_north.png differ
diff --git a/Textures/Belly/BellyBulge_small_Male_south.png b/Textures/Belly/BellyBulge_small_Male_south.png
new file mode 100644
index 0000000..99cd2b3
Binary files /dev/null and b/Textures/Belly/BellyBulge_small_Male_south.png differ
diff --git a/Textures/Belly/BellyBulge_small_Male_southm.png b/Textures/Belly/BellyBulge_small_Male_southm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_small_Male_southm.png differ
diff --git a/Textures/Belly/BellyBulge_small_Thin_east.png b/Textures/Belly/BellyBulge_small_Thin_east.png
new file mode 100644
index 0000000..c7eeae3
Binary files /dev/null and b/Textures/Belly/BellyBulge_small_Thin_east.png differ
diff --git a/Textures/Belly/BellyBulge_small_Thin_eastm.png b/Textures/Belly/BellyBulge_small_Thin_eastm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_small_Thin_eastm.png differ
diff --git a/Textures/Belly/BellyBulge_small_Thin_north.png b/Textures/Belly/BellyBulge_small_Thin_north.png
new file mode 100644
index 0000000..50aa3a5
Binary files /dev/null and b/Textures/Belly/BellyBulge_small_Thin_north.png differ
diff --git a/Textures/Belly/BellyBulge_small_Thin_south.png b/Textures/Belly/BellyBulge_small_Thin_south.png
new file mode 100644
index 0000000..50aa3a5
Binary files /dev/null and b/Textures/Belly/BellyBulge_small_Thin_south.png differ
diff --git a/Textures/Belly/BellyBulge_small_Thin_southm.png b/Textures/Belly/BellyBulge_small_Thin_southm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_small_Thin_southm.png differ
diff --git a/Textures/Belly/BellyBulge_small_east.png b/Textures/Belly/BellyBulge_small_east.png
new file mode 100644
index 0000000..78320ae
Binary files /dev/null and b/Textures/Belly/BellyBulge_small_east.png differ
diff --git a/Textures/Belly/BellyBulge_small_eastm.png b/Textures/Belly/BellyBulge_small_eastm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_small_eastm.png differ
diff --git a/Textures/Belly/BellyBulge_small_north.png b/Textures/Belly/BellyBulge_small_north.png
new file mode 100644
index 0000000..0df65d8
Binary files /dev/null and b/Textures/Belly/BellyBulge_small_north.png differ
diff --git a/Textures/Belly/BellyBulge_small_south.png b/Textures/Belly/BellyBulge_small_south.png
new file mode 100644
index 0000000..0df65d8
Binary files /dev/null and b/Textures/Belly/BellyBulge_small_south.png differ
diff --git a/Textures/Belly/BellyBulge_small_southm.png b/Textures/Belly/BellyBulge_small_southm.png
new file mode 100644
index 0000000..303512c
Binary files /dev/null and b/Textures/Belly/BellyBulge_small_southm.png differ
diff --git a/Textures/Belly/FeaturelessBelly_east.png b/Textures/Belly/FeaturelessBelly_east.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Belly/FeaturelessBelly_east.png differ
diff --git a/Textures/Belly/FeaturelessBelly_north.png b/Textures/Belly/FeaturelessBelly_north.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Belly/FeaturelessBelly_north.png differ
diff --git a/Textures/Belly/FeaturelessBelly_south.png b/Textures/Belly/FeaturelessBelly_south.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Belly/FeaturelessBelly_south.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_huge_left_east.png b/Textures/Breasts/ArcOTY/breasts_arc_huge_left_east.png
new file mode 100644
index 0000000..ee39a7b
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_huge_left_east.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_huge_left_north.png b/Textures/Breasts/ArcOTY/breasts_arc_huge_left_north.png
new file mode 100644
index 0000000..84edcee
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_huge_left_north.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_huge_left_south.png b/Textures/Breasts/ArcOTY/breasts_arc_huge_left_south.png
new file mode 100644
index 0000000..ac99f0c
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_huge_left_south.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_huge_right_east.png b/Textures/Breasts/ArcOTY/breasts_arc_huge_right_east.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_huge_right_east.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_huge_right_north.png b/Textures/Breasts/ArcOTY/breasts_arc_huge_right_north.png
new file mode 100644
index 0000000..d25dd48
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_huge_right_north.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_huge_right_south.png b/Textures/Breasts/ArcOTY/breasts_arc_huge_right_south.png
new file mode 100644
index 0000000..884a0df
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_huge_right_south.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_large_left_east.png b/Textures/Breasts/ArcOTY/breasts_arc_large_left_east.png
new file mode 100644
index 0000000..bff0f36
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_large_left_east.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_large_left_north.png b/Textures/Breasts/ArcOTY/breasts_arc_large_left_north.png
new file mode 100644
index 0000000..d1019aa
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_large_left_north.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_large_left_south.png b/Textures/Breasts/ArcOTY/breasts_arc_large_left_south.png
new file mode 100644
index 0000000..b1aef90
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_large_left_south.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_large_right_east.png b/Textures/Breasts/ArcOTY/breasts_arc_large_right_east.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_large_right_east.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_large_right_north.png b/Textures/Breasts/ArcOTY/breasts_arc_large_right_north.png
new file mode 100644
index 0000000..7fd1127
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_large_right_north.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_large_right_south.png b/Textures/Breasts/ArcOTY/breasts_arc_large_right_south.png
new file mode 100644
index 0000000..11550a8
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_large_right_south.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_left_east.png b/Textures/Breasts/ArcOTY/breasts_arc_left_east.png
new file mode 100644
index 0000000..c516d4d
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_left_east.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_left_north.png b/Textures/Breasts/ArcOTY/breasts_arc_left_north.png
new file mode 100644
index 0000000..f25bd04
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_left_north.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_left_south.png b/Textures/Breasts/ArcOTY/breasts_arc_left_south.png
new file mode 100644
index 0000000..07327ba
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_left_south.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_micro_left_east.png b/Textures/Breasts/ArcOTY/breasts_arc_micro_left_east.png
new file mode 100644
index 0000000..a3bbe3e
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_micro_left_east.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_micro_left_north.png b/Textures/Breasts/ArcOTY/breasts_arc_micro_left_north.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_micro_left_north.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_micro_left_south.png b/Textures/Breasts/ArcOTY/breasts_arc_micro_left_south.png
new file mode 100644
index 0000000..4c8e254
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_micro_left_south.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_micro_right_east.png b/Textures/Breasts/ArcOTY/breasts_arc_micro_right_east.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_micro_right_east.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_micro_right_north.png b/Textures/Breasts/ArcOTY/breasts_arc_micro_right_north.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_micro_right_north.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_micro_right_south.png b/Textures/Breasts/ArcOTY/breasts_arc_micro_right_south.png
new file mode 100644
index 0000000..641eaab
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_micro_right_south.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_oversized_left_east.png b/Textures/Breasts/ArcOTY/breasts_arc_oversized_left_east.png
new file mode 100644
index 0000000..b94d4d8
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_oversized_left_east.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_oversized_left_north.png b/Textures/Breasts/ArcOTY/breasts_arc_oversized_left_north.png
new file mode 100644
index 0000000..9e297c1
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_oversized_left_north.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_oversized_left_south.png b/Textures/Breasts/ArcOTY/breasts_arc_oversized_left_south.png
new file mode 100644
index 0000000..35fd1fe
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_oversized_left_south.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_oversized_right_east.png b/Textures/Breasts/ArcOTY/breasts_arc_oversized_right_east.png
new file mode 100644
index 0000000..8672292
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_oversized_right_east.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_oversized_right_north.png b/Textures/Breasts/ArcOTY/breasts_arc_oversized_right_north.png
new file mode 100644
index 0000000..5416bdf
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_oversized_right_north.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_oversized_right_south.png b/Textures/Breasts/ArcOTY/breasts_arc_oversized_right_south.png
new file mode 100644
index 0000000..0bbc29f
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_oversized_right_south.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_right_east.png b/Textures/Breasts/ArcOTY/breasts_arc_right_east.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_right_east.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_right_north.png b/Textures/Breasts/ArcOTY/breasts_arc_right_north.png
new file mode 100644
index 0000000..2d97b3e
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_right_north.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_right_south.png b/Textures/Breasts/ArcOTY/breasts_arc_right_south.png
new file mode 100644
index 0000000..3ed0a79
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_right_south.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_small_left_east.png b/Textures/Breasts/ArcOTY/breasts_arc_small_left_east.png
new file mode 100644
index 0000000..c1b6849
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_small_left_east.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_small_left_north.png b/Textures/Breasts/ArcOTY/breasts_arc_small_left_north.png
new file mode 100644
index 0000000..6ddf372
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_small_left_north.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_small_left_south.png b/Textures/Breasts/ArcOTY/breasts_arc_small_left_south.png
new file mode 100644
index 0000000..7ffacfb
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_small_left_south.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_small_right_east.png b/Textures/Breasts/ArcOTY/breasts_arc_small_right_east.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_small_right_east.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_small_right_north.png b/Textures/Breasts/ArcOTY/breasts_arc_small_right_north.png
new file mode 100644
index 0000000..bb13063
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_small_right_north.png differ
diff --git a/Textures/Breasts/ArcOTY/breasts_arc_small_right_south.png b/Textures/Breasts/ArcOTY/breasts_arc_small_right_south.png
new file mode 100644
index 0000000..5e97036
Binary files /dev/null and b/Textures/Breasts/ArcOTY/breasts_arc_small_right_south.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_huge_left_east.png b/Textures/Breasts/BioOTY/breasts_bio_huge_left_east.png
new file mode 100644
index 0000000..40709ce
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_huge_left_east.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_huge_left_north.png b/Textures/Breasts/BioOTY/breasts_bio_huge_left_north.png
new file mode 100644
index 0000000..84edcee
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_huge_left_north.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_huge_left_south.png b/Textures/Breasts/BioOTY/breasts_bio_huge_left_south.png
new file mode 100644
index 0000000..8fc84de
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_huge_left_south.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_huge_right_east.png b/Textures/Breasts/BioOTY/breasts_bio_huge_right_east.png
new file mode 100644
index 0000000..8672292
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_huge_right_east.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_huge_right_north.png b/Textures/Breasts/BioOTY/breasts_bio_huge_right_north.png
new file mode 100644
index 0000000..d25dd48
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_huge_right_north.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_huge_right_south.png b/Textures/Breasts/BioOTY/breasts_bio_huge_right_south.png
new file mode 100644
index 0000000..525992a
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_huge_right_south.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_large_left_east.png b/Textures/Breasts/BioOTY/breasts_bio_large_left_east.png
new file mode 100644
index 0000000..e5fa18f
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_large_left_east.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_large_left_north.png b/Textures/Breasts/BioOTY/breasts_bio_large_left_north.png
new file mode 100644
index 0000000..d1019aa
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_large_left_north.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_large_left_south.png b/Textures/Breasts/BioOTY/breasts_bio_large_left_south.png
new file mode 100644
index 0000000..5e252f0
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_large_left_south.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_large_right_east.png b/Textures/Breasts/BioOTY/breasts_bio_large_right_east.png
new file mode 100644
index 0000000..8672292
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_large_right_east.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_large_right_north.png b/Textures/Breasts/BioOTY/breasts_bio_large_right_north.png
new file mode 100644
index 0000000..7fd1127
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_large_right_north.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_large_right_south.png b/Textures/Breasts/BioOTY/breasts_bio_large_right_south.png
new file mode 100644
index 0000000..761fe80
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_large_right_south.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_left_east.png b/Textures/Breasts/BioOTY/breasts_bio_left_east.png
new file mode 100644
index 0000000..03e8f16
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_left_east.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_left_north.png b/Textures/Breasts/BioOTY/breasts_bio_left_north.png
new file mode 100644
index 0000000..f25bd04
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_left_north.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_left_south.png b/Textures/Breasts/BioOTY/breasts_bio_left_south.png
new file mode 100644
index 0000000..efdcb78
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_left_south.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_micro_left_east.png b/Textures/Breasts/BioOTY/breasts_bio_micro_left_east.png
new file mode 100644
index 0000000..60167c9
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_micro_left_east.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_micro_left_north.png b/Textures/Breasts/BioOTY/breasts_bio_micro_left_north.png
new file mode 100644
index 0000000..8672292
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_micro_left_north.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_micro_left_south.png b/Textures/Breasts/BioOTY/breasts_bio_micro_left_south.png
new file mode 100644
index 0000000..659e64f
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_micro_left_south.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_micro_right_east.png b/Textures/Breasts/BioOTY/breasts_bio_micro_right_east.png
new file mode 100644
index 0000000..8672292
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_micro_right_east.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_micro_right_north.png b/Textures/Breasts/BioOTY/breasts_bio_micro_right_north.png
new file mode 100644
index 0000000..8672292
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_micro_right_north.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_micro_right_south.png b/Textures/Breasts/BioOTY/breasts_bio_micro_right_south.png
new file mode 100644
index 0000000..16be64f
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_micro_right_south.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_oversized_left_east.png b/Textures/Breasts/BioOTY/breasts_bio_oversized_left_east.png
new file mode 100644
index 0000000..1804581
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_oversized_left_east.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_oversized_left_north.png b/Textures/Breasts/BioOTY/breasts_bio_oversized_left_north.png
new file mode 100644
index 0000000..9e297c1
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_oversized_left_north.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_oversized_left_south.png b/Textures/Breasts/BioOTY/breasts_bio_oversized_left_south.png
new file mode 100644
index 0000000..2f3680d
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_oversized_left_south.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_oversized_right_east.png b/Textures/Breasts/BioOTY/breasts_bio_oversized_right_east.png
new file mode 100644
index 0000000..8672292
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_oversized_right_east.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_oversized_right_north.png b/Textures/Breasts/BioOTY/breasts_bio_oversized_right_north.png
new file mode 100644
index 0000000..5416bdf
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_oversized_right_north.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_oversized_right_south.png b/Textures/Breasts/BioOTY/breasts_bio_oversized_right_south.png
new file mode 100644
index 0000000..41677f6
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_oversized_right_south.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_right_east.png b/Textures/Breasts/BioOTY/breasts_bio_right_east.png
new file mode 100644
index 0000000..8672292
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_right_east.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_right_north.png b/Textures/Breasts/BioOTY/breasts_bio_right_north.png
new file mode 100644
index 0000000..2d97b3e
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_right_north.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_right_south.png b/Textures/Breasts/BioOTY/breasts_bio_right_south.png
new file mode 100644
index 0000000..f3c6591
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_right_south.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_small_left_east.png b/Textures/Breasts/BioOTY/breasts_bio_small_left_east.png
new file mode 100644
index 0000000..f357381
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_small_left_east.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_small_left_north.png b/Textures/Breasts/BioOTY/breasts_bio_small_left_north.png
new file mode 100644
index 0000000..6ddf372
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_small_left_north.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_small_left_south.png b/Textures/Breasts/BioOTY/breasts_bio_small_left_south.png
new file mode 100644
index 0000000..67ef7d5
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_small_left_south.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_small_right_east.png b/Textures/Breasts/BioOTY/breasts_bio_small_right_east.png
new file mode 100644
index 0000000..8672292
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_small_right_east.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_small_right_north.png b/Textures/Breasts/BioOTY/breasts_bio_small_right_north.png
new file mode 100644
index 0000000..bb13063
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_small_right_north.png differ
diff --git a/Textures/Breasts/BioOTY/breasts_bio_small_right_south.png b/Textures/Breasts/BioOTY/breasts_bio_small_right_south.png
new file mode 100644
index 0000000..adcdf6e
Binary files /dev/null and b/Textures/Breasts/BioOTY/breasts_bio_small_right_south.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_huge_left_east.png b/Textures/Breasts/HydOTY/breasts_hyd_huge_left_east.png
new file mode 100644
index 0000000..cae2c89
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_huge_left_east.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_huge_left_eastm.png b/Textures/Breasts/HydOTY/breasts_hyd_huge_left_eastm.png
new file mode 100644
index 0000000..f8823fb
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_huge_left_eastm.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_huge_left_north.png b/Textures/Breasts/HydOTY/breasts_hyd_huge_left_north.png
new file mode 100644
index 0000000..fe2c2a5
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_huge_left_north.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_huge_left_northm.png b/Textures/Breasts/HydOTY/breasts_hyd_huge_left_northm.png
new file mode 100644
index 0000000..f8823fb
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_huge_left_northm.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_huge_left_south.png b/Textures/Breasts/HydOTY/breasts_hyd_huge_left_south.png
new file mode 100644
index 0000000..8537133
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_huge_left_south.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_huge_left_southm.png b/Textures/Breasts/HydOTY/breasts_hyd_huge_left_southm.png
new file mode 100644
index 0000000..f8823fb
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_huge_left_southm.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_huge_right_east.png b/Textures/Breasts/HydOTY/breasts_hyd_huge_right_east.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_huge_right_east.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_huge_right_north.png b/Textures/Breasts/HydOTY/breasts_hyd_huge_right_north.png
new file mode 100644
index 0000000..6dd90d9
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_huge_right_north.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_huge_right_northm.png b/Textures/Breasts/HydOTY/breasts_hyd_huge_right_northm.png
new file mode 100644
index 0000000..763b4e8
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_huge_right_northm.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_huge_right_south.png b/Textures/Breasts/HydOTY/breasts_hyd_huge_right_south.png
new file mode 100644
index 0000000..32d851e
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_huge_right_south.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_huge_right_southm.png b/Textures/Breasts/HydOTY/breasts_hyd_huge_right_southm.png
new file mode 100644
index 0000000..f8823fb
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_huge_right_southm.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_large_left_east.png b/Textures/Breasts/HydOTY/breasts_hyd_large_left_east.png
new file mode 100644
index 0000000..4d47c4f
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_large_left_east.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_large_left_eastm.png b/Textures/Breasts/HydOTY/breasts_hyd_large_left_eastm.png
new file mode 100644
index 0000000..763b4e8
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_large_left_eastm.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_large_left_north.png b/Textures/Breasts/HydOTY/breasts_hyd_large_left_north.png
new file mode 100644
index 0000000..c52264e
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_large_left_north.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_large_left_northm.png b/Textures/Breasts/HydOTY/breasts_hyd_large_left_northm.png
new file mode 100644
index 0000000..ca8200b
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_large_left_northm.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_large_left_south.png b/Textures/Breasts/HydOTY/breasts_hyd_large_left_south.png
new file mode 100644
index 0000000..64dc1f9
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_large_left_south.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_large_left_southm.png b/Textures/Breasts/HydOTY/breasts_hyd_large_left_southm.png
new file mode 100644
index 0000000..ca8200b
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_large_left_southm.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_large_right_east.png b/Textures/Breasts/HydOTY/breasts_hyd_large_right_east.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_large_right_east.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_large_right_north.png b/Textures/Breasts/HydOTY/breasts_hyd_large_right_north.png
new file mode 100644
index 0000000..1f07163
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_large_right_north.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_large_right_northm.png b/Textures/Breasts/HydOTY/breasts_hyd_large_right_northm.png
new file mode 100644
index 0000000..7ac7d52
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_large_right_northm.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_large_right_south.png b/Textures/Breasts/HydOTY/breasts_hyd_large_right_south.png
new file mode 100644
index 0000000..fc4b10f
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_large_right_south.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_large_right_southm.png b/Textures/Breasts/HydOTY/breasts_hyd_large_right_southm.png
new file mode 100644
index 0000000..ca8200b
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_large_right_southm.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_left_east.png b/Textures/Breasts/HydOTY/breasts_hyd_left_east.png
new file mode 100644
index 0000000..ede7e4c
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_left_east.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_left_eastm.png b/Textures/Breasts/HydOTY/breasts_hyd_left_eastm.png
new file mode 100644
index 0000000..7ac7d52
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_left_eastm.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_left_north.png b/Textures/Breasts/HydOTY/breasts_hyd_left_north.png
new file mode 100644
index 0000000..e9b6121
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_left_north.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_left_northm.png b/Textures/Breasts/HydOTY/breasts_hyd_left_northm.png
new file mode 100644
index 0000000..7ac7d52
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_left_northm.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_left_south.png b/Textures/Breasts/HydOTY/breasts_hyd_left_south.png
new file mode 100644
index 0000000..403a052
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_left_south.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_left_southm.png b/Textures/Breasts/HydOTY/breasts_hyd_left_southm.png
new file mode 100644
index 0000000..7ac7d52
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_left_southm.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_micro_left_east.png b/Textures/Breasts/HydOTY/breasts_hyd_micro_left_east.png
new file mode 100644
index 0000000..8971fbf
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_micro_left_east.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_micro_left_eastm.png b/Textures/Breasts/HydOTY/breasts_hyd_micro_left_eastm.png
new file mode 100644
index 0000000..7ac7d52
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_micro_left_eastm.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_micro_left_north.png b/Textures/Breasts/HydOTY/breasts_hyd_micro_left_north.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_micro_left_north.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_micro_left_northm.png b/Textures/Breasts/HydOTY/breasts_hyd_micro_left_northm.png
new file mode 100644
index 0000000..7ac7d52
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_micro_left_northm.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_micro_left_south.png b/Textures/Breasts/HydOTY/breasts_hyd_micro_left_south.png
new file mode 100644
index 0000000..be7ed61
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_micro_left_south.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_micro_left_southm.png b/Textures/Breasts/HydOTY/breasts_hyd_micro_left_southm.png
new file mode 100644
index 0000000..7ac7d52
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_micro_left_southm.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_micro_right_north.png b/Textures/Breasts/HydOTY/breasts_hyd_micro_right_north.png
new file mode 100644
index 0000000..8d2ff92
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_micro_right_north.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_micro_right_northm.png b/Textures/Breasts/HydOTY/breasts_hyd_micro_right_northm.png
new file mode 100644
index 0000000..7ac7d52
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_micro_right_northm.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_micro_right_south.png b/Textures/Breasts/HydOTY/breasts_hyd_micro_right_south.png
new file mode 100644
index 0000000..52c30de
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_micro_right_south.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_micro_right_southm.png b/Textures/Breasts/HydOTY/breasts_hyd_micro_right_southm.png
new file mode 100644
index 0000000..7ac7d52
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_micro_right_southm.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_oversized_left_east.png b/Textures/Breasts/HydOTY/breasts_hyd_oversized_left_east.png
new file mode 100644
index 0000000..7dedd7e
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_oversized_left_east.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_oversized_left_north.png b/Textures/Breasts/HydOTY/breasts_hyd_oversized_left_north.png
new file mode 100644
index 0000000..29ca11e
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_oversized_left_north.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_oversized_left_south.png b/Textures/Breasts/HydOTY/breasts_hyd_oversized_left_south.png
new file mode 100644
index 0000000..225f267
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_oversized_left_south.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_oversized_right_east.png b/Textures/Breasts/HydOTY/breasts_hyd_oversized_right_east.png
new file mode 100644
index 0000000..8672292
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_oversized_right_east.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_oversized_right_north.png b/Textures/Breasts/HydOTY/breasts_hyd_oversized_right_north.png
new file mode 100644
index 0000000..8545bf2
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_oversized_right_north.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_oversized_right_south.png b/Textures/Breasts/HydOTY/breasts_hyd_oversized_right_south.png
new file mode 100644
index 0000000..3fbf71a
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_oversized_right_south.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_right_east.png b/Textures/Breasts/HydOTY/breasts_hyd_right_east.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_right_east.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_right_north.png b/Textures/Breasts/HydOTY/breasts_hyd_right_north.png
new file mode 100644
index 0000000..1ccf1a7
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_right_north.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_right_northm.png b/Textures/Breasts/HydOTY/breasts_hyd_right_northm.png
new file mode 100644
index 0000000..7ac7d52
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_right_northm.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_right_south.png b/Textures/Breasts/HydOTY/breasts_hyd_right_south.png
new file mode 100644
index 0000000..e1b58e6
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_right_south.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_right_southm.png b/Textures/Breasts/HydOTY/breasts_hyd_right_southm.png
new file mode 100644
index 0000000..7ac7d52
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_right_southm.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_small_left_east.png b/Textures/Breasts/HydOTY/breasts_hyd_small_left_east.png
new file mode 100644
index 0000000..b4597d8
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_small_left_east.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_small_left_eastm.png b/Textures/Breasts/HydOTY/breasts_hyd_small_left_eastm.png
new file mode 100644
index 0000000..7ac7d52
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_small_left_eastm.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_small_left_north.png b/Textures/Breasts/HydOTY/breasts_hyd_small_left_north.png
new file mode 100644
index 0000000..6309478
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_small_left_north.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_small_left_northm.png b/Textures/Breasts/HydOTY/breasts_hyd_small_left_northm.png
new file mode 100644
index 0000000..7ac7d52
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_small_left_northm.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_small_left_south.png b/Textures/Breasts/HydOTY/breasts_hyd_small_left_south.png
new file mode 100644
index 0000000..678db81
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_small_left_south.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_small_left_southm.png b/Textures/Breasts/HydOTY/breasts_hyd_small_left_southm.png
new file mode 100644
index 0000000..7ac7d52
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_small_left_southm.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_small_right_east.png b/Textures/Breasts/HydOTY/breasts_hyd_small_right_east.png
new file mode 100644
index 0000000..9e6e827
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_small_right_east.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_small_right_north.png b/Textures/Breasts/HydOTY/breasts_hyd_small_right_north.png
new file mode 100644
index 0000000..1988a49
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_small_right_north.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_small_right_northm.png b/Textures/Breasts/HydOTY/breasts_hyd_small_right_northm.png
new file mode 100644
index 0000000..7ac7d52
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_small_right_northm.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_small_right_south.png b/Textures/Breasts/HydOTY/breasts_hyd_small_right_south.png
new file mode 100644
index 0000000..e775b8e
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_small_right_south.png differ
diff --git a/Textures/Breasts/HydOTY/breasts_hyd_small_right_southm.png b/Textures/Breasts/HydOTY/breasts_hyd_small_right_southm.png
new file mode 100644
index 0000000..7ac7d52
Binary files /dev/null and b/Textures/Breasts/HydOTY/breasts_hyd_small_right_southm.png differ
diff --git a/Textures/Breasts/NatOTY/FeaturelessLeft_east.png b/Textures/Breasts/NatOTY/FeaturelessLeft_east.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/NatOTY/FeaturelessLeft_east.png differ
diff --git a/Textures/Breasts/NatOTY/FeaturelessLeft_north.png b/Textures/Breasts/NatOTY/FeaturelessLeft_north.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/NatOTY/FeaturelessLeft_north.png differ
diff --git a/Textures/Breasts/NatOTY/FeaturelessLeft_south.png b/Textures/Breasts/NatOTY/FeaturelessLeft_south.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/NatOTY/FeaturelessLeft_south.png differ
diff --git a/Textures/Breasts/NatOTY/FeaturelessRight_east.png b/Textures/Breasts/NatOTY/FeaturelessRight_east.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/NatOTY/FeaturelessRight_east.png differ
diff --git a/Textures/Breasts/NatOTY/FeaturelessRight_north.png b/Textures/Breasts/NatOTY/FeaturelessRight_north.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/NatOTY/FeaturelessRight_north.png differ
diff --git a/Textures/Breasts/NatOTY/FeaturelessRight_south.png b/Textures/Breasts/NatOTY/FeaturelessRight_south.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/NatOTY/FeaturelessRight_south.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_average_left_Wide_east.png b/Textures/Breasts/NatOTY/breasts_average_left_Wide_east.png
new file mode 100644
index 0000000..25f7e0c
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_average_left_Wide_east.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_average_left_Wide_north.png b/Textures/Breasts/NatOTY/breasts_average_left_Wide_north.png
new file mode 100644
index 0000000..ea9dfce
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_average_left_Wide_north.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_average_left_Wide_south.png b/Textures/Breasts/NatOTY/breasts_average_left_Wide_south.png
new file mode 100644
index 0000000..9f95f21
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_average_left_Wide_south.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_average_left_east.png b/Textures/Breasts/NatOTY/breasts_average_left_east.png
new file mode 100644
index 0000000..1d147d9
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_average_left_east.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_average_left_north.png b/Textures/Breasts/NatOTY/breasts_average_left_north.png
new file mode 100644
index 0000000..f25bd04
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_average_left_north.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_average_left_south.png b/Textures/Breasts/NatOTY/breasts_average_left_south.png
new file mode 100644
index 0000000..daf7bc1
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_average_left_south.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_average_right_Wide_east.png b/Textures/Breasts/NatOTY/breasts_average_right_Wide_east.png
new file mode 100644
index 0000000..81c2f46
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_average_right_Wide_east.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_average_right_Wide_north.png b/Textures/Breasts/NatOTY/breasts_average_right_Wide_north.png
new file mode 100644
index 0000000..0bc7fe9
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_average_right_Wide_north.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_average_right_Wide_south.png b/Textures/Breasts/NatOTY/breasts_average_right_Wide_south.png
new file mode 100644
index 0000000..e7947d7
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_average_right_Wide_south.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_average_right_east.png b/Textures/Breasts/NatOTY/breasts_average_right_east.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_average_right_east.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_average_right_north.png b/Textures/Breasts/NatOTY/breasts_average_right_north.png
new file mode 100644
index 0000000..2d97b3e
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_average_right_north.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_average_right_south.png b/Textures/Breasts/NatOTY/breasts_average_right_south.png
new file mode 100644
index 0000000..f70b818
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_average_right_south.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_backb_erect_left_Wide_east.png b/Textures/Breasts/NatOTY/breasts_backb_erect_left_Wide_east.png
new file mode 100644
index 0000000..e087fd7
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_backb_erect_left_Wide_east.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_backb_erect_left_east.png b/Textures/Breasts/NatOTY/breasts_backb_erect_left_east.png
new file mode 100644
index 0000000..e087fd7
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_backb_erect_left_east.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_backb_left_Wide_east.png b/Textures/Breasts/NatOTY/breasts_backb_left_Wide_east.png
new file mode 100644
index 0000000..21de56d
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_backb_left_Wide_east.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_backb_left_Wide_north.png b/Textures/Breasts/NatOTY/breasts_backb_left_Wide_north.png
new file mode 100644
index 0000000..c94be0d
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_backb_left_Wide_north.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_backb_left_Wide_south.png b/Textures/Breasts/NatOTY/breasts_backb_left_Wide_south.png
new file mode 100644
index 0000000..0cc2e87
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_backb_left_Wide_south.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_backb_left_east.png b/Textures/Breasts/NatOTY/breasts_backb_left_east.png
new file mode 100644
index 0000000..21de56d
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_backb_left_east.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_backb_left_north.png b/Textures/Breasts/NatOTY/breasts_backb_left_north.png
new file mode 100644
index 0000000..8991fc4
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_backb_left_north.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_backb_left_south.png b/Textures/Breasts/NatOTY/breasts_backb_left_south.png
new file mode 100644
index 0000000..54eab28
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_backb_left_south.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_backb_right_Wide_east.png b/Textures/Breasts/NatOTY/breasts_backb_right_Wide_east.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_backb_right_Wide_east.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_backb_right_Wide_north.png b/Textures/Breasts/NatOTY/breasts_backb_right_Wide_north.png
new file mode 100644
index 0000000..ff7e673
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_backb_right_Wide_north.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_backb_right_Wide_south.png b/Textures/Breasts/NatOTY/breasts_backb_right_Wide_south.png
new file mode 100644
index 0000000..989169b
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_backb_right_Wide_south.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_backb_right_east.png b/Textures/Breasts/NatOTY/breasts_backb_right_east.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_backb_right_east.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_backb_right_north.png b/Textures/Breasts/NatOTY/breasts_backb_right_north.png
new file mode 100644
index 0000000..fd34f73
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_backb_right_north.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_backb_right_south.png b/Textures/Breasts/NatOTY/breasts_backb_right_south.png
new file mode 100644
index 0000000..5cd8cc9
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_backb_right_south.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_backb_rightm_south.png b/Textures/Breasts/NatOTY/breasts_backb_rightm_south.png
new file mode 100644
index 0000000..6848c51
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_backb_rightm_south.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_huge_left_Wide_east.png b/Textures/Breasts/NatOTY/breasts_huge_left_Wide_east.png
new file mode 100644
index 0000000..704462e
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_huge_left_Wide_east.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_huge_left_Wide_north.png b/Textures/Breasts/NatOTY/breasts_huge_left_Wide_north.png
new file mode 100644
index 0000000..9874541
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_huge_left_Wide_north.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_huge_left_Wide_south.png b/Textures/Breasts/NatOTY/breasts_huge_left_Wide_south.png
new file mode 100644
index 0000000..c427441
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_huge_left_Wide_south.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_huge_left_east.png b/Textures/Breasts/NatOTY/breasts_huge_left_east.png
new file mode 100644
index 0000000..704462e
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_huge_left_east.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_huge_left_north.png b/Textures/Breasts/NatOTY/breasts_huge_left_north.png
new file mode 100644
index 0000000..84edcee
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_huge_left_north.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_huge_left_south.png b/Textures/Breasts/NatOTY/breasts_huge_left_south.png
new file mode 100644
index 0000000..35b05de
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_huge_left_south.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_huge_right_Wide_east.png b/Textures/Breasts/NatOTY/breasts_huge_right_Wide_east.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_huge_right_Wide_east.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_huge_right_Wide_north.png b/Textures/Breasts/NatOTY/breasts_huge_right_Wide_north.png
new file mode 100644
index 0000000..5dbad91
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_huge_right_Wide_north.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_huge_right_Wide_south.png b/Textures/Breasts/NatOTY/breasts_huge_right_Wide_south.png
new file mode 100644
index 0000000..4a7487f
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_huge_right_Wide_south.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_huge_right_east.png b/Textures/Breasts/NatOTY/breasts_huge_right_east.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_huge_right_east.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_huge_right_north.png b/Textures/Breasts/NatOTY/breasts_huge_right_north.png
new file mode 100644
index 0000000..d25dd48
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_huge_right_north.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_huge_right_south.png b/Textures/Breasts/NatOTY/breasts_huge_right_south.png
new file mode 100644
index 0000000..44e633d
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_huge_right_south.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_large_left_Wide_east.png b/Textures/Breasts/NatOTY/breasts_large_left_Wide_east.png
new file mode 100644
index 0000000..21fdfe2
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_large_left_Wide_east.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_large_left_Wide_north.png b/Textures/Breasts/NatOTY/breasts_large_left_Wide_north.png
new file mode 100644
index 0000000..f7543cd
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_large_left_Wide_north.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_large_left_Wide_south.png b/Textures/Breasts/NatOTY/breasts_large_left_Wide_south.png
new file mode 100644
index 0000000..43b7e81
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_large_left_Wide_south.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_large_left_east.png b/Textures/Breasts/NatOTY/breasts_large_left_east.png
new file mode 100644
index 0000000..3e241c0
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_large_left_east.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_large_left_north.png b/Textures/Breasts/NatOTY/breasts_large_left_north.png
new file mode 100644
index 0000000..d1019aa
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_large_left_north.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_large_left_south.png b/Textures/Breasts/NatOTY/breasts_large_left_south.png
new file mode 100644
index 0000000..7c3140f
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_large_left_south.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_large_right_Wide_east.png b/Textures/Breasts/NatOTY/breasts_large_right_Wide_east.png
new file mode 100644
index 0000000..81c2f46
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_large_right_Wide_east.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_large_right_Wide_north.png b/Textures/Breasts/NatOTY/breasts_large_right_Wide_north.png
new file mode 100644
index 0000000..1e78be1
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_large_right_Wide_north.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_large_right_Wide_south.png b/Textures/Breasts/NatOTY/breasts_large_right_Wide_south.png
new file mode 100644
index 0000000..312feca
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_large_right_Wide_south.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_large_right_east.png b/Textures/Breasts/NatOTY/breasts_large_right_east.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_large_right_east.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_large_right_north.png b/Textures/Breasts/NatOTY/breasts_large_right_north.png
new file mode 100644
index 0000000..7fd1127
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_large_right_north.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_large_right_south.png b/Textures/Breasts/NatOTY/breasts_large_right_south.png
new file mode 100644
index 0000000..7316250
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_large_right_south.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_micro_left_east.png b/Textures/Breasts/NatOTY/breasts_micro_left_east.png
new file mode 100644
index 0000000..adde6dc
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_micro_left_east.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_micro_left_north.png b/Textures/Breasts/NatOTY/breasts_micro_left_north.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_micro_left_north.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_micro_left_south.png b/Textures/Breasts/NatOTY/breasts_micro_left_south.png
new file mode 100644
index 0000000..d41ce0b
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_micro_left_south.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_micro_right_east.png b/Textures/Breasts/NatOTY/breasts_micro_right_east.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_micro_right_east.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_micro_right_north.png b/Textures/Breasts/NatOTY/breasts_micro_right_north.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_micro_right_north.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_micro_right_south.png b/Textures/Breasts/NatOTY/breasts_micro_right_south.png
new file mode 100644
index 0000000..cbdad5d
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_micro_right_south.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_oversized_left1_east.png b/Textures/Breasts/NatOTY/breasts_oversized_left1_east.png
new file mode 100644
index 0000000..f51abab
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_oversized_left1_east.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_oversized_left1_north.png b/Textures/Breasts/NatOTY/breasts_oversized_left1_north.png
new file mode 100644
index 0000000..9e297c1
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_oversized_left1_north.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_oversized_left1_south.png b/Textures/Breasts/NatOTY/breasts_oversized_left1_south.png
new file mode 100644
index 0000000..7893428
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_oversized_left1_south.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_oversized_left_Erect_east.png b/Textures/Breasts/NatOTY/breasts_oversized_left_Erect_east.png
new file mode 100644
index 0000000..ba2970e
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_oversized_left_Erect_east.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_oversized_left_Erect_north.png b/Textures/Breasts/NatOTY/breasts_oversized_left_Erect_north.png
new file mode 100644
index 0000000..764bbce
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_oversized_left_Erect_north.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_oversized_left_Erect_south.png b/Textures/Breasts/NatOTY/breasts_oversized_left_Erect_south.png
new file mode 100644
index 0000000..e5adc41
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_oversized_left_Erect_south.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_oversized_left_Erect_southm.png b/Textures/Breasts/NatOTY/breasts_oversized_left_Erect_southm.png
new file mode 100644
index 0000000..f50b68d
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_oversized_left_Erect_southm.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_oversized_left_east.png b/Textures/Breasts/NatOTY/breasts_oversized_left_east.png
new file mode 100644
index 0000000..b77993a
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_oversized_left_east.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_oversized_left_north.png b/Textures/Breasts/NatOTY/breasts_oversized_left_north.png
new file mode 100644
index 0000000..9e297c1
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_oversized_left_north.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_oversized_left_south.png b/Textures/Breasts/NatOTY/breasts_oversized_left_south.png
new file mode 100644
index 0000000..8b0c350
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_oversized_left_south.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_oversized_right1_east.png b/Textures/Breasts/NatOTY/breasts_oversized_right1_east.png
new file mode 100644
index 0000000..8672292
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_oversized_right1_east.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_oversized_right1_north.png b/Textures/Breasts/NatOTY/breasts_oversized_right1_north.png
new file mode 100644
index 0000000..5416bdf
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_oversized_right1_north.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_oversized_right1_south.png b/Textures/Breasts/NatOTY/breasts_oversized_right1_south.png
new file mode 100644
index 0000000..b340f95
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_oversized_right1_south.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_oversized_right_Erect_east.png b/Textures/Breasts/NatOTY/breasts_oversized_right_Erect_east.png
new file mode 100644
index 0000000..8672292
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_oversized_right_Erect_east.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_oversized_right_Erect_north.png b/Textures/Breasts/NatOTY/breasts_oversized_right_Erect_north.png
new file mode 100644
index 0000000..5416bdf
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_oversized_right_Erect_north.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_oversized_right_Erect_south.png b/Textures/Breasts/NatOTY/breasts_oversized_right_Erect_south.png
new file mode 100644
index 0000000..dcc194c
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_oversized_right_Erect_south.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_oversized_right_east.png b/Textures/Breasts/NatOTY/breasts_oversized_right_east.png
new file mode 100644
index 0000000..8672292
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_oversized_right_east.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_oversized_right_north.png b/Textures/Breasts/NatOTY/breasts_oversized_right_north.png
new file mode 100644
index 0000000..5416bdf
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_oversized_right_north.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_oversized_right_south.png b/Textures/Breasts/NatOTY/breasts_oversized_right_south.png
new file mode 100644
index 0000000..1a658ef
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_oversized_right_south.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_small_left_east.png b/Textures/Breasts/NatOTY/breasts_small_left_east.png
new file mode 100644
index 0000000..fd0fb40
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_small_left_east.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_small_left_north.png b/Textures/Breasts/NatOTY/breasts_small_left_north.png
new file mode 100644
index 0000000..6ddf372
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_small_left_north.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_small_left_south.png b/Textures/Breasts/NatOTY/breasts_small_left_south.png
new file mode 100644
index 0000000..2f878c5
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_small_left_south.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_small_right_east.png b/Textures/Breasts/NatOTY/breasts_small_right_east.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_small_right_east.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_small_right_north.png b/Textures/Breasts/NatOTY/breasts_small_right_north.png
new file mode 100644
index 0000000..bb13063
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_small_right_north.png differ
diff --git a/Textures/Breasts/NatOTY/breasts_small_right_south.png b/Textures/Breasts/NatOTY/breasts_small_right_south.png
new file mode 100644
index 0000000..f6f2eac
Binary files /dev/null and b/Textures/Breasts/NatOTY/breasts_small_right_south.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_huge_left_east.png b/Textures/Breasts/Unused Arc/breasts_arc_huge_left_east.png
new file mode 100644
index 0000000..704462e
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_huge_left_east.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_huge_left_north.png b/Textures/Breasts/Unused Arc/breasts_arc_huge_left_north.png
new file mode 100644
index 0000000..84edcee
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_huge_left_north.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_huge_left_south.png b/Textures/Breasts/Unused Arc/breasts_arc_huge_left_south.png
new file mode 100644
index 0000000..35b05de
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_huge_left_south.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_huge_right_east.png b/Textures/Breasts/Unused Arc/breasts_arc_huge_right_east.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_huge_right_east.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_huge_right_north.png b/Textures/Breasts/Unused Arc/breasts_arc_huge_right_north.png
new file mode 100644
index 0000000..d25dd48
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_huge_right_north.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_huge_right_south.png b/Textures/Breasts/Unused Arc/breasts_arc_huge_right_south.png
new file mode 100644
index 0000000..44e633d
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_huge_right_south.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_large_left_east.png b/Textures/Breasts/Unused Arc/breasts_arc_large_left_east.png
new file mode 100644
index 0000000..3e241c0
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_large_left_east.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_large_left_north.png b/Textures/Breasts/Unused Arc/breasts_arc_large_left_north.png
new file mode 100644
index 0000000..d1019aa
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_large_left_north.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_large_left_south.png b/Textures/Breasts/Unused Arc/breasts_arc_large_left_south.png
new file mode 100644
index 0000000..7c3140f
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_large_left_south.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_large_right_east.png b/Textures/Breasts/Unused Arc/breasts_arc_large_right_east.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_large_right_east.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_large_right_north.png b/Textures/Breasts/Unused Arc/breasts_arc_large_right_north.png
new file mode 100644
index 0000000..7fd1127
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_large_right_north.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_large_right_south.png b/Textures/Breasts/Unused Arc/breasts_arc_large_right_south.png
new file mode 100644
index 0000000..7316250
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_large_right_south.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_left_east.png b/Textures/Breasts/Unused Arc/breasts_arc_left_east.png
new file mode 100644
index 0000000..1d147d9
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_left_east.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_left_north - Copia (4).png b/Textures/Breasts/Unused Arc/breasts_arc_left_north - Copia (4).png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_left_north - Copia (4).png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_left_north - Copia.png b/Textures/Breasts/Unused Arc/breasts_arc_left_north - Copia.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_left_north - Copia.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_left_north.png b/Textures/Breasts/Unused Arc/breasts_arc_left_north.png
new file mode 100644
index 0000000..f25bd04
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_left_north.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_left_south.png b/Textures/Breasts/Unused Arc/breasts_arc_left_south.png
new file mode 100644
index 0000000..daf7bc1
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_left_south.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_micro_left_east.png b/Textures/Breasts/Unused Arc/breasts_arc_micro_left_east.png
new file mode 100644
index 0000000..adde6dc
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_micro_left_east.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_micro_left_north.png b/Textures/Breasts/Unused Arc/breasts_arc_micro_left_north.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_micro_left_north.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_micro_left_south.png b/Textures/Breasts/Unused Arc/breasts_arc_micro_left_south.png
new file mode 100644
index 0000000..d41ce0b
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_micro_left_south.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_micro_right_east.png b/Textures/Breasts/Unused Arc/breasts_arc_micro_right_east.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_micro_right_east.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_micro_right_north.png b/Textures/Breasts/Unused Arc/breasts_arc_micro_right_north.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_micro_right_north.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_micro_right_south.png b/Textures/Breasts/Unused Arc/breasts_arc_micro_right_south.png
new file mode 100644
index 0000000..cbdad5d
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_micro_right_south.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_oversized_left_east.png b/Textures/Breasts/Unused Arc/breasts_arc_oversized_left_east.png
new file mode 100644
index 0000000..b77993a
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_oversized_left_east.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_oversized_left_north.png b/Textures/Breasts/Unused Arc/breasts_arc_oversized_left_north.png
new file mode 100644
index 0000000..9e297c1
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_oversized_left_north.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_oversized_left_south.png b/Textures/Breasts/Unused Arc/breasts_arc_oversized_left_south.png
new file mode 100644
index 0000000..8b0c350
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_oversized_left_south.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_oversized_right_east.png b/Textures/Breasts/Unused Arc/breasts_arc_oversized_right_east.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_oversized_right_east.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_oversized_right_north.png b/Textures/Breasts/Unused Arc/breasts_arc_oversized_right_north.png
new file mode 100644
index 0000000..5416bdf
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_oversized_right_north.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_oversized_right_south.png b/Textures/Breasts/Unused Arc/breasts_arc_oversized_right_south.png
new file mode 100644
index 0000000..1a658ef
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_oversized_right_south.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_right_east.png b/Textures/Breasts/Unused Arc/breasts_arc_right_east.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_right_east.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_right_north.png b/Textures/Breasts/Unused Arc/breasts_arc_right_north.png
new file mode 100644
index 0000000..2d97b3e
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_right_north.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_right_south.png b/Textures/Breasts/Unused Arc/breasts_arc_right_south.png
new file mode 100644
index 0000000..f70b818
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_right_south.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_small_left_east.png b/Textures/Breasts/Unused Arc/breasts_arc_small_left_east.png
new file mode 100644
index 0000000..fd0fb40
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_small_left_east.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_small_left_north.png b/Textures/Breasts/Unused Arc/breasts_arc_small_left_north.png
new file mode 100644
index 0000000..6ddf372
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_small_left_north.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_small_left_south.png b/Textures/Breasts/Unused Arc/breasts_arc_small_left_south.png
new file mode 100644
index 0000000..2f878c5
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_small_left_south.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_small_right_east.png b/Textures/Breasts/Unused Arc/breasts_arc_small_right_east.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_small_right_east.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_small_right_north.png b/Textures/Breasts/Unused Arc/breasts_arc_small_right_north.png
new file mode 100644
index 0000000..bb13063
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_small_right_north.png differ
diff --git a/Textures/Breasts/Unused Arc/breasts_arc_small_right_south.png b/Textures/Breasts/Unused Arc/breasts_arc_small_right_south.png
new file mode 100644
index 0000000..f6f2eac
Binary files /dev/null and b/Textures/Breasts/Unused Arc/breasts_arc_small_right_south.png differ
diff --git a/Textures/Breasts/Unused Scale/breasts_scalie_average_left_east.png b/Textures/Breasts/Unused Scale/breasts_scalie_average_left_east.png
new file mode 100644
index 0000000..32d0675
Binary files /dev/null and b/Textures/Breasts/Unused Scale/breasts_scalie_average_left_east.png differ
diff --git a/Textures/Breasts/Unused Scale/breasts_scalie_average_left_north.png b/Textures/Breasts/Unused Scale/breasts_scalie_average_left_north.png
new file mode 100644
index 0000000..345e9ee
Binary files /dev/null and b/Textures/Breasts/Unused Scale/breasts_scalie_average_left_north.png differ
diff --git a/Textures/Breasts/Unused Scale/breasts_scalie_average_left_south.png b/Textures/Breasts/Unused Scale/breasts_scalie_average_left_south.png
new file mode 100644
index 0000000..8b5c3af
Binary files /dev/null and b/Textures/Breasts/Unused Scale/breasts_scalie_average_left_south.png differ
diff --git a/Textures/Breasts/Unused Scale/breasts_scalie_average_right_east.png b/Textures/Breasts/Unused Scale/breasts_scalie_average_right_east.png
new file mode 100644
index 0000000..8672292
Binary files /dev/null and b/Textures/Breasts/Unused Scale/breasts_scalie_average_right_east.png differ
diff --git a/Textures/Breasts/Unused Scale/breasts_scalie_average_right_north.png b/Textures/Breasts/Unused Scale/breasts_scalie_average_right_north.png
new file mode 100644
index 0000000..7dd9171
Binary files /dev/null and b/Textures/Breasts/Unused Scale/breasts_scalie_average_right_north.png differ
diff --git a/Textures/Breasts/Unused Scale/breasts_scalie_average_right_south.png b/Textures/Breasts/Unused Scale/breasts_scalie_average_right_south.png
new file mode 100644
index 0000000..d495d78
Binary files /dev/null and b/Textures/Breasts/Unused Scale/breasts_scalie_average_right_south.png differ
diff --git a/Textures/Breasts/Unused Scale/breasts_scalie_huge_left_east.png b/Textures/Breasts/Unused Scale/breasts_scalie_huge_left_east.png
new file mode 100644
index 0000000..c5c674d
Binary files /dev/null and b/Textures/Breasts/Unused Scale/breasts_scalie_huge_left_east.png differ
diff --git a/Textures/Breasts/Unused Scale/breasts_scalie_huge_left_north.png b/Textures/Breasts/Unused Scale/breasts_scalie_huge_left_north.png
new file mode 100644
index 0000000..a0887a9
Binary files /dev/null and b/Textures/Breasts/Unused Scale/breasts_scalie_huge_left_north.png differ
diff --git a/Textures/Breasts/Unused Scale/breasts_scalie_huge_left_south.png b/Textures/Breasts/Unused Scale/breasts_scalie_huge_left_south.png
new file mode 100644
index 0000000..7be67d1
Binary files /dev/null and b/Textures/Breasts/Unused Scale/breasts_scalie_huge_left_south.png differ
diff --git a/Textures/Breasts/Unused Scale/breasts_scalie_huge_right_east.png b/Textures/Breasts/Unused Scale/breasts_scalie_huge_right_east.png
new file mode 100644
index 0000000..8672292
Binary files /dev/null and b/Textures/Breasts/Unused Scale/breasts_scalie_huge_right_east.png differ
diff --git a/Textures/Breasts/Unused Scale/breasts_scalie_huge_right_north.png b/Textures/Breasts/Unused Scale/breasts_scalie_huge_right_north.png
new file mode 100644
index 0000000..d567d0a
Binary files /dev/null and b/Textures/Breasts/Unused Scale/breasts_scalie_huge_right_north.png differ
diff --git a/Textures/Breasts/Unused Scale/breasts_scalie_huge_right_south.png b/Textures/Breasts/Unused Scale/breasts_scalie_huge_right_south.png
new file mode 100644
index 0000000..8814f24
Binary files /dev/null and b/Textures/Breasts/Unused Scale/breasts_scalie_huge_right_south.png differ
diff --git a/Textures/Breasts/Unused Scale/breasts_scalie_large_left_east.png b/Textures/Breasts/Unused Scale/breasts_scalie_large_left_east.png
new file mode 100644
index 0000000..39c93f9
Binary files /dev/null and b/Textures/Breasts/Unused Scale/breasts_scalie_large_left_east.png differ
diff --git a/Textures/Breasts/Unused Scale/breasts_scalie_large_left_north.png b/Textures/Breasts/Unused Scale/breasts_scalie_large_left_north.png
new file mode 100644
index 0000000..48420d2
Binary files /dev/null and b/Textures/Breasts/Unused Scale/breasts_scalie_large_left_north.png differ
diff --git a/Textures/Breasts/Unused Scale/breasts_scalie_large_left_south.png b/Textures/Breasts/Unused Scale/breasts_scalie_large_left_south.png
new file mode 100644
index 0000000..9b9321b
Binary files /dev/null and b/Textures/Breasts/Unused Scale/breasts_scalie_large_left_south.png differ
diff --git a/Textures/Breasts/Unused Scale/breasts_scalie_large_right_east.png b/Textures/Breasts/Unused Scale/breasts_scalie_large_right_east.png
new file mode 100644
index 0000000..8672292
Binary files /dev/null and b/Textures/Breasts/Unused Scale/breasts_scalie_large_right_east.png differ
diff --git a/Textures/Breasts/Unused Scale/breasts_scalie_large_right_north.png b/Textures/Breasts/Unused Scale/breasts_scalie_large_right_north.png
new file mode 100644
index 0000000..dbefb45
Binary files /dev/null and b/Textures/Breasts/Unused Scale/breasts_scalie_large_right_north.png differ
diff --git a/Textures/Breasts/Unused Scale/breasts_scalie_large_right_south.png b/Textures/Breasts/Unused Scale/breasts_scalie_large_right_south.png
new file mode 100644
index 0000000..15aec13
Binary files /dev/null and b/Textures/Breasts/Unused Scale/breasts_scalie_large_right_south.png differ
diff --git a/Textures/Breasts/Unused Scale/breasts_scalie_micro_left_east.png b/Textures/Breasts/Unused Scale/breasts_scalie_micro_left_east.png
new file mode 100644
index 0000000..e4ad123
Binary files /dev/null and b/Textures/Breasts/Unused Scale/breasts_scalie_micro_left_east.png differ
diff --git a/Textures/Breasts/Unused Scale/breasts_scalie_micro_left_north.png b/Textures/Breasts/Unused Scale/breasts_scalie_micro_left_north.png
new file mode 100644
index 0000000..8672292
Binary files /dev/null and b/Textures/Breasts/Unused Scale/breasts_scalie_micro_left_north.png differ
diff --git a/Textures/Breasts/Unused Scale/breasts_scalie_micro_left_south.png b/Textures/Breasts/Unused Scale/breasts_scalie_micro_left_south.png
new file mode 100644
index 0000000..a5e6833
Binary files /dev/null and b/Textures/Breasts/Unused Scale/breasts_scalie_micro_left_south.png differ
diff --git a/Textures/Breasts/Unused Scale/breasts_scalie_micro_right_east.png b/Textures/Breasts/Unused Scale/breasts_scalie_micro_right_east.png
new file mode 100644
index 0000000..8672292
Binary files /dev/null and b/Textures/Breasts/Unused Scale/breasts_scalie_micro_right_east.png differ
diff --git a/Textures/Breasts/Unused Scale/breasts_scalie_micro_right_north.png b/Textures/Breasts/Unused Scale/breasts_scalie_micro_right_north.png
new file mode 100644
index 0000000..8672292
Binary files /dev/null and b/Textures/Breasts/Unused Scale/breasts_scalie_micro_right_north.png differ
diff --git a/Textures/Breasts/Unused Scale/breasts_scalie_micro_right_south.png b/Textures/Breasts/Unused Scale/breasts_scalie_micro_right_south.png
new file mode 100644
index 0000000..d1dd599
Binary files /dev/null and b/Textures/Breasts/Unused Scale/breasts_scalie_micro_right_south.png differ
diff --git a/Textures/Breasts/Unused Scale/breasts_scalie_small_left_east.png b/Textures/Breasts/Unused Scale/breasts_scalie_small_left_east.png
new file mode 100644
index 0000000..beffe9c
Binary files /dev/null and b/Textures/Breasts/Unused Scale/breasts_scalie_small_left_east.png differ
diff --git a/Textures/Breasts/Unused Scale/breasts_scalie_small_left_north.png b/Textures/Breasts/Unused Scale/breasts_scalie_small_left_north.png
new file mode 100644
index 0000000..e3c0014
Binary files /dev/null and b/Textures/Breasts/Unused Scale/breasts_scalie_small_left_north.png differ
diff --git a/Textures/Breasts/Unused Scale/breasts_scalie_small_left_south.png b/Textures/Breasts/Unused Scale/breasts_scalie_small_left_south.png
new file mode 100644
index 0000000..09ac663
Binary files /dev/null and b/Textures/Breasts/Unused Scale/breasts_scalie_small_left_south.png differ
diff --git a/Textures/Breasts/Unused Scale/breasts_scalie_small_right_east.png b/Textures/Breasts/Unused Scale/breasts_scalie_small_right_east.png
new file mode 100644
index 0000000..8672292
Binary files /dev/null and b/Textures/Breasts/Unused Scale/breasts_scalie_small_right_east.png differ
diff --git a/Textures/Breasts/Unused Scale/breasts_scalie_small_right_north.png b/Textures/Breasts/Unused Scale/breasts_scalie_small_right_north.png
new file mode 100644
index 0000000..d1fe073
Binary files /dev/null and b/Textures/Breasts/Unused Scale/breasts_scalie_small_right_north.png differ
diff --git a/Textures/Breasts/Unused Scale/breasts_scalie_small_right_south.png b/Textures/Breasts/Unused Scale/breasts_scalie_small_right_south.png
new file mode 100644
index 0000000..ecba523
Binary files /dev/null and b/Textures/Breasts/Unused Scale/breasts_scalie_small_right_south.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_huge_left_east.png b/Textures/Breasts/Unused Udders/breasts_udder_huge_left_east.png
new file mode 100644
index 0000000..27b2ac8
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_huge_left_east.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_huge_left_north.png b/Textures/Breasts/Unused Udders/breasts_udder_huge_left_north.png
new file mode 100644
index 0000000..33b5f71
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_huge_left_north.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_huge_left_south.png b/Textures/Breasts/Unused Udders/breasts_udder_huge_left_south.png
new file mode 100644
index 0000000..80dc339
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_huge_left_south.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_huge_right_east.png b/Textures/Breasts/Unused Udders/breasts_udder_huge_right_east.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_huge_right_east.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_huge_right_north.png b/Textures/Breasts/Unused Udders/breasts_udder_huge_right_north.png
new file mode 100644
index 0000000..8e5e6de
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_huge_right_north.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_huge_right_south.png b/Textures/Breasts/Unused Udders/breasts_udder_huge_right_south.png
new file mode 100644
index 0000000..dfc2d16
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_huge_right_south.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_large_left_east.png b/Textures/Breasts/Unused Udders/breasts_udder_large_left_east.png
new file mode 100644
index 0000000..a0842fa
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_large_left_east.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_large_left_north.png b/Textures/Breasts/Unused Udders/breasts_udder_large_left_north.png
new file mode 100644
index 0000000..8d1e5cd
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_large_left_north.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_large_left_south.png b/Textures/Breasts/Unused Udders/breasts_udder_large_left_south.png
new file mode 100644
index 0000000..fdaba62
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_large_left_south.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_large_right_east.png b/Textures/Breasts/Unused Udders/breasts_udder_large_right_east.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_large_right_east.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_large_right_north.png b/Textures/Breasts/Unused Udders/breasts_udder_large_right_north.png
new file mode 100644
index 0000000..5aa23fa
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_large_right_north.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_large_right_south.png b/Textures/Breasts/Unused Udders/breasts_udder_large_right_south.png
new file mode 100644
index 0000000..277d89f
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_large_right_south.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_left_east.png b/Textures/Breasts/Unused Udders/breasts_udder_left_east.png
new file mode 100644
index 0000000..c941859
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_left_east.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_left_north.png b/Textures/Breasts/Unused Udders/breasts_udder_left_north.png
new file mode 100644
index 0000000..94f905d
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_left_north.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_left_south.png b/Textures/Breasts/Unused Udders/breasts_udder_left_south.png
new file mode 100644
index 0000000..f5d40d2
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_left_south.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_micro_left_east.png b/Textures/Breasts/Unused Udders/breasts_udder_micro_left_east.png
new file mode 100644
index 0000000..9ade1c9
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_micro_left_east.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_micro_left_north.png b/Textures/Breasts/Unused Udders/breasts_udder_micro_left_north.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_micro_left_north.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_micro_left_south.png b/Textures/Breasts/Unused Udders/breasts_udder_micro_left_south.png
new file mode 100644
index 0000000..807dbb0
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_micro_left_south.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_micro_right_east.png b/Textures/Breasts/Unused Udders/breasts_udder_micro_right_east.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_micro_right_east.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_micro_right_north.png b/Textures/Breasts/Unused Udders/breasts_udder_micro_right_north.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_micro_right_north.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_micro_right_south.png b/Textures/Breasts/Unused Udders/breasts_udder_micro_right_south.png
new file mode 100644
index 0000000..210f17e
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_micro_right_south.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_oversized_left_east.png b/Textures/Breasts/Unused Udders/breasts_udder_oversized_left_east.png
new file mode 100644
index 0000000..5476a0b
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_oversized_left_east.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_oversized_left_north.png b/Textures/Breasts/Unused Udders/breasts_udder_oversized_left_north.png
new file mode 100644
index 0000000..559a6f5
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_oversized_left_north.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_oversized_left_south.png b/Textures/Breasts/Unused Udders/breasts_udder_oversized_left_south.png
new file mode 100644
index 0000000..63e1b7e
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_oversized_left_south.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_oversized_right_east.png b/Textures/Breasts/Unused Udders/breasts_udder_oversized_right_east.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_oversized_right_east.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_oversized_right_north.png b/Textures/Breasts/Unused Udders/breasts_udder_oversized_right_north.png
new file mode 100644
index 0000000..b1cb37c
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_oversized_right_north.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_oversized_right_south.png b/Textures/Breasts/Unused Udders/breasts_udder_oversized_right_south.png
new file mode 100644
index 0000000..e254c39
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_oversized_right_south.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_right_east.png b/Textures/Breasts/Unused Udders/breasts_udder_right_east.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_right_east.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_right_north.png b/Textures/Breasts/Unused Udders/breasts_udder_right_north.png
new file mode 100644
index 0000000..3b84dad
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_right_north.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_right_south.png b/Textures/Breasts/Unused Udders/breasts_udder_right_south.png
new file mode 100644
index 0000000..6e1132f
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_right_south.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_small_left_east.png b/Textures/Breasts/Unused Udders/breasts_udder_small_left_east.png
new file mode 100644
index 0000000..6192302
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_small_left_east.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_small_left_north.png b/Textures/Breasts/Unused Udders/breasts_udder_small_left_north.png
new file mode 100644
index 0000000..810b6a6
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_small_left_north.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_small_left_south.png b/Textures/Breasts/Unused Udders/breasts_udder_small_left_south.png
new file mode 100644
index 0000000..11abdd1
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_small_left_south.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_small_right_east.png b/Textures/Breasts/Unused Udders/breasts_udder_small_right_east.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_small_right_east.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_small_right_north.png b/Textures/Breasts/Unused Udders/breasts_udder_small_right_north.png
new file mode 100644
index 0000000..f678afb
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_small_right_north.png differ
diff --git a/Textures/Breasts/Unused Udders/breasts_udder_small_right_south.png b/Textures/Breasts/Unused Udders/breasts_udder_small_right_south.png
new file mode 100644
index 0000000..4390866
Binary files /dev/null and b/Textures/Breasts/Unused Udders/breasts_udder_small_right_south.png differ
diff --git a/Textures/Breasts/wip/breasts_average_left_Lactating_east.png b/Textures/Breasts/wip/breasts_average_left_Lactating_east.png
new file mode 100644
index 0000000..9e707de
Binary files /dev/null and b/Textures/Breasts/wip/breasts_average_left_Lactating_east.png differ
diff --git a/Textures/Breasts/wip/breasts_average_left_Lactating_north.png b/Textures/Breasts/wip/breasts_average_left_Lactating_north.png
new file mode 100644
index 0000000..8bbe3a2
Binary files /dev/null and b/Textures/Breasts/wip/breasts_average_left_Lactating_north.png differ
diff --git a/Textures/Breasts/wip/breasts_average_left_Lactating_south.png b/Textures/Breasts/wip/breasts_average_left_Lactating_south.png
new file mode 100644
index 0000000..88ff4d0
Binary files /dev/null and b/Textures/Breasts/wip/breasts_average_left_Lactating_south.png differ
diff --git a/Textures/Breasts/wip/breasts_average_left_Lactatingm_east.png b/Textures/Breasts/wip/breasts_average_left_Lactatingm_east.png
new file mode 100644
index 0000000..8682580
Binary files /dev/null and b/Textures/Breasts/wip/breasts_average_left_Lactatingm_east.png differ
diff --git a/Textures/Breasts/wip/breasts_average_left_Lactatingm_south.png b/Textures/Breasts/wip/breasts_average_left_Lactatingm_south.png
new file mode 100644
index 0000000..acad6b5
Binary files /dev/null and b/Textures/Breasts/wip/breasts_average_left_Lactatingm_south.png differ
diff --git a/Textures/Breasts/wip/breasts_average_right_Lactating_east.png b/Textures/Breasts/wip/breasts_average_right_Lactating_east.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Breasts/wip/breasts_average_right_Lactating_east.png differ
diff --git a/Textures/Breasts/wip/breasts_average_right_Lactating_north.png b/Textures/Breasts/wip/breasts_average_right_Lactating_north.png
new file mode 100644
index 0000000..3651cb2
Binary files /dev/null and b/Textures/Breasts/wip/breasts_average_right_Lactating_north.png differ
diff --git a/Textures/Breasts/wip/breasts_average_right_Lactating_south.png b/Textures/Breasts/wip/breasts_average_right_Lactating_south.png
new file mode 100644
index 0000000..0f26c78
Binary files /dev/null and b/Textures/Breasts/wip/breasts_average_right_Lactating_south.png differ
diff --git a/Textures/Breasts/wip/breasts_average_right_Lactatingm_south.png b/Textures/Breasts/wip/breasts_average_right_Lactatingm_south.png
new file mode 100644
index 0000000..ba89d62
Binary files /dev/null and b/Textures/Breasts/wip/breasts_average_right_Lactatingm_south.png differ
diff --git a/Textures/Bukkake/splatch_1.png b/Textures/Bukkake/splatch_1.png
new file mode 100644
index 0000000..9cfcea8
Binary files /dev/null and b/Textures/Bukkake/splatch_1.png differ
diff --git a/Textures/Bukkake/splatch_2.png b/Textures/Bukkake/splatch_2.png
new file mode 100644
index 0000000..064448c
Binary files /dev/null and b/Textures/Bukkake/splatch_2.png differ
diff --git a/Textures/Bukkake/splatch_3.png b/Textures/Bukkake/splatch_3.png
new file mode 100644
index 0000000..168e140
Binary files /dev/null and b/Textures/Bukkake/splatch_3.png differ
diff --git a/Textures/Bukkake/splatch_4.png b/Textures/Bukkake/splatch_4.png
new file mode 100644
index 0000000..b771a4c
Binary files /dev/null and b/Textures/Bukkake/splatch_4.png differ
diff --git a/Textures/Bukkake/splatch_5.png b/Textures/Bukkake/splatch_5.png
new file mode 100644
index 0000000..3719e39
Binary files /dev/null and b/Textures/Bukkake/splatch_5.png differ
diff --git a/Textures/Bukkake/splatch_6.png b/Textures/Bukkake/splatch_6.png
new file mode 100644
index 0000000..cb5a8cd
Binary files /dev/null and b/Textures/Bukkake/splatch_6.png differ
diff --git a/Textures/Bukkake/splatch_7.png b/Textures/Bukkake/splatch_7.png
new file mode 100644
index 0000000..271b1c5
Binary files /dev/null and b/Textures/Bukkake/splatch_7.png differ
diff --git a/Textures/Bukkake/splatch_8.png b/Textures/Bukkake/splatch_8.png
new file mode 100644
index 0000000..34e93be
Binary files /dev/null and b/Textures/Bukkake/splatch_8.png differ
diff --git a/Textures/Bukkake/splatch_9.png b/Textures/Bukkake/splatch_9.png
new file mode 100644
index 0000000..0a582f2
Binary files /dev/null and b/Textures/Bukkake/splatch_9.png differ
diff --git a/Textures/Feet/default.png b/Textures/Feet/default.png
new file mode 100644
index 0000000..116740f
Binary files /dev/null and b/Textures/Feet/default.png differ
diff --git a/Textures/Genitals.old/Pubes/Pubes1_east.png b/Textures/Genitals.old/Pubes/Pubes1_east.png
new file mode 100644
index 0000000..ad7d5a2
Binary files /dev/null and b/Textures/Genitals.old/Pubes/Pubes1_east.png differ
diff --git a/Textures/Genitals.old/Pubes/Pubes1_north.png b/Textures/Genitals.old/Pubes/Pubes1_north.png
new file mode 100644
index 0000000..ad7d5a2
Binary files /dev/null and b/Textures/Genitals.old/Pubes/Pubes1_north.png differ
diff --git a/Textures/Genitals.old/Pubes/Pubes1_south.png b/Textures/Genitals.old/Pubes/Pubes1_south.png
new file mode 100644
index 0000000..b722c29
Binary files /dev/null and b/Textures/Genitals.old/Pubes/Pubes1_south.png differ
diff --git a/Textures/Genitals.old/Pubes/Pubes2_east.png b/Textures/Genitals.old/Pubes/Pubes2_east.png
new file mode 100644
index 0000000..ad7d5a2
Binary files /dev/null and b/Textures/Genitals.old/Pubes/Pubes2_east.png differ
diff --git a/Textures/Genitals.old/Pubes/Pubes2_north.png b/Textures/Genitals.old/Pubes/Pubes2_north.png
new file mode 100644
index 0000000..ad7d5a2
Binary files /dev/null and b/Textures/Genitals.old/Pubes/Pubes2_north.png differ
diff --git a/Textures/Genitals.old/Pubes/Pubes2_south.png b/Textures/Genitals.old/Pubes/Pubes2_south.png
new file mode 100644
index 0000000..3666dd5
Binary files /dev/null and b/Textures/Genitals.old/Pubes/Pubes2_south.png differ
diff --git a/Textures/Genitals.old/Pubes/Pubes3_east.png b/Textures/Genitals.old/Pubes/Pubes3_east.png
new file mode 100644
index 0000000..ad7d5a2
Binary files /dev/null and b/Textures/Genitals.old/Pubes/Pubes3_east.png differ
diff --git a/Textures/Genitals.old/Pubes/Pubes3_north.png b/Textures/Genitals.old/Pubes/Pubes3_north.png
new file mode 100644
index 0000000..ad7d5a2
Binary files /dev/null and b/Textures/Genitals.old/Pubes/Pubes3_north.png differ
diff --git a/Textures/Genitals.old/Pubes/Pubes3_south.png b/Textures/Genitals.old/Pubes/Pubes3_south.png
new file mode 100644
index 0000000..1e5538d
Binary files /dev/null and b/Textures/Genitals.old/Pubes/Pubes3_south.png differ
diff --git a/Textures/Genitals.old/Pubes/Pubes4_east.png b/Textures/Genitals.old/Pubes/Pubes4_east.png
new file mode 100644
index 0000000..b758bb8
Binary files /dev/null and b/Textures/Genitals.old/Pubes/Pubes4_east.png differ
diff --git a/Textures/Genitals.old/Pubes/Pubes4_north.png b/Textures/Genitals.old/Pubes/Pubes4_north.png
new file mode 100644
index 0000000..ad7d5a2
Binary files /dev/null and b/Textures/Genitals.old/Pubes/Pubes4_north.png differ
diff --git a/Textures/Genitals.old/Pubes/Pubes4_south.png b/Textures/Genitals.old/Pubes/Pubes4_south.png
new file mode 100644
index 0000000..cbf1f49
Binary files /dev/null and b/Textures/Genitals.old/Pubes/Pubes4_south.png differ
diff --git a/Textures/Genitals.old/Pubes/Pubes5_east.png b/Textures/Genitals.old/Pubes/Pubes5_east.png
new file mode 100644
index 0000000..afec259
Binary files /dev/null and b/Textures/Genitals.old/Pubes/Pubes5_east.png differ
diff --git a/Textures/Genitals.old/Pubes/Pubes5_north.png b/Textures/Genitals.old/Pubes/Pubes5_north.png
new file mode 100644
index 0000000..d87da9b
Binary files /dev/null and b/Textures/Genitals.old/Pubes/Pubes5_north.png differ
diff --git a/Textures/Genitals.old/Pubes/Pubes5_south.png b/Textures/Genitals.old/Pubes/Pubes5_south.png
new file mode 100644
index 0000000..f462075
Binary files /dev/null and b/Textures/Genitals.old/Pubes/Pubes5_south.png differ
diff --git a/Textures/Genitals.old/Pubes/Pubes_east.png b/Textures/Genitals.old/Pubes/Pubes_east.png
new file mode 100644
index 0000000..ad7d5a2
Binary files /dev/null and b/Textures/Genitals.old/Pubes/Pubes_east.png differ
diff --git a/Textures/Genitals.old/Pubes/Pubes_north.png b/Textures/Genitals.old/Pubes/Pubes_north.png
new file mode 100644
index 0000000..ad7d5a2
Binary files /dev/null and b/Textures/Genitals.old/Pubes/Pubes_north.png differ
diff --git a/Textures/Genitals.old/Pubes/Pubes_south.png b/Textures/Genitals.old/Pubes/Pubes_south.png
new file mode 100644
index 0000000..ad7d5a2
Binary files /dev/null and b/Textures/Genitals.old/Pubes/Pubes_south.png differ
diff --git a/Textures/Genitals.old/penis_average_east.png b/Textures/Genitals.old/penis_average_east.png
new file mode 100644
index 0000000..a3e9737
Binary files /dev/null and b/Textures/Genitals.old/penis_average_east.png differ
diff --git a/Textures/Genitals.old/penis_average_north.png b/Textures/Genitals.old/penis_average_north.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Genitals.old/penis_average_north.png differ
diff --git a/Textures/Genitals.old/penis_average_south.png b/Textures/Genitals.old/penis_average_south.png
new file mode 100644
index 0000000..4906e0d
Binary files /dev/null and b/Textures/Genitals.old/penis_average_south.png differ
diff --git a/Textures/Genitals.old/penis_oversized_east.png b/Textures/Genitals.old/penis_oversized_east.png
new file mode 100644
index 0000000..dbc8655
Binary files /dev/null and b/Textures/Genitals.old/penis_oversized_east.png differ
diff --git a/Textures/Genitals.old/penis_oversized_north.png b/Textures/Genitals.old/penis_oversized_north.png
new file mode 100644
index 0000000..7ac7d52
Binary files /dev/null and b/Textures/Genitals.old/penis_oversized_north.png differ
diff --git a/Textures/Genitals.old/penis_oversized_south.png b/Textures/Genitals.old/penis_oversized_south.png
new file mode 100644
index 0000000..338fc55
Binary files /dev/null and b/Textures/Genitals.old/penis_oversized_south.png differ
diff --git a/Textures/Genitals.old/vagina_arco_east.png b/Textures/Genitals.old/vagina_arco_east.png
new file mode 100644
index 0000000..4d581f2
Binary files /dev/null and b/Textures/Genitals.old/vagina_arco_east.png differ
diff --git a/Textures/Genitals.old/vagina_arco_north.png b/Textures/Genitals.old/vagina_arco_north.png
new file mode 100644
index 0000000..04ba37f
Binary files /dev/null and b/Textures/Genitals.old/vagina_arco_north.png differ
diff --git a/Textures/Genitals.old/vagina_arco_south.png b/Textures/Genitals.old/vagina_arco_south.png
new file mode 100644
index 0000000..835953e
Binary files /dev/null and b/Textures/Genitals.old/vagina_arco_south.png differ
diff --git a/Textures/Genitals.old/vagina_bio_east.png b/Textures/Genitals.old/vagina_bio_east.png
new file mode 100644
index 0000000..4d581f2
Binary files /dev/null and b/Textures/Genitals.old/vagina_bio_east.png differ
diff --git a/Textures/Genitals.old/vagina_bio_north.png b/Textures/Genitals.old/vagina_bio_north.png
new file mode 100644
index 0000000..7498e80
Binary files /dev/null and b/Textures/Genitals.old/vagina_bio_north.png differ
diff --git a/Textures/Genitals.old/vagina_bio_south.png b/Textures/Genitals.old/vagina_bio_south.png
new file mode 100644
index 0000000..49f9539
Binary files /dev/null and b/Textures/Genitals.old/vagina_bio_south.png differ
diff --git a/Textures/Genitals.old/vagina_cat_east.png b/Textures/Genitals.old/vagina_cat_east.png
new file mode 100644
index 0000000..4d581f2
Binary files /dev/null and b/Textures/Genitals.old/vagina_cat_east.png differ
diff --git a/Textures/Genitals.old/vagina_cat_north.png b/Textures/Genitals.old/vagina_cat_north.png
new file mode 100644
index 0000000..03d66ed
Binary files /dev/null and b/Textures/Genitals.old/vagina_cat_north.png differ
diff --git a/Textures/Genitals.old/vagina_cat_south.png b/Textures/Genitals.old/vagina_cat_south.png
new file mode 100644
index 0000000..6d5b675
Binary files /dev/null and b/Textures/Genitals.old/vagina_cat_south.png differ
diff --git a/Textures/Genitals.old/vagina_common_east.png b/Textures/Genitals.old/vagina_common_east.png
new file mode 100644
index 0000000..4d581f2
Binary files /dev/null and b/Textures/Genitals.old/vagina_common_east.png differ
diff --git a/Textures/Genitals.old/vagina_common_north.png b/Textures/Genitals.old/vagina_common_north.png
new file mode 100644
index 0000000..48cc4f6
Binary files /dev/null and b/Textures/Genitals.old/vagina_common_north.png differ
diff --git a/Textures/Genitals.old/vagina_common_south.png b/Textures/Genitals.old/vagina_common_south.png
new file mode 100644
index 0000000..6877ad7
Binary files /dev/null and b/Textures/Genitals.old/vagina_common_south.png differ
diff --git a/Textures/Genitals.old/vagina_dog_east.png b/Textures/Genitals.old/vagina_dog_east.png
new file mode 100644
index 0000000..427d9ee
Binary files /dev/null and b/Textures/Genitals.old/vagina_dog_east.png differ
diff --git a/Textures/Genitals.old/vagina_dog_north.png b/Textures/Genitals.old/vagina_dog_north.png
new file mode 100644
index 0000000..b748a5a
Binary files /dev/null and b/Textures/Genitals.old/vagina_dog_north.png differ
diff --git a/Textures/Genitals.old/vagina_dog_south.png b/Textures/Genitals.old/vagina_dog_south.png
new file mode 100644
index 0000000..e2ea36d
Binary files /dev/null and b/Textures/Genitals.old/vagina_dog_south.png differ
diff --git a/Textures/Genitals.old/vagina_gaping_east.png b/Textures/Genitals.old/vagina_gaping_east.png
new file mode 100644
index 0000000..4d581f2
Binary files /dev/null and b/Textures/Genitals.old/vagina_gaping_east.png differ
diff --git a/Textures/Genitals.old/vagina_gaping_north.png b/Textures/Genitals.old/vagina_gaping_north.png
new file mode 100644
index 0000000..d721bc9
Binary files /dev/null and b/Textures/Genitals.old/vagina_gaping_north.png differ
diff --git a/Textures/Genitals.old/vagina_gaping_south.png b/Textures/Genitals.old/vagina_gaping_south.png
new file mode 100644
index 0000000..26b3bc5
Binary files /dev/null and b/Textures/Genitals.old/vagina_gaping_south.png differ
diff --git a/Textures/Genitals.old/vagina_horse_east.png b/Textures/Genitals.old/vagina_horse_east.png
new file mode 100644
index 0000000..4d581f2
Binary files /dev/null and b/Textures/Genitals.old/vagina_horse_east.png differ
diff --git a/Textures/Genitals.old/vagina_horse_north.png b/Textures/Genitals.old/vagina_horse_north.png
new file mode 100644
index 0000000..5947fad
Binary files /dev/null and b/Textures/Genitals.old/vagina_horse_north.png differ
diff --git a/Textures/Genitals.old/vagina_horse_south.png b/Textures/Genitals.old/vagina_horse_south.png
new file mode 100644
index 0000000..5bbed73
Binary files /dev/null and b/Textures/Genitals.old/vagina_horse_south.png differ
diff --git a/Textures/Genitals.old/vagina_hyd_east.png b/Textures/Genitals.old/vagina_hyd_east.png
new file mode 100644
index 0000000..4d581f2
Binary files /dev/null and b/Textures/Genitals.old/vagina_hyd_east.png differ
diff --git a/Textures/Genitals.old/vagina_hyd_eastm.png b/Textures/Genitals.old/vagina_hyd_eastm.png
new file mode 100644
index 0000000..4d581f2
Binary files /dev/null and b/Textures/Genitals.old/vagina_hyd_eastm.png differ
diff --git a/Textures/Genitals.old/vagina_hyd_north.png b/Textures/Genitals.old/vagina_hyd_north.png
new file mode 100644
index 0000000..2a58c13
Binary files /dev/null and b/Textures/Genitals.old/vagina_hyd_north.png differ
diff --git a/Textures/Genitals.old/vagina_hyd_northm.png b/Textures/Genitals.old/vagina_hyd_northm.png
new file mode 100644
index 0000000..4d581f2
Binary files /dev/null and b/Textures/Genitals.old/vagina_hyd_northm.png differ
diff --git a/Textures/Genitals.old/vagina_hyd_south.png b/Textures/Genitals.old/vagina_hyd_south.png
new file mode 100644
index 0000000..df2ef0c
Binary files /dev/null and b/Textures/Genitals.old/vagina_hyd_south.png differ
diff --git a/Textures/Genitals.old/vagina_hyd_southm.png b/Textures/Genitals.old/vagina_hyd_southm.png
new file mode 100644
index 0000000..4d581f2
Binary files /dev/null and b/Textures/Genitals.old/vagina_hyd_southm.png differ
diff --git a/Textures/Genitals.old/vagina_insect_east.png b/Textures/Genitals.old/vagina_insect_east.png
new file mode 100644
index 0000000..18e10be
Binary files /dev/null and b/Textures/Genitals.old/vagina_insect_east.png differ
diff --git a/Textures/Genitals.old/vagina_insect_north.png b/Textures/Genitals.old/vagina_insect_north.png
new file mode 100644
index 0000000..4fc6bb0
Binary files /dev/null and b/Textures/Genitals.old/vagina_insect_north.png differ
diff --git a/Textures/Genitals.old/vagina_insect_south.png b/Textures/Genitals.old/vagina_insect_south.png
new file mode 100644
index 0000000..f27f6f1
Binary files /dev/null and b/Textures/Genitals.old/vagina_insect_south.png differ
diff --git a/Textures/Genitals.old/vagina_lips_east.png b/Textures/Genitals.old/vagina_lips_east.png
new file mode 100644
index 0000000..4d581f2
Binary files /dev/null and b/Textures/Genitals.old/vagina_lips_east.png differ
diff --git a/Textures/Genitals.old/vagina_lips_north.png b/Textures/Genitals.old/vagina_lips_north.png
new file mode 100644
index 0000000..fc11e88
Binary files /dev/null and b/Textures/Genitals.old/vagina_lips_north.png differ
diff --git a/Textures/Genitals.old/vagina_lips_south.png b/Textures/Genitals.old/vagina_lips_south.png
new file mode 100644
index 0000000..a94c3b1
Binary files /dev/null and b/Textures/Genitals.old/vagina_lips_south.png differ
diff --git a/Textures/Genitals.old/vagina_micro_east.png b/Textures/Genitals.old/vagina_micro_east.png
new file mode 100644
index 0000000..4d581f2
Binary files /dev/null and b/Textures/Genitals.old/vagina_micro_east.png differ
diff --git a/Textures/Genitals.old/vagina_micro_north.png b/Textures/Genitals.old/vagina_micro_north.png
new file mode 100644
index 0000000..8b07001
Binary files /dev/null and b/Textures/Genitals.old/vagina_micro_north.png differ
diff --git a/Textures/Genitals.old/vagina_micro_south.png b/Textures/Genitals.old/vagina_micro_south.png
new file mode 100644
index 0000000..a90666c
Binary files /dev/null and b/Textures/Genitals.old/vagina_micro_south.png differ
diff --git a/Textures/Genitals.old/vagina_oversized_east.png b/Textures/Genitals.old/vagina_oversized_east.png
new file mode 100644
index 0000000..4d581f2
Binary files /dev/null and b/Textures/Genitals.old/vagina_oversized_east.png differ
diff --git a/Textures/Genitals.old/vagina_oversized_north.png b/Textures/Genitals.old/vagina_oversized_north.png
new file mode 100644
index 0000000..1faaab6
Binary files /dev/null and b/Textures/Genitals.old/vagina_oversized_north.png differ
diff --git a/Textures/Genitals.old/vagina_oversized_south.png b/Textures/Genitals.old/vagina_oversized_south.png
new file mode 100644
index 0000000..7df4d1b
Binary files /dev/null and b/Textures/Genitals.old/vagina_oversized_south.png differ
diff --git a/Textures/Genitals.old/vagina_tight_east.png b/Textures/Genitals.old/vagina_tight_east.png
new file mode 100644
index 0000000..4d581f2
Binary files /dev/null and b/Textures/Genitals.old/vagina_tight_east.png differ
diff --git a/Textures/Genitals.old/vagina_tight_north .png b/Textures/Genitals.old/vagina_tight_north .png
new file mode 100644
index 0000000..6298602
Binary files /dev/null and b/Textures/Genitals.old/vagina_tight_north .png differ
diff --git a/Textures/Genitals.old/vagina_tight_south .png b/Textures/Genitals.old/vagina_tight_south .png
new file mode 100644
index 0000000..fc34e2a
Binary files /dev/null and b/Textures/Genitals.old/vagina_tight_south .png differ
diff --git a/Textures/Genitals/Flaccid/penis_average_flaccid_Female_east.png b/Textures/Genitals/Flaccid/penis_average_flaccid_Female_east.png
new file mode 100644
index 0000000..afa426e
Binary files /dev/null and b/Textures/Genitals/Flaccid/penis_average_flaccid_Female_east.png differ
diff --git a/Textures/Genitals/Flaccid/penis_average_flaccid_Female_north.png b/Textures/Genitals/Flaccid/penis_average_flaccid_Female_north.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Genitals/Flaccid/penis_average_flaccid_Female_north.png differ
diff --git a/Textures/Genitals/Flaccid/penis_average_flaccid_Female_south.png b/Textures/Genitals/Flaccid/penis_average_flaccid_Female_south.png
new file mode 100644
index 0000000..f05ec4b
Binary files /dev/null and b/Textures/Genitals/Flaccid/penis_average_flaccid_Female_south.png differ
diff --git a/Textures/Genitals/Flaccid/penis_huge_flaccid_Female_east.png b/Textures/Genitals/Flaccid/penis_huge_flaccid_Female_east.png
new file mode 100644
index 0000000..c3b7f2d
Binary files /dev/null and b/Textures/Genitals/Flaccid/penis_huge_flaccid_Female_east.png differ
diff --git a/Textures/Genitals/Flaccid/penis_huge_flaccid_Female_north.png b/Textures/Genitals/Flaccid/penis_huge_flaccid_Female_north.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Genitals/Flaccid/penis_huge_flaccid_Female_north.png differ
diff --git a/Textures/Genitals/Flaccid/penis_huge_flaccid_Female_south.png b/Textures/Genitals/Flaccid/penis_huge_flaccid_Female_south.png
new file mode 100644
index 0000000..1d803ed
Binary files /dev/null and b/Textures/Genitals/Flaccid/penis_huge_flaccid_Female_south.png differ
diff --git a/Textures/Genitals/Flaccid/penis_large_flaccid_Female_east.png b/Textures/Genitals/Flaccid/penis_large_flaccid_Female_east.png
new file mode 100644
index 0000000..2a5c363
Binary files /dev/null and b/Textures/Genitals/Flaccid/penis_large_flaccid_Female_east.png differ
diff --git a/Textures/Genitals/Flaccid/penis_large_flaccid_Female_north.png b/Textures/Genitals/Flaccid/penis_large_flaccid_Female_north.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Genitals/Flaccid/penis_large_flaccid_Female_north.png differ
diff --git a/Textures/Genitals/Flaccid/penis_large_flaccid_Female_south.png b/Textures/Genitals/Flaccid/penis_large_flaccid_Female_south.png
new file mode 100644
index 0000000..b977b13
Binary files /dev/null and b/Textures/Genitals/Flaccid/penis_large_flaccid_Female_south.png differ
diff --git a/Textures/Genitals/Flaccid/penis_micro_flaccid_Female_east.png b/Textures/Genitals/Flaccid/penis_micro_flaccid_Female_east.png
new file mode 100644
index 0000000..5eb0265
Binary files /dev/null and b/Textures/Genitals/Flaccid/penis_micro_flaccid_Female_east.png differ
diff --git a/Textures/Genitals/Flaccid/penis_micro_flaccid_Female_north.png b/Textures/Genitals/Flaccid/penis_micro_flaccid_Female_north.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Genitals/Flaccid/penis_micro_flaccid_Female_north.png differ
diff --git a/Textures/Genitals/Flaccid/penis_micro_flaccid_Female_south.png b/Textures/Genitals/Flaccid/penis_micro_flaccid_Female_south.png
new file mode 100644
index 0000000..1c0ea74
Binary files /dev/null and b/Textures/Genitals/Flaccid/penis_micro_flaccid_Female_south.png differ
diff --git a/Textures/Genitals/Flaccid/penis_small_flaccid_Female_east.png b/Textures/Genitals/Flaccid/penis_small_flaccid_Female_east.png
new file mode 100644
index 0000000..5eb0265
Binary files /dev/null and b/Textures/Genitals/Flaccid/penis_small_flaccid_Female_east.png differ
diff --git a/Textures/Genitals/Flaccid/penis_small_flaccid_Female_north.png b/Textures/Genitals/Flaccid/penis_small_flaccid_Female_north.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Genitals/Flaccid/penis_small_flaccid_Female_north.png differ
diff --git a/Textures/Genitals/Flaccid/penis_small_flaccid_Female_south.png b/Textures/Genitals/Flaccid/penis_small_flaccid_Female_south.png
new file mode 100644
index 0000000..1c0ea74
Binary files /dev/null and b/Textures/Genitals/Flaccid/penis_small_flaccid_Female_south.png differ
diff --git a/Textures/Genitals/Pubes/Pubes1_east.png b/Textures/Genitals/Pubes/Pubes1_east.png
new file mode 100644
index 0000000..ad7d5a2
Binary files /dev/null and b/Textures/Genitals/Pubes/Pubes1_east.png differ
diff --git a/Textures/Genitals/Pubes/Pubes1_north.png b/Textures/Genitals/Pubes/Pubes1_north.png
new file mode 100644
index 0000000..ad7d5a2
Binary files /dev/null and b/Textures/Genitals/Pubes/Pubes1_north.png differ
diff --git a/Textures/Genitals/Pubes/Pubes1_south.png b/Textures/Genitals/Pubes/Pubes1_south.png
new file mode 100644
index 0000000..53dbd68
Binary files /dev/null and b/Textures/Genitals/Pubes/Pubes1_south.png differ
diff --git a/Textures/Genitals/Pubes/Pubes2_east.png b/Textures/Genitals/Pubes/Pubes2_east.png
new file mode 100644
index 0000000..ad7d5a2
Binary files /dev/null and b/Textures/Genitals/Pubes/Pubes2_east.png differ
diff --git a/Textures/Genitals/Pubes/Pubes2_north.png b/Textures/Genitals/Pubes/Pubes2_north.png
new file mode 100644
index 0000000..ad7d5a2
Binary files /dev/null and b/Textures/Genitals/Pubes/Pubes2_north.png differ
diff --git a/Textures/Genitals/Pubes/Pubes2_south.png b/Textures/Genitals/Pubes/Pubes2_south.png
new file mode 100644
index 0000000..9653264
Binary files /dev/null and b/Textures/Genitals/Pubes/Pubes2_south.png differ
diff --git a/Textures/Genitals/Pubes/Pubes3_east.png b/Textures/Genitals/Pubes/Pubes3_east.png
new file mode 100644
index 0000000..ad7d5a2
Binary files /dev/null and b/Textures/Genitals/Pubes/Pubes3_east.png differ
diff --git a/Textures/Genitals/Pubes/Pubes3_north.png b/Textures/Genitals/Pubes/Pubes3_north.png
new file mode 100644
index 0000000..ad7d5a2
Binary files /dev/null and b/Textures/Genitals/Pubes/Pubes3_north.png differ
diff --git a/Textures/Genitals/Pubes/Pubes3_south.png b/Textures/Genitals/Pubes/Pubes3_south.png
new file mode 100644
index 0000000..6facb16
Binary files /dev/null and b/Textures/Genitals/Pubes/Pubes3_south.png differ
diff --git a/Textures/Genitals/Pubes/Pubes4_Female_east.png b/Textures/Genitals/Pubes/Pubes4_Female_east.png
new file mode 100644
index 0000000..2c5b300
Binary files /dev/null and b/Textures/Genitals/Pubes/Pubes4_Female_east.png differ
diff --git a/Textures/Genitals/Pubes/Pubes4_Female_north.png b/Textures/Genitals/Pubes/Pubes4_Female_north.png
new file mode 100644
index 0000000..ad7d5a2
Binary files /dev/null and b/Textures/Genitals/Pubes/Pubes4_Female_north.png differ
diff --git a/Textures/Genitals/Pubes/Pubes4_Female_south.png b/Textures/Genitals/Pubes/Pubes4_Female_south.png
new file mode 100644
index 0000000..d17a72a
Binary files /dev/null and b/Textures/Genitals/Pubes/Pubes4_Female_south.png differ
diff --git a/Textures/Genitals/Pubes/Pubes4_east.png b/Textures/Genitals/Pubes/Pubes4_east.png
new file mode 100644
index 0000000..7dd6a3a
Binary files /dev/null and b/Textures/Genitals/Pubes/Pubes4_east.png differ
diff --git a/Textures/Genitals/Pubes/Pubes4_north.png b/Textures/Genitals/Pubes/Pubes4_north.png
new file mode 100644
index 0000000..ad7d5a2
Binary files /dev/null and b/Textures/Genitals/Pubes/Pubes4_north.png differ
diff --git a/Textures/Genitals/Pubes/Pubes4_south.png b/Textures/Genitals/Pubes/Pubes4_south.png
new file mode 100644
index 0000000..d17a72a
Binary files /dev/null and b/Textures/Genitals/Pubes/Pubes4_south.png differ
diff --git a/Textures/Genitals/Pubes/Pubes5_Female_east.png b/Textures/Genitals/Pubes/Pubes5_Female_east.png
new file mode 100644
index 0000000..9aaf1bd
Binary files /dev/null and b/Textures/Genitals/Pubes/Pubes5_Female_east.png differ
diff --git a/Textures/Genitals/Pubes/Pubes5_Female_north.png b/Textures/Genitals/Pubes/Pubes5_Female_north.png
new file mode 100644
index 0000000..d87da9b
Binary files /dev/null and b/Textures/Genitals/Pubes/Pubes5_Female_north.png differ
diff --git a/Textures/Genitals/Pubes/Pubes5_Female_south.png b/Textures/Genitals/Pubes/Pubes5_Female_south.png
new file mode 100644
index 0000000..661dc0a
Binary files /dev/null and b/Textures/Genitals/Pubes/Pubes5_Female_south.png differ
diff --git a/Textures/Genitals/Pubes/Pubes5_east.png b/Textures/Genitals/Pubes/Pubes5_east.png
new file mode 100644
index 0000000..abf4729
Binary files /dev/null and b/Textures/Genitals/Pubes/Pubes5_east.png differ
diff --git a/Textures/Genitals/Pubes/Pubes5_north.png b/Textures/Genitals/Pubes/Pubes5_north.png
new file mode 100644
index 0000000..d87da9b
Binary files /dev/null and b/Textures/Genitals/Pubes/Pubes5_north.png differ
diff --git a/Textures/Genitals/Pubes/Pubes5_south.png b/Textures/Genitals/Pubes/Pubes5_south.png
new file mode 100644
index 0000000..661dc0a
Binary files /dev/null and b/Textures/Genitals/Pubes/Pubes5_south.png differ
diff --git a/Textures/Genitals/Pubes/Pubes_east.png b/Textures/Genitals/Pubes/Pubes_east.png
new file mode 100644
index 0000000..ad7d5a2
Binary files /dev/null and b/Textures/Genitals/Pubes/Pubes_east.png differ
diff --git a/Textures/Genitals/Pubes/Pubes_north.png b/Textures/Genitals/Pubes/Pubes_north.png
new file mode 100644
index 0000000..ad7d5a2
Binary files /dev/null and b/Textures/Genitals/Pubes/Pubes_north.png differ
diff --git a/Textures/Genitals/Pubes/Pubes_south.png b/Textures/Genitals/Pubes/Pubes_south.png
new file mode 100644
index 0000000..ad7d5a2
Binary files /dev/null and b/Textures/Genitals/Pubes/Pubes_south.png differ
diff --git a/Textures/Genitals/ppunused/penis_average_east.png b/Textures/Genitals/ppunused/penis_average_east.png
new file mode 100644
index 0000000..a3e9737
Binary files /dev/null and b/Textures/Genitals/ppunused/penis_average_east.png differ
diff --git a/Textures/Genitals/ppunused/penis_average_north.png b/Textures/Genitals/ppunused/penis_average_north.png
new file mode 100644
index 0000000..5d3f50b
Binary files /dev/null and b/Textures/Genitals/ppunused/penis_average_north.png differ
diff --git a/Textures/Genitals/ppunused/penis_average_south.png b/Textures/Genitals/ppunused/penis_average_south.png
new file mode 100644
index 0000000..4906e0d
Binary files /dev/null and b/Textures/Genitals/ppunused/penis_average_south.png differ
diff --git a/Textures/Genitals/ppunused/penis_oversized_east.png b/Textures/Genitals/ppunused/penis_oversized_east.png
new file mode 100644
index 0000000..dbc8655
Binary files /dev/null and b/Textures/Genitals/ppunused/penis_oversized_east.png differ
diff --git a/Textures/Genitals/ppunused/penis_oversized_north.png b/Textures/Genitals/ppunused/penis_oversized_north.png
new file mode 100644
index 0000000..7ac7d52
Binary files /dev/null and b/Textures/Genitals/ppunused/penis_oversized_north.png differ
diff --git a/Textures/Genitals/ppunused/penis_oversized_south.png b/Textures/Genitals/ppunused/penis_oversized_south.png
new file mode 100644
index 0000000..338fc55
Binary files /dev/null and b/Textures/Genitals/ppunused/penis_oversized_south.png differ
diff --git a/Textures/Genitals/unused/vagina_cat_east.png b/Textures/Genitals/unused/vagina_cat_east.png
new file mode 100644
index 0000000..4d581f2
Binary files /dev/null and b/Textures/Genitals/unused/vagina_cat_east.png differ
diff --git a/Textures/Genitals/unused/vagina_cat_north.png b/Textures/Genitals/unused/vagina_cat_north.png
new file mode 100644
index 0000000..03d66ed
Binary files /dev/null and b/Textures/Genitals/unused/vagina_cat_north.png differ
diff --git a/Textures/Genitals/unused/vagina_cat_south.png b/Textures/Genitals/unused/vagina_cat_south.png
new file mode 100644
index 0000000..6d5b675
Binary files /dev/null and b/Textures/Genitals/unused/vagina_cat_south.png differ
diff --git a/Textures/Genitals/unused/vagina_dog_east.png b/Textures/Genitals/unused/vagina_dog_east.png
new file mode 100644
index 0000000..c556bec
Binary files /dev/null and b/Textures/Genitals/unused/vagina_dog_east.png differ
diff --git a/Textures/Genitals/unused/vagina_insect_east.png b/Textures/Genitals/unused/vagina_insect_east.png
new file mode 100644
index 0000000..18e10be
Binary files /dev/null and b/Textures/Genitals/unused/vagina_insect_east.png differ
diff --git a/Textures/Genitals/unused/vagina_insect_north.png b/Textures/Genitals/unused/vagina_insect_north.png
new file mode 100644
index 0000000..4fc6bb0
Binary files /dev/null and b/Textures/Genitals/unused/vagina_insect_north.png differ
diff --git a/Textures/Genitals/unused/vagina_insect_south.png b/Textures/Genitals/unused/vagina_insect_south.png
new file mode 100644
index 0000000..f27f6f1
Binary files /dev/null and b/Textures/Genitals/unused/vagina_insect_south.png differ
diff --git a/Textures/Genitals/vagina_arco_east.png b/Textures/Genitals/vagina_arco_east.png
new file mode 100644
index 0000000..4d581f2
Binary files /dev/null and b/Textures/Genitals/vagina_arco_east.png differ
diff --git a/Textures/Genitals/vagina_arco_north.png b/Textures/Genitals/vagina_arco_north.png
new file mode 100644
index 0000000..232ecb4
Binary files /dev/null and b/Textures/Genitals/vagina_arco_north.png differ
diff --git a/Textures/Genitals/vagina_arco_south.png b/Textures/Genitals/vagina_arco_south.png
new file mode 100644
index 0000000..089cf51
Binary files /dev/null and b/Textures/Genitals/vagina_arco_south.png differ
diff --git a/Textures/Genitals/vagina_bio_east.png b/Textures/Genitals/vagina_bio_east.png
new file mode 100644
index 0000000..4d581f2
Binary files /dev/null and b/Textures/Genitals/vagina_bio_east.png differ
diff --git a/Textures/Genitals/vagina_bio_north.png b/Textures/Genitals/vagina_bio_north.png
new file mode 100644
index 0000000..8b77d2d
Binary files /dev/null and b/Textures/Genitals/vagina_bio_north.png differ
diff --git a/Textures/Genitals/vagina_bio_south.png b/Textures/Genitals/vagina_bio_south.png
new file mode 100644
index 0000000..23b52b7
Binary files /dev/null and b/Textures/Genitals/vagina_bio_south.png differ
diff --git a/Textures/Genitals/vagina_common_east.png b/Textures/Genitals/vagina_common_east.png
new file mode 100644
index 0000000..4d581f2
Binary files /dev/null and b/Textures/Genitals/vagina_common_east.png differ
diff --git a/Textures/Genitals/vagina_common_north.png b/Textures/Genitals/vagina_common_north.png
new file mode 100644
index 0000000..1747181
Binary files /dev/null and b/Textures/Genitals/vagina_common_north.png differ
diff --git a/Textures/Genitals/vagina_common_south.png b/Textures/Genitals/vagina_common_south.png
new file mode 100644
index 0000000..c62bc4b
Binary files /dev/null and b/Textures/Genitals/vagina_common_south.png differ
diff --git a/Textures/Genitals/vagina_dog_east.png b/Textures/Genitals/vagina_dog_east.png
new file mode 100644
index 0000000..4d581f2
Binary files /dev/null and b/Textures/Genitals/vagina_dog_east.png differ
diff --git a/Textures/Genitals/vagina_dog_north.png b/Textures/Genitals/vagina_dog_north.png
new file mode 100644
index 0000000..a483487
Binary files /dev/null and b/Textures/Genitals/vagina_dog_north.png differ
diff --git a/Textures/Genitals/vagina_dog_south.png b/Textures/Genitals/vagina_dog_south.png
new file mode 100644
index 0000000..880097d
Binary files /dev/null and b/Textures/Genitals/vagina_dog_south.png differ
diff --git a/Textures/Genitals/vagina_gaping_east.png b/Textures/Genitals/vagina_gaping_east.png
new file mode 100644
index 0000000..4d581f2
Binary files /dev/null and b/Textures/Genitals/vagina_gaping_east.png differ
diff --git a/Textures/Genitals/vagina_gaping_north.png b/Textures/Genitals/vagina_gaping_north.png
new file mode 100644
index 0000000..01558c8
Binary files /dev/null and b/Textures/Genitals/vagina_gaping_north.png differ
diff --git a/Textures/Genitals/vagina_gaping_south.png b/Textures/Genitals/vagina_gaping_south.png
new file mode 100644
index 0000000..22250bb
Binary files /dev/null and b/Textures/Genitals/vagina_gaping_south.png differ
diff --git a/Textures/Genitals/vagina_horse_east.png b/Textures/Genitals/vagina_horse_east.png
new file mode 100644
index 0000000..4d581f2
Binary files /dev/null and b/Textures/Genitals/vagina_horse_east.png differ
diff --git a/Textures/Genitals/vagina_horse_north.png b/Textures/Genitals/vagina_horse_north.png
new file mode 100644
index 0000000..248bc3f
Binary files /dev/null and b/Textures/Genitals/vagina_horse_north.png differ
diff --git a/Textures/Genitals/vagina_horse_south.png b/Textures/Genitals/vagina_horse_south.png
new file mode 100644
index 0000000..f6fddfa
Binary files /dev/null and b/Textures/Genitals/vagina_horse_south.png differ
diff --git a/Textures/Genitals/vagina_hyd_east.png b/Textures/Genitals/vagina_hyd_east.png
new file mode 100644
index 0000000..4d581f2
Binary files /dev/null and b/Textures/Genitals/vagina_hyd_east.png differ
diff --git a/Textures/Genitals/vagina_hyd_eastm.png b/Textures/Genitals/vagina_hyd_eastm.png
new file mode 100644
index 0000000..4d581f2
Binary files /dev/null and b/Textures/Genitals/vagina_hyd_eastm.png differ
diff --git a/Textures/Genitals/vagina_hyd_north.png b/Textures/Genitals/vagina_hyd_north.png
new file mode 100644
index 0000000..e9ae35a
Binary files /dev/null and b/Textures/Genitals/vagina_hyd_north.png differ
diff --git a/Textures/Genitals/vagina_hyd_northm.png b/Textures/Genitals/vagina_hyd_northm.png
new file mode 100644
index 0000000..4d581f2
Binary files /dev/null and b/Textures/Genitals/vagina_hyd_northm.png differ
diff --git a/Textures/Genitals/vagina_hyd_south.png b/Textures/Genitals/vagina_hyd_south.png
new file mode 100644
index 0000000..edbea20
Binary files /dev/null and b/Textures/Genitals/vagina_hyd_south.png differ
diff --git a/Textures/Genitals/vagina_hyd_southm.png b/Textures/Genitals/vagina_hyd_southm.png
new file mode 100644
index 0000000..4d581f2
Binary files /dev/null and b/Textures/Genitals/vagina_hyd_southm.png differ
diff --git a/Textures/Genitals/vagina_lips_east.png b/Textures/Genitals/vagina_lips_east.png
new file mode 100644
index 0000000..4d581f2
Binary files /dev/null and b/Textures/Genitals/vagina_lips_east.png differ
diff --git a/Textures/Genitals/vagina_lips_north.png b/Textures/Genitals/vagina_lips_north.png
new file mode 100644
index 0000000..f59baa9
Binary files /dev/null and b/Textures/Genitals/vagina_lips_north.png differ
diff --git a/Textures/Genitals/vagina_lips_south.png b/Textures/Genitals/vagina_lips_south.png
new file mode 100644
index 0000000..db3d61e
Binary files /dev/null and b/Textures/Genitals/vagina_lips_south.png differ
diff --git a/Textures/Genitals/vagina_micro_east.png b/Textures/Genitals/vagina_micro_east.png
new file mode 100644
index 0000000..4d581f2
Binary files /dev/null and b/Textures/Genitals/vagina_micro_east.png differ
diff --git a/Textures/Genitals/vagina_micro_north.png b/Textures/Genitals/vagina_micro_north.png
new file mode 100644
index 0000000..fa301c2
Binary files /dev/null and b/Textures/Genitals/vagina_micro_north.png differ
diff --git a/Textures/Genitals/vagina_micro_south.png b/Textures/Genitals/vagina_micro_south.png
new file mode 100644
index 0000000..4715130
Binary files /dev/null and b/Textures/Genitals/vagina_micro_south.png differ
diff --git a/Textures/Genitals/vagina_oversized_east.png b/Textures/Genitals/vagina_oversized_east.png
new file mode 100644
index 0000000..4d581f2
Binary files /dev/null and b/Textures/Genitals/vagina_oversized_east.png differ
diff --git a/Textures/Genitals/vagina_oversized_north.png b/Textures/Genitals/vagina_oversized_north.png
new file mode 100644
index 0000000..52ca9bf
Binary files /dev/null and b/Textures/Genitals/vagina_oversized_north.png differ
diff --git a/Textures/Genitals/vagina_oversized_south.png b/Textures/Genitals/vagina_oversized_south.png
new file mode 100644
index 0000000..5f84e4f
Binary files /dev/null and b/Textures/Genitals/vagina_oversized_south.png differ
diff --git a/Textures/Genitals/vagina_tight_east.png b/Textures/Genitals/vagina_tight_east.png
new file mode 100644
index 0000000..4d581f2
Binary files /dev/null and b/Textures/Genitals/vagina_tight_east.png differ
diff --git a/Textures/Genitals/vagina_tight_north.png b/Textures/Genitals/vagina_tight_north.png
new file mode 100644
index 0000000..1efa710
Binary files /dev/null and b/Textures/Genitals/vagina_tight_north.png differ
diff --git a/Textures/Genitals/vagina_tight_south.png b/Textures/Genitals/vagina_tight_south.png
new file mode 100644
index 0000000..123c1e9
Binary files /dev/null and b/Textures/Genitals/vagina_tight_south.png differ
diff --git a/Textures/Hands/Point_Right.png b/Textures/Hands/Point_Right.png
new file mode 100644
index 0000000..6c40b2b
Binary files /dev/null and b/Textures/Hands/Point_Right.png differ
diff --git a/Textures/Hands/default_Right.png b/Textures/Hands/default_Right.png
new file mode 100644
index 0000000..3a6740d
Binary files /dev/null and b/Textures/Hands/default_Right.png differ
diff --git a/Textures/Hands/grab_Right.png b/Textures/Hands/grab_Right.png
new file mode 100644
index 0000000..bcd3808
Binary files /dev/null and b/Textures/Hands/grab_Right.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Fat_east.png b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Fat_east.png
new file mode 100644
index 0000000..7f3bacb
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Fat_east.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Fat_north.png b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Fat_north.png
new file mode 100644
index 0000000..c2e916d
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Fat_north.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Fat_south.png b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Fat_south.png
new file mode 100644
index 0000000..07a15ca
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Fat_south.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_FemaleBB_UnsupportedApparel_east.png b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_FemaleBB_UnsupportedApparel_east.png
new file mode 100644
index 0000000..3218c6d
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_FemaleBB_UnsupportedApparel_east.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_FemaleBB_UnsupportedApparel_north.png b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_FemaleBB_UnsupportedApparel_north.png
new file mode 100644
index 0000000..bb9d457
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_FemaleBB_UnsupportedApparel_north.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_FemaleBB_UnsupportedApparel_south.png b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_FemaleBB_UnsupportedApparel_south.png
new file mode 100644
index 0000000..2df0b2d
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_FemaleBB_UnsupportedApparel_south.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_FemaleBB_east.png b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_FemaleBB_east.png
new file mode 100644
index 0000000..33461cd
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_FemaleBB_east.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_FemaleBB_north.png b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_FemaleBB_north.png
new file mode 100644
index 0000000..9a78696
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_FemaleBB_north.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_FemaleBB_south.png b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_FemaleBB_south.png
new file mode 100644
index 0000000..cb59959
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_FemaleBB_south.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Female_east.png b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Female_east.png
new file mode 100644
index 0000000..37b9669
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Female_east.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Female_north.png b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Female_north.png
new file mode 100644
index 0000000..4aa1be3
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Female_north.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Female_south.png b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Female_south.png
new file mode 100644
index 0000000..2b04478
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Female_south.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Hulk_east.png b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Hulk_east.png
new file mode 100644
index 0000000..1b88330
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Hulk_east.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Hulk_north.png b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Hulk_north.png
new file mode 100644
index 0000000..4b940ba
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Hulk_north.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Hulk_south.png b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Hulk_south.png
new file mode 100644
index 0000000..add9fc7
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Hulk_south.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Male_east.png b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Male_east.png
new file mode 100644
index 0000000..1e75b07
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Male_east.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Male_north.png b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Male_north.png
new file mode 100644
index 0000000..2911e02
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Male_north.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Male_south.png b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Male_south.png
new file mode 100644
index 0000000..0fe6299
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Male_south.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Thin_east.png b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Thin_east.png
new file mode 100644
index 0000000..85fe136
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Thin_east.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Thin_north.png b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Thin_north.png
new file mode 100644
index 0000000..a16b0fb
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Thin_north.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Thin_south.png b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Thin_south.png
new file mode 100644
index 0000000..97ef64d
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Female_Naked_Thin_south.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Fat_east.png b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Fat_east.png
new file mode 100644
index 0000000..b57a81c
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Fat_east.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Fat_north.png b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Fat_north.png
new file mode 100644
index 0000000..faa3b40
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Fat_north.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Fat_south.png b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Fat_south.png
new file mode 100644
index 0000000..97fad19
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Fat_south.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_FemaleBB_UnsupportedApparel_east.png b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_FemaleBB_UnsupportedApparel_east.png
new file mode 100644
index 0000000..3218c6d
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_FemaleBB_UnsupportedApparel_east.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_FemaleBB_UnsupportedApparel_north.png b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_FemaleBB_UnsupportedApparel_north.png
new file mode 100644
index 0000000..bb9d457
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_FemaleBB_UnsupportedApparel_north.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_FemaleBB_UnsupportedApparel_south.png b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_FemaleBB_UnsupportedApparel_south.png
new file mode 100644
index 0000000..2df0b2d
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_FemaleBB_UnsupportedApparel_south.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_FemaleBB_east.png b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_FemaleBB_east.png
new file mode 100644
index 0000000..3218c6d
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_FemaleBB_east.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_FemaleBB_north.png b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_FemaleBB_north.png
new file mode 100644
index 0000000..bb9d457
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_FemaleBB_north.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_FemaleBB_south.png b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_FemaleBB_south.png
new file mode 100644
index 0000000..2df0b2d
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_FemaleBB_south.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Female_east.png b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Female_east.png
new file mode 100644
index 0000000..2bdc406
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Female_east.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Female_north.png b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Female_north.png
new file mode 100644
index 0000000..2c291fc
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Female_north.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Female_south.png b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Female_south.png
new file mode 100644
index 0000000..06163ad
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Female_south.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Hulk_east.png b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Hulk_east.png
new file mode 100644
index 0000000..364a7fa
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Hulk_east.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Hulk_north.png b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Hulk_north.png
new file mode 100644
index 0000000..10f2c76
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Hulk_north.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Hulk_south.png b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Hulk_south.png
new file mode 100644
index 0000000..30cb96e
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Hulk_south.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Male_east.png b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Male_east.png
new file mode 100644
index 0000000..d9faa5a
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Male_east.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Male_north.png b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Male_north.png
new file mode 100644
index 0000000..af641f0
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Male_north.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Male_south.png b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Male_south.png
new file mode 100644
index 0000000..85acc91
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Male_south.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Thin_east.png b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Thin_east.png
new file mode 100644
index 0000000..9a909f2
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Thin_east.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Thin_north.png b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Thin_north.png
new file mode 100644
index 0000000..89b992e
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Thin_north.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Thin_south.png b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Thin_south.png
new file mode 100644
index 0000000..71b0aea
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Male_Naked_Thin_south.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Naked_Fat_east.png b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Fat_east.png
new file mode 100644
index 0000000..7f3bacb
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Fat_east.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Naked_Fat_north.png b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Fat_north.png
new file mode 100644
index 0000000..303bd5b
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Fat_north.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Naked_Fat_south.png b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Fat_south.png
new file mode 100644
index 0000000..07a15ca
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Fat_south.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Naked_FemaleBB_UnsupportedApparel_east.png b/Textures/Things/Pawn/Humanlike/Bodies/Naked_FemaleBB_UnsupportedApparel_east.png
new file mode 100644
index 0000000..3218c6d
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Naked_FemaleBB_UnsupportedApparel_east.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Naked_FemaleBB_UnsupportedApparel_north.png b/Textures/Things/Pawn/Humanlike/Bodies/Naked_FemaleBB_UnsupportedApparel_north.png
new file mode 100644
index 0000000..bb9d457
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Naked_FemaleBB_UnsupportedApparel_north.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Naked_FemaleBB_UnsupportedApparel_south.png b/Textures/Things/Pawn/Humanlike/Bodies/Naked_FemaleBB_UnsupportedApparel_south.png
new file mode 100644
index 0000000..2df0b2d
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Naked_FemaleBB_UnsupportedApparel_south.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Naked_Female_east - Copy.png b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Female_east - Copy.png
new file mode 100644
index 0000000..2bdc406
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Female_east - Copy.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Naked_Female_east.png b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Female_east.png
new file mode 100644
index 0000000..373a289
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Female_east.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Naked_Female_north - Copy.png b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Female_north - Copy.png
new file mode 100644
index 0000000..6b8686e
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Female_north - Copy.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Naked_Female_north.png b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Female_north.png
new file mode 100644
index 0000000..2c94b22
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Female_north.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Naked_Female_south - Copy.png b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Female_south - Copy.png
new file mode 100644
index 0000000..120c11c
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Female_south - Copy.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Naked_Female_south.png b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Female_south.png
new file mode 100644
index 0000000..f98715b
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Female_south.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Naked_Hulk_east.png b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Hulk_east.png
new file mode 100644
index 0000000..1b88330
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Hulk_east.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Naked_Hulk_north.png b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Hulk_north.png
new file mode 100644
index 0000000..4b940ba
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Hulk_north.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Naked_Hulk_south.png b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Hulk_south.png
new file mode 100644
index 0000000..add9fc7
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Hulk_south.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Naked_Male_east.png b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Male_east.png
new file mode 100644
index 0000000..1e75b07
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Male_east.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Naked_Male_north.png b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Male_north.png
new file mode 100644
index 0000000..347a822
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Male_north.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Naked_Male_south.png b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Male_south.png
new file mode 100644
index 0000000..0fe6299
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Male_south.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Naked_Thin_east.png b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Thin_east.png
new file mode 100644
index 0000000..85fe136
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Thin_east.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Naked_Thin_north.png b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Thin_north.png
new file mode 100644
index 0000000..85ce34e
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Thin_north.png differ
diff --git a/Textures/Things/Pawn/Humanlike/Bodies/Naked_Thin_south.png b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Thin_south.png
new file mode 100644
index 0000000..97ef64d
Binary files /dev/null and b/Textures/Things/Pawn/Humanlike/Bodies/Naked_Thin_south.png differ
diff --git a/Textures/Tongue/Base.png b/Textures/Tongue/Base.png
new file mode 100644
index 0000000..d706b3d
Binary files /dev/null and b/Textures/Tongue/Base.png differ
diff --git a/Textures/Tongue/default.png b/Textures/Tongue/default.png
new file mode 100644
index 0000000..d706b3d
Binary files /dev/null and b/Textures/Tongue/default.png differ
diff --git a/Textures/Tongue/front.png b/Textures/Tongue/front.png
new file mode 100644
index 0000000..42dd5c4
Binary files /dev/null and b/Textures/Tongue/front.png differ
diff --git a/source/RimNudeWorldHARAddon/.vs/RimNudeWorldHARAddon/v15/.suo b/source/RimNudeWorldHARAddon/.vs/RimNudeWorldHARAddon/v15/.suo
new file mode 100644
index 0000000..84e5f44
Binary files /dev/null and b/source/RimNudeWorldHARAddon/.vs/RimNudeWorldHARAddon/v15/.suo differ
diff --git a/source/RimNudeWorldHARAddon/.vs/RimNudeWorldHARAddon/v15/Server/sqlite3/db.lock b/source/RimNudeWorldHARAddon/.vs/RimNudeWorldHARAddon/v15/Server/sqlite3/db.lock
new file mode 100644
index 0000000..e69de29
diff --git a/source/RimNudeWorldHARAddon/.vs/RimNudeWorldHARAddon/v15/Server/sqlite3/storage.ide b/source/RimNudeWorldHARAddon/.vs/RimNudeWorldHARAddon/v15/Server/sqlite3/storage.ide
new file mode 100644
index 0000000..e6f4668
Binary files /dev/null and b/source/RimNudeWorldHARAddon/.vs/RimNudeWorldHARAddon/v15/Server/sqlite3/storage.ide differ
diff --git a/source/RimNudeWorldHARAddon/.vs/RimNudeWorldHARAddon/v15/Server/sqlite3/storage.ide-shm b/source/RimNudeWorldHARAddon/.vs/RimNudeWorldHARAddon/v15/Server/sqlite3/storage.ide-shm
new file mode 100644
index 0000000..843097a
Binary files /dev/null and b/source/RimNudeWorldHARAddon/.vs/RimNudeWorldHARAddon/v15/Server/sqlite3/storage.ide-shm differ
diff --git a/source/RimNudeWorldHARAddon/.vs/RimNudeWorldHARAddon/v15/Server/sqlite3/storage.ide-wal b/source/RimNudeWorldHARAddon/.vs/RimNudeWorldHARAddon/v15/Server/sqlite3/storage.ide-wal
new file mode 100644
index 0000000..6eac99d
Binary files /dev/null and b/source/RimNudeWorldHARAddon/.vs/RimNudeWorldHARAddon/v15/Server/sqlite3/storage.ide-wal differ
diff --git a/source/RimNudeWorldHARAddon/.vs/RimNudeWorldHARAddon/v16/.suo b/source/RimNudeWorldHARAddon/.vs/RimNudeWorldHARAddon/v16/.suo
new file mode 100644
index 0000000..430af48
Binary files /dev/null and b/source/RimNudeWorldHARAddon/.vs/RimNudeWorldHARAddon/v16/.suo differ
diff --git a/source/RimNudeWorldHARAddon/BellyBulge.cs b/source/RimNudeWorldHARAddon/BellyBulge.cs
new file mode 100644
index 0000000..62d2dd2
--- /dev/null
+++ b/source/RimNudeWorldHARAddon/BellyBulge.cs
@@ -0,0 +1,103 @@
+using System;
+using System.Linq;
+using HarmonyLib;
+using Verse;
+using rjw;
+
+namespace RimNudeWorldHARAddon
+{
+ public class BellyBulge : HediffWithComps
+ {
+ Hediff cumflation = null;
+ Hediff pregnancy = null;
+ public override bool Visible => false;
+
+ public override void PostMake()
+ {
+
+ base.PostMake();
+ }
+
+ public override void ExposeData()
+ {
+ base.ExposeData();
+ }
+ public override void Tick()
+ {
+ base.Tick();
+
+ if (!pawn.IsHashIntervalTick(60))
+ return;
+
+ if(RimNudeWorldHARAddonMain.useCumflation)
+ cumflation = pawn.health.hediffSet.GetFirstHediffOfDef(HediffDef.Named("Cumflation"));
+
+ pregnancy = pawn.health.hediffSet.hediffs.FirstOrDefault(x => x is Hediff_BasePregnancy);
+
+ this.Severity = (cumflation != null ? cumflation.Severity : 0) + (pregnancy != null ? pregnancy.Severity : 0);
+
+ if (this.Severity == 0)
+ {
+ if(pregnancy == null)
+ pawn.health?.RemoveHediff(this);
+ }
+ }
+ }
+
+
+ [HarmonyPatch(typeof(SexUtility), "Aftersex")]
+ //[HarmonyPatch(new Type[] { typeof(Pawn), typeof(Pawn), typeof(bool), typeof(bool), typeof(bool), typeof(xxx.rjwSextype) })]
+ public class BellyHeddiffAddPatch
+ {
+ public static void Postfix(SexProps props)
+ {
+ if (props.pawn.health.hediffSet.HasHediff(HediffDef.Named("RNW_BellyBulge")))
+ {
+ props.pawn.Drawer.renderer.graphics.ResolveAllGraphics();
+ //pawn.Drawer.renderer.graphics.ClearCache();
+ }
+ else
+ {
+ if (props.pawn.IsVisiblyPregnant() || RimNudeWorldHARAddonMain.useCumflation? props.pawn.health.hediffSet.HasHediff(HediffDef.Named("Cumflation")):false)
+ {
+ props.pawn.health.AddHediff(HediffDef.Named("RNW_BellyBulge"));
+ props.pawn.Drawer.renderer.graphics.ClearCache();
+ props.pawn.Drawer.renderer.graphics.ResolveAllGraphics();
+
+ }
+ }
+
+ if (props.partner?.health?.hediffSet?.HasHediff(HediffDef.Named("RNW_BellyBulge"))==true)
+ {
+ props.partner.Drawer.renderer.graphics.ResolveAllGraphics();
+ //partner.Drawer.renderer.graphics.ClearCache();
+ }
+ else
+ {
+ if ((props.partner?.IsVisiblyPregnant()==true) || RimNudeWorldHARAddonMain.useCumflation ? (props.partner?.health?.hediffSet?.HasHediff(HediffDef.Named("Cumflation"))==true) : false)
+ {
+ props.partner.health.AddHediff(HediffDef.Named("RNW_BellyBulge"));
+ props.partner.Drawer.renderer.graphics.ClearCache();
+ props.partner.Drawer.renderer.graphics.ResolveAllGraphics();
+ }
+ }
+ }
+ }
+
+ [HarmonyBefore(new string[] { "rimworldanim" })]
+ [HarmonyPatch(typeof(JobDriver_SexBaseInitiator), "End")]
+ static class JobDriverEndPatch
+ {
+ public static void Postfix(JobDriver_SexBaseInitiator __instance)
+ {
+ __instance.pawn.Drawer.renderer.graphics.ClearCache();
+ __instance.pawn.Drawer.renderer.graphics.ResolveAllGraphics();
+ //PortraitsCache.SetDirty(__instance.pawn);
+
+
+ (__instance.Target as Pawn)?.Drawer.renderer.graphics.ClearCache();
+ (__instance.Target as Pawn)?.Drawer.renderer.graphics.ResolveAllGraphics();
+ //PortraitsCache.SetDirty((__instance.Target as Pawn));
+ }
+ }
+}
\ No newline at end of file
diff --git a/source/RimNudeWorldHARAddon/Properties/AssemblyInfo.cs b/source/RimNudeWorldHARAddon/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..835d679
--- /dev/null
+++ b/source/RimNudeWorldHARAddon/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
+// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
+// 이러한 특성 값을 변경하세요.
+[assembly: AssemblyTitle("RimNudeWorldHARAddon")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("RimNudeWorldHARAddon")]
+[assembly: AssemblyCopyright("Copyright © 2020")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
+// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
+// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
+[assembly: ComVisible(false)]
+
+// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
+[assembly: Guid("480a6e77-acd9-4e61-aaf7-c7e40a343a79")]
+
+// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
+//
+// 주 버전
+// 부 버전
+// 빌드 번호
+// 수정 버전
+//
+// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를
+// 기본값으로 할 수 있습니다.
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/source/RimNudeWorldHARAddon/RimNudeWorldHARAddon.csproj b/source/RimNudeWorldHARAddon/RimNudeWorldHARAddon.csproj
new file mode 100644
index 0000000..09adf5a
--- /dev/null
+++ b/source/RimNudeWorldHARAddon/RimNudeWorldHARAddon.csproj
@@ -0,0 +1,81 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {480A6E77-ACD9-4E61-AAF7-C7E40A343A79}
+ Library
+ Properties
+ RimNudeWorldHARAddon
+ RimNudeWorldHARAddon
+ v4.7.2
+ 512
+ true
+
+
+ true
+ full
+ false
+ ..\..\1.3\Assemblies\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ ..\..\1.1\Assemblies\
+ TRACE
+ prompt
+ 4
+
+
+
+ ..\..\..\..\..\..\workshop\content\294100\2009463077\Current\Assemblies\0Harmony.dll
+ False
+
+
+ ..\..\..\..\..\..\workshop\content\294100\839005762\1.1\Assemblies\AlienRace.dll
+ False
+
+
+ ..\..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll
+ False
+
+
+ ..\..\..\..\..\..\workshop\content\294100\818773962\v1.1\Assemblies\HugsLib.dll
+ False
+
+
+ ..\..\..\RJW\1.1\Assemblies\RJW.dll
+ False
+
+
+
+
+
+
+
+
+
+
+
+ ..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.dll
+ False
+
+
+ ..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll
+ False
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/source/RimNudeWorldHARAddon/RimNudeWorldHARAddon.sln b/source/RimNudeWorldHARAddon/RimNudeWorldHARAddon.sln
new file mode 100644
index 0000000..a638b9d
--- /dev/null
+++ b/source/RimNudeWorldHARAddon/RimNudeWorldHARAddon.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+VisualStudioVersion = 15.0.28307.1000
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RimNudeWorldHARAddon", "RimNudeWorldHARAddon.csproj", "{480A6E77-ACD9-4E61-AAF7-C7E40A343A79}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {480A6E77-ACD9-4E61-AAF7-C7E40A343A79}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {480A6E77-ACD9-4E61-AAF7-C7E40A343A79}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {480A6E77-ACD9-4E61-AAF7-C7E40A343A79}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {480A6E77-ACD9-4E61-AAF7-C7E40A343A79}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {3AB295E7-B318-44C5-80B6-D6758B2B50A4}
+ EndGlobalSection
+EndGlobal
diff --git a/source/RimNudeWorldHARAddon/RimNudeWorldHARAddonMain.cs b/source/RimNudeWorldHARAddon/RimNudeWorldHARAddonMain.cs
new file mode 100644
index 0000000..dfeed47
--- /dev/null
+++ b/source/RimNudeWorldHARAddon/RimNudeWorldHARAddonMain.cs
@@ -0,0 +1,373 @@
+using System.Linq;
+using RimWorld;
+using HarmonyLib;
+using Verse;
+using UnityEngine;
+using AlienRace;
+using rjw;
+
+namespace RimNudeWorldHARAddon
+{
+ [StaticConstructorOnStartup]
+ public class RimNudeWorldHARAddonMain
+ {
+ public static bool useCumflation;
+
+ static RimNudeWorldHARAddonMain()
+ {
+ Harmony val = new Harmony("RimNudeWorld_HAR_Addon");
+ Log.Message("RimNudeWorldHARAddon Patch");
+ useCumflation = (LoadedModManager.RunningModsListForReading.Any(x => x.PackageId == "LustLicentia.RJWLabs"));
+ if (!useCumflation)
+ {
+ if (HediffDef.Named("Cumflation") != null)
+ useCumflation = true;
+ }
+
+ if (useCumflation) Log.Message("RimNudeWorldHARAddon: UseCumflation");
+ val.PatchAll();
+ }
+
+ //[HarmonyPatch(typeof(SexUtility), "DrawNude")]
+ class DrawNudePatch
+ {
+ static bool Prefix(Pawn pawn)
+ {
+ Log.Warning("DrawNudePrefix");
+ if (!xxx.is_human(pawn))
+ return false;
+ AlienPartGenerator.AlienComp alienComp = pawn.GetComp();
+ if (alienComp != null)
+ {
+ for (int i = 0; i < alienComp.addonGraphics.Count; i++)
+ {
+ Graphic agr = alienComp.addonGraphics[i];
+ //Log.Message(agr.path);
+ HARPatch.Postfix(pawn, ref agr);
+ //Log.Message(agr.path);
+ }
+ }
+ return true;
+
+
+ //pawn.Drawer.renderer.graphics.SetAllGraphicsDirty();
+ //partner.Drawer.renderer.graphics.SetAllGraphicsDirty();
+ }
+ }
+
+ [HarmonyPatch(typeof(JobDriver_SexBaseInitiator), "Start")]
+ class SetTextureDuringSet
+ {
+ static void Prefix(JobDriver_SexBaseInitiator __instance)
+ {
+ //Log.Warning("SexStart");
+
+ var partner = __instance.Partner as Pawn;
+ /*
+
+ for(int i = 0; i< pawn.Drawer.renderer.graphics.apparelGraphics.Count; i++)
+ {
+ ApparelGraphicRecord agr = pawn.Drawer.renderer.graphics.apparelGraphics[i];
+ Log.Message(agr.graphic.path);
+ HARPatch.Postfix(pawn, ref agr.graphic);
+ }
+ */
+ //pawn.Drawer.renderer.graphics.ClearCache();
+ //partner.Drawer.renderer.graphics.ClearCache();
+ //__instance.pawn.Drawer.renderer.graphics.SetAllGraphicsDirty();
+ __instance.pawn.Drawer.renderer.graphics.ResolveAllGraphics();
+ AlienPartGenerator.AlienComp alienComp = __instance.pawn.GetComp();
+ if(alienComp != null)
+ {
+ for (int i = 0; i < alienComp.addonGraphics.Count; i++)
+ {
+ Graphic agr = alienComp.addonGraphics[i];
+ //Log.Message(agr.path);
+ HARPatch.Postfix(__instance.pawn, ref agr);
+ //Log.Message(agr.path);
+ }
+ }
+ if (partner != null)
+ {
+ //partner.Drawer.renderer.graphics.SetAllGraphicsDirty();
+ //partner.Drawer.renderer.graphics.ResolveApparelGraphics();
+ partner.Drawer.renderer.graphics.ResolveAllGraphics();
+ alienComp = partner.GetComp();
+ if (alienComp != null)
+ {
+ for (int i = 0; i < alienComp.addonGraphics.Count; i++)
+ {
+ Graphic agr = alienComp.addonGraphics[i];
+ //Log.Message(agr.path);
+ HARPatch.Postfix(partner, ref agr);
+ //Log.Message(agr.path);
+
+ }
+ }
+ }
+
+ //pawn.Drawer.renderer.graphics.SetAllGraphicsDirty();
+ //partner.Drawer.renderer.graphics.SetAllGraphicsDirty();
+ }
+ }
+
+ public static bool IsLactating(Pawn pawn)
+ {
+ if(pawn != null)
+ {
+ if (pawn.RaceProps.Humanlike)
+ {
+ foreach (Hediff hediff in pawn.health.hediffSet.hediffs)
+ {
+ if (hediff != null)
+ {
+ if (hediff.def.defName.Contains("Lactating") || hediff.def.defName.Contains("lactating"))
+ {
+ return true;
+ }
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ /*
+ [HarmonyPatch(typeof(PawnGraphicSet), "ResolveAllGraphics")]
+ class Test
+ {
+ static void Postfix(ref PawnGraphicSet __instance)
+ {
+ if (__instance.pawn.RaceProps.Humanlike)
+ {
+ var dri = __instance.pawn.jobs.curDriver as rjw.JobDriver_Sex;
+
+ if (dri != null)
+ {
+ Log.Warning("ResolveGraphicDuringSex");
+ }
+ }
+ }
+
+ }*/
+ public class TestClass
+ {
+
+ public void Testfunc1()
+ {
+ string text = "Hello";
+ text.Contains("lo");
+ }
+ public void Testfunc2()
+ {
+ float a = 1;
+ float b = 2;
+ float c = 3;
+ if ((a > c ? a : c) > b)
+ {
+
+ }
+ }
+ }
+
+ [HarmonyPatch(typeof(AlienPartGenerator.BodyAddon), "GetPath")]
+ class HARPatch
+ {
+ /*
+ public static IEnumerable Transpiler(IEnumerable instructions)
+ {
+
+
+ FieldInfo pathInfo = AccessTools.Field(typeof(AlienPartGenerator.BodyAddon), "path");
+ int num;
+ CodeInstruction targetPawnInstruction;
+ List instructionList = instructions.ToList();
+ //Hediff cumflation = pawn.health.hediffSet.GetFirstHediffOfDef(HediffDef.Named("Cumflation"));
+ for (int i = 0; i < instructionList.Count; i = num + 1)
+ {
+ CodeInstruction codeInstruction = instructionList[i];
+
+ num = i;
+
+ if (codeInstruction.opcode == OpCodes.Ldfld)
+ {
+ if (codeInstruction.OperandIs(pathInfo))
+ {
+ if(instructionList[i-2].opcode == OpCodes.Ldloc_S)
+ {
+ //targetPawn;
+ targetPawnInstruction = instructionList[i - 2];
+ }
+ }
+ }
+
+ if (codeInstruction.opcode == OpCodes.Ldloc_S)
+ {
+
+ }
+
+ if (codeInstruction.opcode == OpCodes.Callvirt)
+ {
+ //Target Hediff
+ instructionList[i - 1];
+ }
+
+ if (codeInstruction.opcode == OpCodes.Blt_Un_S)
+ {
+ //yield return new CodeInstruction(OpCodes.)
+
+ yield return codeInstruction;
+ }
+
+ else
+ yield return codeInstruction;
+ }
+ instructionList = null;
+ yield break;
+
+ }*/
+
+ public static void Postfix(Pawn pawn, ref Graphic __result)
+ {
+ if(__result != null)
+ {
+ if (pawn == null)
+ return;
+ string originalPath = __result.path;
+ bool validTexture = false;
+
+ //Body typed texture
+ if (pawn.story.bodyType == BodyTypeDefOf.Hulk || pawn.story.bodyType == BodyTypeDefOf.Fat)
+ {
+ if (pawn.story.bodyType == BodyTypeDefOf.Hulk)
+ {
+ if ((ContentFinder.Get(originalPath + "_Hulk" + "_south", false) != null))
+ {
+ Graphic newGraphic = GraphicDatabase.Get(originalPath + "_Hulk", __result.Shader, __result.drawSize, __result.color, __result.colorTwo);
+ __result = newGraphic;
+ validTexture = true;
+ }
+ }
+ else if (pawn.story.bodyType == BodyTypeDefOf.Fat)
+ {
+ if ((ContentFinder.Get(originalPath + "_Fat" + "_south", false) != null))
+ {
+ Graphic newGraphic = GraphicDatabase.Get(originalPath + "_Fat", __result.Shader, __result.drawSize, __result.color, __result.colorTwo);
+ __result = newGraphic;
+ validTexture = true;
+ }
+ }
+ if (validTexture == false)
+ {
+ if ((ContentFinder.Get(originalPath + "_Wide" + "_south", false) != null))
+ {
+ Graphic newGraphic = GraphicDatabase.Get(originalPath + "_Wide", __result.Shader, __result.drawSize, __result.color, __result.colorTwo);
+ __result = newGraphic;
+ validTexture = true;
+ }
+ }
+ }
+ else if (pawn.story.bodyType == BodyTypeDefOf.Thin)
+ {
+ if ((ContentFinder.Get(originalPath + "_Thin" + "_south", false) != null))
+ {
+ Graphic newGraphic = GraphicDatabase.Get(originalPath + "_Thin", __result.Shader, __result.drawSize, __result.color, __result.colorTwo);
+ __result = newGraphic;
+ validTexture = true;
+ }
+ }
+ else if (pawn.story.bodyType == BodyTypeDefOf.Male)
+ {
+ if ((ContentFinder.Get(originalPath + "_Male" + "_south", false) != null))
+ {
+ Graphic newGraphic = GraphicDatabase.Get(originalPath + "_Male", __result.Shader, __result.drawSize, __result.color, __result.colorTwo);
+ __result = newGraphic;
+ validTexture = true;
+ }
+ }
+ else if (pawn.story.bodyType == BodyTypeDefOf.Female)
+ {
+ if ((ContentFinder.Get(originalPath + "_Female" + "_south", false) != null))
+ {
+ Graphic newGraphic = GraphicDatabase.Get(originalPath + "_Female", __result.Shader, __result.drawSize, __result.color, __result.colorTwo);
+ __result = newGraphic;
+ validTexture = true;
+ }
+ }
+ else
+ {
+ string bodyname = pawn.story.bodyType.defName;
+ if ((ContentFinder.Get(originalPath + "_" + bodyname + "_south", false) != null))
+ {
+ Graphic newGraphic = GraphicDatabase.Get(originalPath + "_" + bodyname, __result.Shader, __result.drawSize, __result.color, __result.colorTwo);
+ __result = newGraphic;
+ validTexture = true;
+ }
+ }
+
+
+ bool erect = false;
+
+ Need_Sex needSex = null;
+ if (pawn.needs != null)
+ needSex = pawn.needs.TryGetNeed();
+
+ JobDriver_SexBaseInitiator dri = null;
+ if(pawn.jobs != null)
+ dri = pawn.jobs.curDriver as rjw.JobDriver_SexBaseInitiator;
+
+
+ //Log.Message("find needSex");
+ if (needSex != null)
+ {
+ //Log.Warning(needSex.CurLevel.ToString());
+ if (needSex.CurLevel >= needSex.thresh_ahegao() || needSex.CurLevel < needSex.thresh_neutral())
+ {
+ erect = true;
+ }
+ }
+ else
+ {
+ //Log.Warning("SexNeeds Not Found");
+ }
+
+
+ //Log.Message("find jobdriver_sex");
+ if (dri != null)
+ {
+ erect = true;
+ }
+ else
+ {
+ //Log.Warning("JobDriver_Sex not found");
+ }
+
+
+ if (erect)
+ {
+ //Log.Warning("finding Erect Texture");
+ if ((ContentFinder.Get(__result.path + "_Erect" + "_south", false) != null))
+ {
+ Graphic newGraphic = GraphicDatabase.Get(__result.path + "_Erect", __result.Shader, __result.drawSize, __result.color, __result.colorTwo);
+ __result = newGraphic;
+
+ }
+ }
+
+
+ //lactation
+ if (IsLactating(pawn))
+ {
+ //Log.Message("finding Lactation Texture");
+ if ((ContentFinder.Get(__result.path + "_Lactating" + "_south", false) != null))
+ {
+ Graphic newGraphic = GraphicDatabase.Get(__result.path + "_Lactating", __result.Shader, __result.drawSize, __result.color, __result.colorTwo);
+ __result = newGraphic;
+
+ }
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/source/RimNudeWorldHARAddon/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs b/source/RimNudeWorldHARAddon/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs
new file mode 100644
index 0000000..3871b18
--- /dev/null
+++ b/source/RimNudeWorldHARAddon/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs
@@ -0,0 +1,4 @@
+//
+using System;
+using System.Reflection;
+[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
diff --git a/source/RimNudeWorldHARAddon/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/source/RimNudeWorldHARAddon/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
new file mode 100644
index 0000000..4471d7d
Binary files /dev/null and b/source/RimNudeWorldHARAddon/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ
diff --git a/source/RimNudeWorldHARAddon/obj/Debug/RimNudeWorldHARAddon.csproj.CoreCompileInputs.cache b/source/RimNudeWorldHARAddon/obj/Debug/RimNudeWorldHARAddon.csproj.CoreCompileInputs.cache
new file mode 100644
index 0000000..a1da216
--- /dev/null
+++ b/source/RimNudeWorldHARAddon/obj/Debug/RimNudeWorldHARAddon.csproj.CoreCompileInputs.cache
@@ -0,0 +1 @@
+5b00994644d9de808a481de15dfd909612328dea
diff --git a/source/RimNudeWorldHARAddon/obj/Debug/RimNudeWorldHARAddon.csproj.FileListAbsolute.txt b/source/RimNudeWorldHARAddon/obj/Debug/RimNudeWorldHARAddon.csproj.FileListAbsolute.txt
new file mode 100644
index 0000000..1d25e2b
--- /dev/null
+++ b/source/RimNudeWorldHARAddon/obj/Debug/RimNudeWorldHARAddon.csproj.FileListAbsolute.txt
@@ -0,0 +1,6 @@
+J:\SteamLibrary\steamapps\common\RimWorld\Mods\OTY-Nude Unofficial Update\1.3\Assemblies\RimNudeWorldHARAddon.dll
+J:\SteamLibrary\steamapps\common\RimWorld\Mods\OTY-Nude Unofficial Update\1.3\Assemblies\RimNudeWorldHARAddon.pdb
+J:\SteamLibrary\steamapps\common\RimWorld\Mods\OTY-Nude Unofficial Update\source\RimNudeWorldHARAddon\obj\Debug\RimNudeWorldHARAddon.csprojAssemblyReference.cache
+J:\SteamLibrary\steamapps\common\RimWorld\Mods\OTY-Nude Unofficial Update\source\RimNudeWorldHARAddon\obj\Debug\RimNudeWorldHARAddon.csproj.CoreCompileInputs.cache
+J:\SteamLibrary\steamapps\common\RimWorld\Mods\OTY-Nude Unofficial Update\source\RimNudeWorldHARAddon\obj\Debug\RimNudeWorldHARAddon.dll
+J:\SteamLibrary\steamapps\common\RimWorld\Mods\OTY-Nude Unofficial Update\source\RimNudeWorldHARAddon\obj\Debug\RimNudeWorldHARAddon.pdb
diff --git a/source/RimNudeWorldHARAddon/obj/Debug/RimNudeWorldHARAddon.csprojAssemblyReference.cache b/source/RimNudeWorldHARAddon/obj/Debug/RimNudeWorldHARAddon.csprojAssemblyReference.cache
new file mode 100644
index 0000000..1d5022d
Binary files /dev/null and b/source/RimNudeWorldHARAddon/obj/Debug/RimNudeWorldHARAddon.csprojAssemblyReference.cache differ
diff --git a/source/RimNudeWorldHARAddon/obj/Debug/RimNudeWorldHARAddon.dll b/source/RimNudeWorldHARAddon/obj/Debug/RimNudeWorldHARAddon.dll
new file mode 100644
index 0000000..272f38e
Binary files /dev/null and b/source/RimNudeWorldHARAddon/obj/Debug/RimNudeWorldHARAddon.dll differ
diff --git a/source/RimNudeWorldHARAddon/obj/Debug/RimNudeWorldHARAddon.pdb b/source/RimNudeWorldHARAddon/obj/Debug/RimNudeWorldHARAddon.pdb
new file mode 100644
index 0000000..1a4c03e
Binary files /dev/null and b/source/RimNudeWorldHARAddon/obj/Debug/RimNudeWorldHARAddon.pdb differ
diff --git a/source/RimNudeWorldHARAddon/packages.config b/source/RimNudeWorldHARAddon/packages.config
new file mode 100644
index 0000000..7893130
--- /dev/null
+++ b/source/RimNudeWorldHARAddon/packages.config
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/.signature.p7s b/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/.signature.p7s
new file mode 100644
index 0000000..c03bcf0
Binary files /dev/null and b/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/.signature.p7s differ
diff --git a/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/HarmonyLogo.png b/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/HarmonyLogo.png
new file mode 100644
index 0000000..9966dac
Binary files /dev/null and b/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/HarmonyLogo.png differ
diff --git a/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/LICENSE b/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/LICENSE
new file mode 100644
index 0000000..655c71c
--- /dev/null
+++ b/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2017 Andreas Pardeike
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/Lib.Harmony.2.0.2.nupkg b/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/Lib.Harmony.2.0.2.nupkg
new file mode 100644
index 0000000..ccd8699
Binary files /dev/null and b/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/Lib.Harmony.2.0.2.nupkg differ
diff --git a/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/net35/0Harmony.dll b/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/net35/0Harmony.dll
new file mode 100644
index 0000000..f82ae51
Binary files /dev/null and b/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/net35/0Harmony.dll differ
diff --git a/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/net35/0Harmony.xml b/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/net35/0Harmony.xml
new file mode 100644
index 0000000..6bcea2e
--- /dev/null
+++ b/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/net35/0Harmony.xml
@@ -0,0 +1,2900 @@
+
+
+
+ 0Harmony
+
+
+
+ A factory to create delegate types
+
+
+ Default constructor
+
+
+ Creates a delegate type for a method
+ The method
+ The new delegate type
+
+
+
+ A getter delegate type
+ Type that getter gets field/property value from
+ Type of the value that getter gets
+ The instance get getter uses
+ An delegate
+
+
+
+ A setter delegate type
+ Type that setter sets field/property value for
+ Type of the value that setter sets
+ The instance the setter uses
+ The value the setter uses
+ An delegate
+
+
+
+ A constructor delegate type
+ Type that constructor creates
+ An delegate
+
+
+
+ A helper class for fast access to getters and setters
+
+
+ Creates an instantiation delegate
+ Type that constructor creates
+ The new instantiation delegate
+
+
+
+ Creates an getter delegate for a property
+ Type that getter reads property from
+ Type of the property that gets accessed
+ The property
+ The new getter delegate
+
+
+
+ Creates an getter delegate for a field
+ Type that getter reads field from
+ Type of the field that gets accessed
+ The field
+ The new getter delegate
+
+
+
+ Creates an getter delegate for a field (with a list of possible field names)
+ Type that getter reads field/property from
+ Type of the field/property that gets accessed
+ A list of possible field names
+ The new getter delegate
+
+
+
+ Creates an setter delegate
+ Type that setter assigns property value to
+ Type of the property that gets assigned
+ The property
+ The new setter delegate
+
+
+
+ Creates an setter delegate for a field
+ Type that setter assigns field value to
+ Type of the field that gets assigned
+ The field
+ The new getter delegate
+
+
+
+ A delegate to invoke a method
+ The instance
+ The method parameters
+ The method result
+
+
+ A helper class to invoke method with delegates
+
+
+ Creates a fast invocation handler from a method
+ The method to invoke
+ Controls if boxed value object is accessed/updated directly
+ The
+
+
+ The directBoxValueAccess option controls how value types passed by reference (e.g. ref int, out my_struct) are handled in the arguments array
+ passed to the fast invocation handler.
+ Since the arguments array is an object array, any value types contained within it are actually references to a boxed value object.
+ Like any other object, there can be other references to such boxed value objects, other than the reference within the arguments array.
+ For example,
+
+ var val = 5;
+ var box = (object)val;
+ var arr = new object[] { box };
+ handler(arr); // for a method with parameter signature: ref/out/in int
+
+
+
+
+ If directBoxValueAccess is true , the boxed value object is accessed (and potentially updated) directly when the handler is called,
+ such that all references to the boxed object reflect the potentially updated value.
+ In the above example, if the method associated with the handler updates the passed (boxed) value to 10, both box and arr[0]
+ now reflect the value 10. Note that the original val is not updated, since boxing always copies the value into the new boxed value object.
+
+
+ If directBoxValueAccess is false (default), the boxed value object in the arguments array is replaced with a "reboxed" value object,
+ such that potential updates to the value are reflected only in the arguments array.
+ In the above example, if the method associated with the handler updates the passed (boxed) value to 10, only arr[0] now reflects the value 10.
+
+
+
+
+ A low level memory helper
+
+
+ Mark method for no inlining (currently only works on Mono)
+ The method/constructor to change
+
+
+ Detours a method
+ The original method/constructor
+ The replacement method/constructor
+ An error string
+
+
+
+ Writes a jump to memory
+ The memory address
+ Jump destination
+ An error string
+
+
+
+ Gets the start of a method in memory
+ The method/constructor
+ [out] Details of the exception
+ The method start address
+
+
+
+ special parameter names that can be used in prefix and postfix methods
+
+
+ Patch function helpers
+
+
+ Adds a prefix
+ The patch info
+ The owner (Harmony ID)
+ The annotation info
+
+
+
+ Removes a prefix
+ The patch info
+ The owner (Harmony ID)
+
+
+
+ Adds a postfix
+ The patch info
+ The owner (Harmony ID)
+ The annotation info
+
+
+
+ Removes a postfix
+ The patch info
+ The owner (Harmony ID)
+
+
+
+ Adds a transpiler
+ The patch info
+ The owner (Harmony ID)
+ The annotation info
+
+
+
+ Removes a transpiler
+ The patch info
+ The owner (Harmony ID)
+
+
+
+ Adds a finalizer
+ The patch info
+ The owner (Harmony ID)
+ The annotation info
+
+
+
+ Removes a finalizer
+ The patch info
+ The owner (Harmony ID)
+
+
+
+ Removes a patch method
+ The patch info
+ The patch method
+
+
+
+ Sorts patch methods by their priority rules
+ The original method
+ Patches to sort
+ Use debug mode
+ The sorted patch methods
+
+
+
+ Creates new replacement method with the latest patches and detours the original method
+ The original method
+ Information describing the patches
+ The newly created replacement method
+
+
+
+ Creates a patch sorter
+ Array of patches that will be sorted
+ Use debugging
+
+
+ Sorts internal PatchSortingWrapper collection and caches the results.
+ After first run the result is provided from the cache.
+ The original method
+ The sorted patch methods
+
+
+ Checks if the sorter was created with the same patch list and as a result can be reused to
+ get the sorted order of the patches.
+ List of patches to check against
+ true if equal
+
+
+ Removes one unresolved dependency from the least important patch.
+
+
+ Outputs all unblocked patches from the waiting list to results list
+
+
+ Adds patch to both results list and handled patches set
+ Patch to add
+
+
+ Wrapper used over the Patch object to allow faster dependency access and
+ dependency removal in case of cyclic dependencies
+
+
+ Create patch wrapper object used for sorting
+ Patch to wrap
+
+
+ Determines how patches sort
+ The other patch
+ integer to define sort order (-1, 0, 1)
+
+
+ Determines whether patches are equal
+ The other patch
+ true if equal
+
+
+ Hash function
+ A hash code
+
+
+ Bidirectionally registers Patches as after dependencies
+ List of dependencies to register
+
+
+ Bidirectionally registers Patches as before dependencies
+ List of dependencies to register
+
+
+ Bidirectionally removes Patch from after dependencies
+ Patch to remove
+
+
+ Bidirectionally removes Patch from before dependencies
+ Patch to remove
+
+
+ Specifies the type of method
+
+
+
+ This is a normal method
+
+
+ This is a getter
+
+
+ This is a setter
+
+
+ This is a constructor
+
+
+ This is a static constructor
+
+
+ Specifies the type of argument
+
+
+
+ This is a normal argument
+
+
+ This is a reference argument (ref)
+
+
+ This is an out argument (out)
+
+
+ This is a pointer argument (&)
+
+
+ Specifies the type of patch
+
+
+
+ Any patch
+
+
+ A prefix patch
+
+
+ A postfix patch
+
+
+ A transpiler
+
+
+ A finalizer
+
+
+ A reverse patch
+
+
+ Specifies the type of reverse patch
+
+
+
+ Use the unmodified original method (directly from IL)
+
+
+ Use the original as it is right now including previous patches but excluding future ones
+
+
+ Specifies the type of method call dispatching mechanics
+
+
+
+ Call the method using dynamic dispatching if method is virtual (including overriden)
+
+
+ This is the built-in form of late binding (a.k.a. dynamic binding) and is the default dispatching mechanic in C#.
+ This directly corresponds with the instruction.
+
+
+ For virtual (including overriden) methods, the instance type's most-derived/overriden implementation of the method is called.
+ For non-virtual (including static) methods, same behavior as : the exact specified method implementation is called.
+
+
+ Note: This is not a fully dynamic dispatch, since non-virtual (including static) methods are still called non-virtually.
+ A fully dynamic dispatch in C# involves using
+ the dynamic type
+ (actually a fully dynamic binding, since even the name and overload resolution happens at runtime), which does not support.
+
+
+
+
+ Call the method using static dispatching, regardless of whether method is virtual (including overriden) or non-virtual (including static)
+
+
+ a.k.a. non-virtual dispatching, early binding, or static binding.
+ This directly corresponds with the instruction.
+
+
+ For both virtual (including overriden) and non-virtual (including static) methods, the exact specified method implementation is called, without virtual/override mechanics.
+
+
+
+
+ The base class for all Harmony annotations (not meant to be used directly)
+
+
+
+ The common information for all attributes
+
+
+ Annotation to define your Harmony patch methods
+
+
+
+ An empty annotation can be used together with TargetMethod(s)
+
+
+
+ An annotation that specifies a class to patch
+ The declaring class/type
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The argument types of the method or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+ Array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+ An array of argument types to target overloads
+ Array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+ An array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The
+ An array of argument types to target overloads
+ An array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ An array of argument types to target overloads
+ An array of
+
+
+
+ Annotation to define the original method for delegate injection
+
+
+
+ An annotation that specifies a class to patch
+ The declaring class/type
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The argument types of the method or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+ Array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+ An array of argument types to target overloads
+ Array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+ An array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ The
+
+
+
+ An annotation that specifies call dispatching mechanics for the delegate
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The
+ An array of argument types to target overloads
+ An array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ An array of argument types to target overloads
+ An array of
+
+
+
+ Annotation to define your standin methods for reverse patching
+
+
+
+ An annotation that specifies the type of reverse patching
+ The of the reverse patch
+
+
+
+ A Harmony annotation to define that all methods in a class are to be patched
+
+
+
+ A Harmony annotation
+
+
+
+ A Harmony annotation to define patch priority
+ The priority
+
+
+
+ A Harmony annotation
+
+
+
+ A Harmony annotation to define that a patch comes before another patch
+ The array of harmony IDs of the other patches
+
+
+
+ A Harmony annotation
+
+
+ A Harmony annotation to define that a patch comes after another patch
+ The array of harmony IDs of the other patches
+
+
+
+ A Harmony annotation
+
+
+ A Harmony annotation to debug a patch (output uses to log to your Desktop)
+
+
+
+ Specifies the Prepare function in a patch class
+
+
+
+ Specifies the Cleanup function in a patch class
+
+
+
+ Specifies the TargetMethod function in a patch class
+
+
+
+ Specifies the TargetMethods function in a patch class
+
+
+
+ Specifies the Prefix function in a patch class
+
+
+
+ Specifies the Postfix function in a patch class
+
+
+
+ Specifies the Transpiler function in a patch class
+
+
+
+ Specifies the Finalizer function in a patch class
+
+
+
+ A Harmony annotation
+
+
+
+ The name of the original argument
+
+
+
+ The index of the original argument
+
+
+
+ The new name of the original argument
+
+
+
+ An annotation to declare injected arguments by name
+
+
+
+ An annotation to declare injected arguments by index
+ Zero-based index
+
+
+
+ An annotation to declare injected arguments by renaming them
+ Name of the original argument
+ New name
+
+
+
+ An annotation to declare injected arguments by index and renaming them
+ Zero-based index
+ New name
+
+
+
+ An abstract wrapper around OpCode and their operands. Used by transpilers
+
+
+
+ The opcode
+
+
+
+ The operand
+
+
+
+ All labels defined on this instruction
+
+
+
+ All exception block boundaries defined on this instruction
+
+
+
+ Creates a new CodeInstruction with a given opcode and optional operand
+ The opcode
+ The operand
+
+
+
+ Create a full copy (including labels and exception blocks) of a CodeInstruction
+ The to copy
+
+
+
+ Clones a CodeInstruction and resets its labels and exception blocks
+ A lightweight copy of this code instruction
+
+
+
+ Clones a CodeInstruction, resets labels and exception blocks and sets its opcode
+ The opcode
+ A copy of this CodeInstruction with a new opcode
+
+
+
+ Clones a CodeInstruction, resets labels and exception blocks and sets its operand
+ The operand
+ A copy of this CodeInstruction with a new operand
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The class/type where the method is declared
+ The name of the method (case sensitive)
+ Optional parameters to target a specific overload of the method
+ Optional list of types that define the generic version of the method
+ A code instruction that calls the method matching the arguments
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The target method in the form TypeFullName:MethodName , where the type name matches a form recognized by Type.GetType like Some.Namespace.Type .
+ Optional parameters to target a specific overload of the method
+ Optional list of types that define the generic version of the method
+ A code instruction that calls the method matching the arguments
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The lambda expression using the method
+
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The lambda expression using the method
+
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The lambda expression using the method
+
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The lambda expression using the method
+
+
+
+
+ Creates a CodeInstruction loading a field (LD[S]FLD[A])
+ The class/type where the field is defined
+ The name of the field (case sensitive)
+ Use address of field
+
+
+
+ Creates a CodeInstruction storing to a field (ST[S]FLD)
+ The class/type where the field is defined
+ The name of the field (case sensitive)
+
+
+
+ Returns a string representation of the code instruction
+ A string representation of the code instruction
+
+
+
+ Exception block types
+
+
+
+ The beginning of an exception block
+
+
+
+ The beginning of a catch block
+
+
+
+ The beginning of an except filter block
+
+
+
+ The beginning of a fault block
+
+
+
+ The beginning of a finally block
+
+
+
+ The end of an exception block
+
+
+
+ An exception block
+
+
+
+ Block type
+
+
+
+ Catch type
+
+
+
+ Creates an exception block
+ The
+ The catch type
+
+
+
+ The Harmony instance is the main entry to Harmony. After creating one with an unique identifier, it is used to patch and query the current application domain
+
+
+
+ The unique identifier
+
+
+
+ Set to true before instantiating Harmony to debug Harmony or use an environment variable to set HARMONY_DEBUG to '1' like this: cmd /C "set HARMONY_DEBUG=1 && game.exe"
+ This is for full debugging. To debug only specific patches, use the attribute
+
+
+
+ Creates a new Harmony instance
+ A unique identifier (you choose your own)
+ A Harmony instance
+
+
+
+ Searches the current assembly for Harmony annotations and uses them to create patches
+
+
+
+ Creates a empty patch processor for an original method
+ The original method/constructor
+ A new instance
+
+
+
+ Creates a patch class processor from an annotated class
+ The class/type
+ A new instance
+
+
+
+ Creates a reverse patcher for one of your stub methods
+ The original method/constructor
+ The stand-in stub method as
+ A new instance
+
+
+
+ Searches an assembly for Harmony annotations and uses them to create patches
+ The assembly
+
+
+
+ Creates patches by manually specifying the methods
+ The original method/constructor
+ An optional prefix method wrapped in a object
+ An optional postfix method wrapped in a object
+ An optional transpiler method wrapped in a object
+ An optional finalizer method wrapped in a object
+ The replacement method that was created to patch the original method
+
+
+
+ Patches a foreign method onto a stub method of yours and optionally applies transpilers during the process
+ The original method/constructor you want to duplicate
+ Your stub method as that will become the original. Needs to have the correct signature (either original or whatever your transpilers generates)
+ An optional transpiler as method that will be applied during the process
+ The replacement method that was created to patch the stub method
+
+
+
+ Unpatches methods by patching them with zero patches. Fully unpatching is not supported. Be careful, unpatching is global
+ The optional Harmony ID to restrict unpatching to a specific Harmony instance
+ This method could be static if it wasn't for the fact that unpatching creates a new replacement method that contains your harmony ID
+
+
+
+ Unpatches a method by patching it with zero patches. Fully unpatching is not supported. Be careful, unpatching is global
+ The original method/constructor
+ The
+ The optional Harmony ID to restrict unpatching to a specific Harmony instance
+
+
+
+ Unpatches a method by patching it with zero patches. Fully unpatching is not supported. Be careful, unpatching is global
+ The original method/constructor
+ The patch method as method to remove
+
+
+
+ Test for patches from a specific Harmony ID
+ The Harmony ID
+ True if patches for this ID exist
+
+
+
+ Gets patch information for a given original method
+ The original method/constructor
+ The patch information as
+
+
+
+ Gets the methods this instance has patched
+ An enumeration of original methods/constructors
+
+
+
+ Gets all patched original methods in the appdomain
+ An enumeration of patched original methods/constructors
+
+
+
+ Gets Harmony version for all active Harmony instances
+ [out] The current Harmony version
+ A dictionary containing assembly versions keyed by Harmony IDs
+
+
+
+ Under Mono, HarmonyException wraps IL compile errors with detailed information about the failure
+
+
+
+ Default serialization constructor (not implemented)
+ The info
+ The context
+
+
+
+ Get a list of IL instructions in pairs of offset+code
+ A list of key/value pairs which represent an offset and the code at that offset
+
+
+
+ Get a list of IL instructions without offsets
+ A list of
+
+
+
+ Get the error offset of the errornous IL instruction
+ The offset
+
+
+
+ Get the index of the errornous IL instruction
+ The index into the list of instructions or -1 if not found
+
+
+
+ A wrapper around a method to use it as a patch (for example a Prefix)
+
+
+
+ The original method
+
+
+
+ Class/type declaring this patch
+
+
+
+ Patch method name
+
+
+
+ Optional patch
+
+
+
+ Array of argument types of the patch method
+
+
+
+ of the patch
+
+
+
+ Install this patch before patches with these Harmony IDs
+
+
+
+ Install this patch after patches with these Harmony IDs
+
+
+
+ Reverse patch type, see
+
+
+
+ Create debug output for this patch
+
+
+
+ Whether to use (true ) or (false ) mechanics
+ for -attributed delegate
+
+
+
+ Default constructor
+
+
+
+ Creates a patch from a given method
+ The original method
+
+
+
+ Creates a patch from a given method
+ The original method
+ The patch
+ A list of harmony IDs that should come after this patch
+ A list of harmony IDs that should come before this patch
+ Set to true to generate debug output
+
+
+
+ Creates a patch from a given method
+ The patch class/type
+ The patch method name
+ The optional argument types of the patch method (for overloaded methods)
+
+
+
+ Gets the names of all internal patch info fields
+ A list of field names
+
+
+
+ Merges annotations
+ The list of to merge
+ The merged
+
+
+
+ Returns a string that represents the annotation
+ A string representation
+
+
+
+ Annotation extensions
+
+
+
+ Copies annotation information
+ The source
+ The destination
+
+
+
+ Clones an annotation
+ The to clone
+ A copied
+
+
+
+ Merges annotations
+ The master
+ The detail
+ A new, merged
+
+
+
+ Gets all annotations on a class/type
+ The class/type
+ A list of all
+
+
+
+ Gets merged annotations on a class/type
+ The class/type
+ The merged
+
+
+
+ Gets all annotations on a method
+ The method/constructor
+ A list of
+
+
+
+ Gets merged annotations on a method
+ The method/constructor
+ The merged
+
+
+
+
+ A mutable representation of an inline signature, similar to Mono.Cecil's CallSite.
+ Used by the calli instruction, can be used by transpilers
+
+
+
+
+ See
+
+
+
+ See
+
+
+
+ See
+
+
+
+ The list of all parameter types or function pointer signatures received by the call site
+
+
+
+ The return type or function pointer signature returned by the call site
+
+
+
+ Returns a string representation of the inline signature
+ A string representation of the inline signature
+
+
+
+
+ A mutable representation of a parameter type with an attached type modifier,
+ similar to Mono.Cecil's OptionalModifierType / RequiredModifierType and C#'s modopt / modreq
+
+
+
+
+ Whether this is a modopt (optional modifier type) or a modreq (required modifier type)
+
+
+
+ The modifier type attached to the parameter type
+
+
+
+ The modified parameter type
+
+
+
+ Returns a string representation of the modifier type
+ A string representation of the modifier type
+
+
+
+ Patch serialization
+
+
+
+ Control the binding of a serialized object to a type
+ Specifies the assembly name of the serialized object
+ Specifies the type name of the serialized object
+ The type of the object the formatter creates a new instance of
+
+
+
+ Serializes a patch info
+ The
+ The serialized data
+
+
+
+ Deserialize a patch info
+ The serialized data
+ A
+
+
+
+ Compare function to sort patch priorities
+ The patch
+ Zero-based index
+ The priority
+ A standard sort integer (-1, 0, 1)
+
+
+
+ Serializable patch information
+
+
+
+ Prefixes as an array of
+
+
+
+ Postfixes as an array of
+
+
+
+ Transpilers as an array of
+
+
+
+ Finalizers as an array of
+
+
+
+ Default constructor
+
+
+
+ Returns if any of the patches wants debugging turned on
+
+
+
+ Adds a prefix
+
+ The prefix method
+ An owner (Harmony ID)
+ The priority, see
+ A list of Harmony IDs for prefixes that should run after this prefix
+ A list of Harmony IDs for prefixes that should run before this prefix
+ A flag that will log the replacement method via every time this prefix is used to build the replacement, even in the future
+
+
+
+ Removes prefixes
+ The owner of the prefix or * for any prefix
+
+
+
+ Adds a postfix
+ The postfix method
+ An owner (Harmony ID)
+ The priority, see
+ A list of Harmony IDs for postfixes that should run after this postfix
+ A list of Harmony IDs for postfixes that should run before this postfix
+ A flag that will log the replacement method via every time this postfix is used to build the replacement, even in the future
+
+
+
+ Removes postfixes
+ The owner of the postfix or * for any postfix
+
+
+
+ Adds a transpiler
+ The transpiler method
+ An owner (Harmony ID)
+ The priority, see
+ A list of Harmony IDs for transpilers that should run after this transpiler
+ A list of Harmony IDs for transpilers that should run before this transpiler
+ A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future
+
+
+
+ Removes transpilers
+ The owner of the transpiler or * for any transpiler
+
+
+
+ Adds a finalizer
+ The finalizer method
+ An owner (Harmony ID)
+ The priority, see
+ A list of Harmony IDs for finalizers that should run after this finalizer
+ A list of Harmony IDs for finalizers that should run before this finalizer
+ A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future
+
+
+
+ Removes finalizers
+ The owner of the finalizer or * for any finalizer
+
+
+
+ Removes a patch using its method
+ The method of the patch to remove
+
+
+
+ A serializable patch
+
+
+
+ Zero-based index
+
+
+
+ The owner (Harmony ID)
+
+
+
+ The priority, see
+
+
+
+ Keep this patch before the patches indicated in the list of Harmony IDs
+
+
+
+ Keep this patch after the patches indicated in the list of Harmony IDs
+
+
+
+ A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future
+
+
+
+ The method of the static patch method
+
+
+
+ Creates a patch
+ The method of the patch
+ Zero-based index
+ An owner (Harmony ID)
+ The priority, see
+ A list of Harmony IDs for patches that should run after this patch
+ A list of Harmony IDs for patches that should run before this patch
+ A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future
+
+
+
+ Get the patch method or a DynamicMethod if original patch method is a patch factory
+ The original method/constructor
+ The method of the patch
+
+
+
+ Determines whether patches are equal
+ The other patch
+ true if equal
+
+
+
+ Determines how patches sort
+ The other patch
+ integer to define sort order (-1, 0, 1)
+
+
+
+ Hash function
+ A hash code
+
+
+
+ A PatchClassProcessor used to turn on a class/type into patches
+
+
+
+ Creates a patch class processor by pointing out a class. Similar to PatchAll() but without searching through all classes.
+ The Harmony instance
+ The class to process (need to have at least a [HarmonyPatch] attribute)
+
+
+
+ Applies the patches
+ A list of all created replacement methods or null if patch class is not annotated
+
+
+
+ A group of patches
+
+
+
+ A collection of prefix
+
+
+
+ A collection of postfix
+
+
+
+ A collection of transpiler
+
+
+
+ A collection of finalizer
+
+
+
+ Gets all owners (Harmony IDs) or all known patches
+ The patch owners
+
+
+
+ Creates a group of patches
+ An array of prefixes as
+ An array of postfixes as
+ An array of transpileres as
+ An array of finalizeres as
+
+
+
+ A PatchProcessor handles patches on a method/constructor
+
+
+
+ Creates an empty patch processor
+ The Harmony instance
+ The original method/constructor
+
+
+
+ Adds a prefix
+ The prefix as a
+ A for chaining calls
+
+
+
+ Adds a prefix
+ The prefix method
+ A for chaining calls
+
+
+
+ Adds a postfix
+ The postfix as a
+ A for chaining calls
+
+
+
+ Adds a postfix
+ The postfix method
+ A for chaining calls
+
+
+
+ Adds a transpiler
+ The transpiler as a
+ A for chaining calls
+
+
+
+ Adds a transpiler
+ The transpiler method
+ A for chaining calls
+
+
+
+ Adds a finalizer
+ The finalizer as a
+ A for chaining calls
+
+
+
+ Adds a finalizer
+ The finalizer method
+ A for chaining calls
+
+
+
+ Gets all patched original methods in the appdomain
+ An enumeration of patched method/constructor
+
+
+
+ Applies all registered patches
+ The generated replacement method
+
+
+
+ Unpatches patches of a given type and/or Harmony ID
+ The patch type
+ Harmony ID or * for any
+ A for chaining calls
+
+
+
+ Unpatches a specific patch
+ The method of the patch
+ A for chaining calls
+
+
+
+ Gets patch information on an original
+ The original method/constructor
+ The patch information as
+
+
+
+ Sort patch methods by their priority rules
+ The original method
+ Patches to sort
+ The sorted patch methods
+
+
+
+ Gets Harmony version for all active Harmony instances
+ [out] The current Harmony version
+ A dictionary containing assembly version keyed by Harmony ID
+
+
+
+ Creates a new empty generator to use when reading method bodies
+ A new
+
+
+
+ Creates a new generator matching the method/constructor to use when reading method bodies
+ The original method/constructor to copy method information from
+ A new
+
+
+
+ Returns the methods unmodified list of code instructions
+ The original method/constructor
+ Optionally an existing generator that will be used to create all local variables and labels contained in the result (if not specified, an internal generator is used)
+ A list containing all the original
+
+
+
+ Returns the methods unmodified list of code instructions
+ The original method/constructor
+ A new generator that now contains all local variables and labels contained in the result
+ A list containing all the original
+
+
+
+ Returns the methods current list of code instructions after all existing transpilers have been applied
+ The original method/constructor
+ Apply only the first count of transpilers
+ Optionally an existing generator that will be used to create all local variables and labels contained in the result (if not specified, an internal generator is used)
+ A list of
+
+
+
+ Returns the methods current list of code instructions after all existing transpilers have been applied
+ The original method/constructor
+ A new generator that now contains all local variables and labels contained in the result
+ Apply only the first count of transpilers
+ A list of
+
+
+
+ A low level way to read the body of a method. Used for quick searching in methods
+ The original method
+ All instructions as opcode/operand pairs
+
+
+
+ A low level way to read the body of a method. Used for quick searching in methods
+ The original method
+ An existing generator that will be used to create all local variables and labels contained in the result
+ All instructions as opcode/operand pairs
+
+
+
+ A patch priority
+
+
+
+ Patch last
+
+
+
+ Patch with very low priority
+
+
+
+ Patch with low priority
+
+
+
+ Patch with lower than normal priority
+
+
+
+ Patch with normal priority
+
+
+
+ Patch with higher than normal priority
+
+
+
+ Patch with high priority
+
+
+
+ Patch with very high priority
+
+
+
+ Patch first
+
+
+
+ A reverse patcher
+
+
+
+ Creates a reverse patcher
+ The Harmony instance
+ The original method/constructor
+ Your stand-in stub method as
+
+
+
+ Applies the patch
+ The type of patch, see
+ The generated replacement method
+
+
+
+ A collection of commonly used transpilers
+
+
+
+ A transpiler that replaces all occurrences of a given method with another one
+ The enumeration of to act on
+ Method or constructor to search for
+ Method or constructor to replace with
+ Modified enumeration of
+
+
+
+ A transpiler that alters instructions that match a predicate by calling an action
+ The enumeration of to act on
+ A predicate selecting the instructions to change
+ An action to apply to matching instructions
+ Modified enumeration of
+
+
+
+ A transpiler that logs a text at the beginning of the method
+ The instructions to act on
+ The log text
+ Modified enumeration of
+
+
+
+ A helper class for reflection related functions
+
+
+
+ Shortcut for to simplify the use of reflections and make it work for any access level
+
+
+
+ Shortcut for to simplify the use of reflections and make it work for any access level but only within the current type
+
+
+
+ Gets a type by name. Prefers a full name with namespace but falls back to the first type matching the name otherwise
+ The name
+ A type or null if not found
+
+
+
+ Gets all successfully loaded types from a given assembly
+ The assembly
+ An array of types
+
+ This calls and returns , while catching any thrown .
+ If such an exception is thrown, returns the successfully loaded types ( ,
+ filtered for non-null values).
+
+
+
+
+ Applies a function going up the type hierarchy and stops at the first non null result
+ Result type of func()
+ The class/type to start with
+ The evaluation function returning T
+ Returns the first non null result or default(T) when reaching the top level type object
+
+
+
+ Applies a function going into inner types and stops at the first non null result
+ Generic type parameter
+ The class/type to start with
+ The evaluation function returning T
+ Returns the first non null result or null with no match
+
+
+
+ Gets the reflection information for a directly declared field
+ The class/type where the field is defined
+ The name of the field
+ A field or null when type/name is null or when the field cannot be found
+
+
+
+ Gets the reflection information for a field by searching the type and all its super types
+ The class/type where the field is defined
+ The name of the field (case sensitive)
+ A field or null when type/name is null or when the field cannot be found
+
+
+
+ Gets the reflection information for a field
+ The class/type where the field is declared
+ The zero-based index of the field inside the class definition
+ A field or null when type is null or when the field cannot be found
+
+
+
+ Gets the reflection information for a directly declared property
+ The class/type where the property is declared
+ The name of the property (case sensitive)
+ A property or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for the getter method of a directly declared property
+ The class/type where the property is declared
+ The name of the property (case sensitive)
+ A method or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for the setter method of a directly declared property
+ The class/type where the property is declared
+ The name of the property (case sensitive)
+ A method or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for a property by searching the type and all its super types
+ The class/type
+ The name
+ A property or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for the getter method of a property by searching the type and all its super types
+ The class/type
+ The name
+ A method or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for the setter method of a property by searching the type and all its super types
+ The class/type
+ The name
+ A method or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for a directly declared method
+ The class/type where the method is declared
+ The name of the method (case sensitive)
+ Optional parameters to target a specific overload of the method
+ Optional list of types that define the generic version of the method
+ A method or null when type/name is null or when the method cannot be found
+
+
+
+ Gets the reflection information for a method by searching the type and all its super types
+ The class/type where the method is declared
+ The name of the method (case sensitive)
+ Optional parameters to target a specific overload of the method
+ Optional list of types that define the generic version of the method
+ A method or null when type/name is null or when the method cannot be found
+
+
+
+ Gets the reflection information for a method by searching the type and all its super types
+ The target method in the form TypeFullName:MethodName , where the type name matches a form recognized by Type.GetType like Some.Namespace.Type .
+ Optional parameters to target a specific overload of the method
+ Optional list of types that define the generic version of the method
+ A method or null when type/name is null or when the method cannot be found
+
+
+
+ Gets the names of all method that are declared in a type
+ The declaring class/type
+ A list of method names
+
+
+
+ Gets the names of all method that are declared in the type of the instance
+ An instance of the type to search in
+ A list of method names
+
+
+
+ Gets the names of all fields that are declared in a type
+ The declaring class/type
+ A list of field names
+
+
+
+ Gets the names of all fields that are declared in the type of the instance
+ An instance of the type to search in
+ A list of field names
+
+
+
+ Gets the names of all properties that are declared in a type
+ The declaring class/type
+ A list of property names
+
+
+
+ Gets the names of all properties that are declared in the type of the instance
+ An instance of the type to search in
+ A list of property names
+
+
+
+ Gets the type of any class member of
+ A member
+ The class/type of this member
+
+
+
+ Test if a class member is actually an concrete implementation
+ A member
+ True if the member is a declared
+
+
+
+ Gets the real implementation of a class member
+ A member
+ The member itself if its declared. Otherwise the member that is actually implemented in some base type
+
+
+
+ Gets the reflection information for a directly declared constructor
+ The class/type where the constructor is declared
+ Optional parameters to target a specific overload of the constructor
+ Optional parameters to only consider static constructors
+ A constructor info or null when type is null or when the constructor cannot be found
+
+
+
+ Gets the reflection information for a constructor by searching the type and all its super types
+ The class/type where the constructor is declared
+ Optional parameters to target a specific overload of the method
+ Optional parameters to only consider static constructors
+ A constructor info or null when type is null or when the method cannot be found
+
+
+
+ Gets reflection information for all declared constructors
+ The class/type where the constructors are declared
+ Optional parameters to only consider static constructors
+ A list of constructor infos
+
+
+
+ Gets reflection information for all declared methods
+ The class/type where the methods are declared
+ A list of methods
+
+
+
+ Gets reflection information for all declared properties
+ The class/type where the properties are declared
+ A list of properties
+
+
+
+ Gets reflection information for all declared fields
+ The class/type where the fields are declared
+ A list of fields
+
+
+
+ Gets the return type of a method or constructor
+ The method/constructor
+ The return type
+
+
+
+ Given a type, returns the first inner type matching a recursive search by name
+ The class/type to start searching at
+ The name of the inner type (case sensitive)
+ The inner type or null if type/name is null or if a type with that name cannot be found
+
+
+
+ Given a type, returns the first inner type matching a recursive search with a predicate
+ The class/type to start searching at
+ The predicate to search with
+ The inner type or null if type/predicate is null or if a type with that name cannot be found
+
+
+
+ Given a type, returns the first method matching a predicate
+ The class/type to start searching at
+ The predicate to search with
+ The method or null if type/predicate is null or if a type with that name cannot be found
+
+
+
+ Given a type, returns the first constructor matching a predicate
+ The class/type to start searching at
+ The predicate to search with
+ The constructor info or null if type/predicate is null or if a type with that name cannot be found
+
+
+
+ Given a type, returns the first property matching a predicate
+ The class/type to start searching at
+ The predicate to search with
+ The property or null if type/predicate is null or if a type with that name cannot be found
+
+
+
+ Returns an array containing the type of each object in the given array
+ An array of objects
+ An array of types or an empty array if parameters is null (if an object is null, the type for it will be object)
+
+
+
+ Creates an array of input parameters for a given method and a given set of potential inputs
+ The method/constructor you are planing to call
+ The possible input parameters in any order
+ An object array matching the method signature
+
+
+
+ A read/writable reference to an instance field
+ The class the field is defined in or "object" if type cannot be accessed at compile time
+ The type of the field
+ The runtime instance to access the field (leave empty for static fields)
+ An readable/assignable object representing the field
+
+
+
+ Creates an instance field reference
+ The class the field is defined in
+ The type of the field
+ The name of the field
+ A read and writable field reference delegate
+
+
+
+ Creates an instance field reference for a specific instance
+ The class the field is defined in
+ The type of the field
+ The instance
+ The name of the field
+ An readable/assignable object representing the field
+
+
+
+ Creates an instance field reference delegate for a private type
+ The type of the field
+ The class/type
+ The name of the field
+ A read and writable delegate
+
+
+
+ Creates an instance field reference delegate for a fieldinfo
+ The class the field is defined in or "object" if type cannot be accessed at compile time
+ The type of the field
+ The field of the field
+ A read and writable delegate
+
+
+
+ Creates a static field reference
+ The class the field is defined in or "object" if type cannot be accessed at compile time
+ The type of the field
+ The name of the field
+ An readable/assignable object representing the static field
+
+
+
+ Creates a static field reference
+ The type of the field
+ The class/type
+ The name of the field
+ An readable/assignable object representing the static field
+
+
+
+ Creates a static field reference
+ The class the field is defined in or "object" if type cannot be accessed at compile time
+ The type of the field
+ The field
+ An readable/assignable object representing the static field
+
+
+
+ A read/writable reference delegate to a static field
+ The type of the field
+ An readable/assignable object representing the static field
+
+
+
+ Creates a static field reference delegate
+ The type of the field
+ The field
+ A read and writable delegate
+
+
+
+ Creates a delegate to a given method
+ The delegate Type
+ The method to create a delegate from.
+
+ Only applies for instance methods. If null (default), returned delegate is an open (a.k.a. unbound) instance delegate
+ where an instance is supplied as the first argument to the delegate invocation; else, delegate is a closed (a.k.a. bound)
+ instance delegate where the delegate invocation always applies to the given .
+
+
+ Only applies for instance methods. If true (default) and is virtual, invocation of the delegate
+ calls the instance method virtually (the instance type's most-derived/overriden implementation of the method is called);
+ else, invocation of the delegate calls the exact specified (this is useful for calling base class methods)
+ Note: if false and is an interface method, an ArgumentException is thrown.
+
+ A delegate of given to given
+
+
+ Delegate invocation is more performant and more convenient to use than
+ at a one-time setup cost.
+
+
+ Works for both type of static and instance methods, both open and closed (a.k.a. unbound and bound) instance methods,
+ and both class and struct methods.
+
+
+
+
+
+ Creates a delegate for a given delegate definition, attributed with [ ]
+ The delegate Type, attributed with [ ]
+
+ Only applies for instance methods. If null (default), returned delegate is an open (a.k.a. unbound) instance delegate
+ where an instance is supplied as the first argument to the delegate invocation; else, delegate is a closed (a.k.a. bound)
+ instance delegate where the delegate invocation always applies to the given .
+
+ A delegate of given to the method specified via [ ]
+ attributes on
+
+ This calls with the method and virtualCall arguments
+ determined from the [ ] attributes on ,
+ and the given (for closed instance delegates).
+
+
+
+
+ Returns who called the current method
+ The calling method/constructor (excluding the caller)
+
+
+
+ Rethrows an exception while preserving its stack trace (throw statement typically clobbers existing stack traces)
+ The exception to rethrow
+
+
+
+ True if the current runtime is based on Mono, false otherwise (.NET)
+
+
+
+ True if the current runtime is .NET Framework, false otherwise (.NET Core or Mono, although latter isn't guaranteed)
+
+
+
+ True if the current runtime is .NET Core, false otherwise (Mono or .NET Framework)
+
+
+
+ Throws a missing member runtime exception
+ The type that is involved
+ A list of names
+
+
+
+ Gets default value for a specific type
+ The class/type
+ The default value
+
+
+
+ Creates an (possibly uninitialized) instance of a given type
+ The class/type
+ The new instance
+
+
+
+ Makes a deep copy of any object
+ The type of the instance that should be created
+ The original object
+ A copy of the original object but of type T
+
+
+
+ Makes a deep copy of any object
+ The type of the instance that should be created
+ The original object
+ [out] The copy of the original object
+ Optional value transformation function (taking a field name and src/dst instances)
+ The optional path root to start with
+
+
+
+ Makes a deep copy of any object
+ The original object
+ The type of the instance that should be created
+ Optional value transformation function (taking a field name and src/dst instances)
+ The optional path root to start with
+ The copy of the original object
+
+
+
+ Tests if a type is a struct
+ The type
+ True if the type is a struct
+
+
+
+ Tests if a type is a class
+ The type
+ True if the type is a class
+
+
+
+ Tests if a type is a value type
+ The type
+ True if the type is a value type
+
+
+
+ Tests if a type is an integer type
+ The type
+ True if the type represents some integer
+
+
+
+ Tests if a type is a floating point type
+ The type
+ True if the type represents some floating point
+
+
+
+ Tests if a type is a numerical type
+ The type
+ True if the type represents some number
+
+
+
+ Tests if a type is void
+ The type
+ True if the type is void
+
+
+
+ Test whether an instance is of a nullable type
+ Type of instance
+ An instance to test
+ True if instance is of nullable type, false if not
+
+
+
+ Tests whether a type or member is static, as defined in C#
+ The type or member
+ True if the type or member is static
+
+
+
+ Tests whether a type is static, as defined in C#
+ The type
+ True if the type is static
+
+
+
+ Tests whether a property is static, as defined in C#
+ The property
+ True if the property is static
+
+
+
+ Tests whether an event is static, as defined in C#
+ The event
+ True if the event is static
+
+
+
+ Calculates a combined hash code for an enumeration of objects
+ The objects
+ The hash code
+
+
+
+ General extensions for common cases
+
+
+
+ Joins an enumeration with a value converter and a delimiter to a string
+ The inner type of the enumeration
+ The enumeration
+ An optional value converter (from T to string)
+ An optional delimiter
+ The values joined into a string
+
+
+
+ Converts an array of types (for example methods arguments) into a human readable form
+ The array of types
+ A human readable description including brackets
+
+
+
+ A full description of a type
+ The type
+ A human readable description
+
+
+
+ A a full description of a method or a constructor without assembly details but with generics
+ The method/constructor
+ A human readable description
+
+
+
+ A helper converting parameter infos to types
+ The array of parameter infos
+ An array of types
+
+
+
+ A helper to access a value via key from a dictionary
+ The key type
+ The value type
+ The dictionary
+ The key
+ The value for the key or the default value (of T) if that key does not exist
+
+
+
+ A helper to access a value via key from a dictionary with extra casting
+ The value type
+ The dictionary
+ The key
+ The value for the key or the default value (of T) if that key does not exist or cannot be cast to T
+
+
+
+ Escapes Unicode and ASCII non printable characters
+ The string to convert
+ The string to convert
+ A string literal surrounded by
+
+
+
+ Extensions for
+
+
+
+ Shortcut for testing whether the operand is equal to a non-null value
+ The
+ The value
+ True if the operand has the same type and is equal to the value
+
+
+
+ Shortcut for testing whether the operand is equal to a non-null value
+ The
+ The value
+ True if the operand is equal to the value
+ This is an optimized version of for
+
+
+
+ Shortcut for code.opcode == opcode && code.OperandIs(operand)
+ The
+ The
+ The operand value
+ True if the opcode is equal to the given opcode and the operand has the same type and is equal to the given operand
+
+
+
+ Shortcut for code.opcode == opcode && code.OperandIs(operand)
+ The
+ The
+ The operand value
+ True if the opcode is equal to the given opcode and the operand is equal to the given operand
+ This is an optimized version of for
+
+
+
+ Tests for any form of Ldarg*
+ The
+ The (optional) index
+ True if it matches one of the variations
+
+
+
+ Tests for Ldarga/Ldarga_S
+ The
+ The (optional) index
+ True if it matches one of the variations
+
+
+
+ Tests for Starg/Starg_S
+ The
+ The (optional) index
+ True if it matches one of the variations
+
+
+
+ Tests for any form of Ldloc*
+ The
+ The optional local variable
+ True if it matches one of the variations
+
+
+
+ Tests for any form of Stloc*
+ The
+ The optional local variable
+ True if it matches one of the variations
+
+
+
+ Tests if the code instruction branches
+ The
+ The label if the instruction is a branch operation or if not
+ True if the instruction branches
+
+
+
+ Tests if the code instruction calls the method/constructor
+ The
+ The method
+ True if the instruction calls the method or constructor
+
+
+
+ Tests if the code instruction loads a constant
+ The
+ True if the instruction loads a constant
+
+
+
+ Tests if the code instruction loads an integer constant
+ The
+ The integer constant
+ True if the instruction loads the constant
+
+
+
+ Tests if the code instruction loads a floating point constant
+ The
+ The floating point constant
+ True if the instruction loads the constant
+
+
+
+ Tests if the code instruction loads an enum constant
+ The
+ The enum
+ True if the instruction loads the constant
+
+
+
+ Tests if the code instruction loads a field
+ The
+ The field
+ Set to true if the address of the field is loaded
+ True if the instruction loads the field
+
+
+
+ Tests if the code instruction stores a field
+ The
+ The field
+ True if the instruction stores this field
+
+
+
+ Adds labels to the code instruction and return it
+ The
+ One or several to add
+ The same code instruction
+
+
+ Adds labels to the code instruction and return it
+ The
+ An enumeration of
+ The same code instruction
+
+
+ Extracts all labels from the code instruction and returns them
+ The
+ A list of
+
+
+ Moves all labels from the code instruction to a different one
+ The to move the labels from
+ The to move the labels to
+ The code instruction labels were moved from (now empty)
+
+
+ Moves all labels from a different code instruction to the current one
+ The to move the labels from
+ The to move the labels to
+ The code instruction that received the labels
+
+
+ Adds ExceptionBlocks to the code instruction and return it
+ The
+ One or several to add
+ The same code instruction
+
+
+ Adds ExceptionBlocks to the code instruction and return it
+ The
+ An enumeration of
+ The same code instruction
+
+
+ Extracts all ExceptionBlocks from the code instruction and returns them
+ The
+ A list of
+
+
+ Moves all ExceptionBlocks from the code instruction to a different one
+ The to move the ExceptionBlocks from
+ The to move the ExceptionBlocks to
+ The code instruction blocks were moved from (now empty)
+
+
+ Moves all ExceptionBlocks from a different code instruction to the current one
+ The to move the ExceptionBlocks from
+ The to move the ExceptionBlocks to
+ The code instruction that received the blocks
+
+
+ General extensions for collections
+
+
+
+ A simple way to execute code for every element in a collection
+ The inner type of the collection
+ The collection
+ The action to execute
+
+
+
+ A simple way to execute code for elements in a collection matching a condition
+ The inner type of the collection
+ The collection
+ The predicate
+ The action to execute
+
+
+
+ A helper to add an item to a collection
+ The inner type of the collection
+ The collection
+ The item to add
+ The collection containing the item
+
+
+
+ A helper to add an item to an array
+ The inner type of the collection
+ The array
+ The item to add
+ The array containing the item
+
+
+
+ A helper to add items to an array
+ The inner type of the collection
+ The array
+ The items to add
+ The array containing the items
+
+
+
+ General extensions for collections
+
+
+
+ Tests a class member if it has an IL method body (external methods for example don't have a body)
+ The member to test
+ Returns true if the member has an IL body or false if not
+
+
+ A file log for debugging
+
+
+
+ Full pathname of the log file, defaults to a file called harmony.log.txt on your Desktop
+
+
+
+ The indent character. The default is tab
+
+
+
+ The current indent level
+
+
+
+ Changes the indentation level
+ The value to add to the indentation level
+
+
+
+ Log a string in a buffered way. Use this method only if you are sure that FlushBuffer will be called
+ or else logging information is incomplete in case of a crash
+ The string to log
+
+
+
+ Logs a list of string in a buffered way. Use this method only if you are sure that FlushBuffer will be called
+ or else logging information is incomplete in case of a crash
+ A list of strings to log (they will not be re-indented)
+
+
+
+ Returns the log buffer and optionally empties it
+ True to empty the buffer
+ The buffer.
+
+
+
+ Replaces the buffer with new lines
+ The lines to store
+
+
+
+ Flushes the log buffer to disk (use in combination with LogBuffered)
+
+
+
+ Log a string directly to disk. Slower method that prevents missing information in case of a crash
+ The string to log.
+
+
+
+ Resets and deletes the log
+
+
+
+ Logs some bytes as hex values
+ The pointer to some memory
+ The length of bytes to log
+
+
+
+ A helper class to retrieve reflection info for non-private methods
+
+
+
+ Given a lambda expression that calls a method, returns the method info
+ The lambda expression using the method
+ The method in the lambda expression
+
+
+
+ Given a lambda expression that calls a method, returns the method info
+ The generic type
+ The lambda expression using the method
+ The method in the lambda expression
+
+
+
+ Given a lambda expression that calls a method, returns the method info
+ The generic type
+ The generic result type
+ The lambda expression using the method
+ The method in the lambda expression
+
+
+
+ Given a lambda expression that calls a method, returns the method info
+ The lambda expression using the method
+ The method in the lambda expression
+
+
+
+ A reflection helper to read and write private elements
+ The result type defined by GetValue()
+
+
+
+ Creates a traverse instance from an existing instance
+ The existing instance
+
+
+
+ Gets/Sets the current value
+ The value to read or write
+
+
+
+ A reflection helper to read and write private elements
+
+
+
+ Creates a new traverse instance from a class/type
+ The class/type
+ A instance
+
+
+
+ Creates a new traverse instance from a class T
+ The class
+ A instance
+
+
+
+ Creates a new traverse instance from an instance
+ The object
+ A instance
+
+
+
+ Creates a new traverse instance from a named type
+ The type name, for format see
+ A instance
+
+
+
+ Creates a new and empty traverse instance
+
+
+
+ Creates a new traverse instance from a class/type
+ The class/type
+
+
+
+ Creates a new traverse instance from an instance
+ The object
+
+
+
+ Gets the current value
+ The value
+
+
+
+ Gets the current value
+ The type of the value
+ The value
+
+
+
+ Invokes the current method with arguments and returns the result
+ The method arguments
+ The value returned by the method
+
+
+
+ Invokes the current method with arguments and returns the result
+ The type of the value
+ The method arguments
+ The value returned by the method
+
+
+
+ Sets a value of the current field or property
+ The value
+ The same traverse instance
+
+
+
+ Gets the type of the current field or property
+ The type
+
+
+
+ Moves the current traverse instance to a inner type
+ The type name
+ A traverse instance
+
+
+
+ Moves the current traverse instance to a field
+ The type name
+ A traverse instance
+
+
+
+ Moves the current traverse instance to a field
+ The type of the field
+ The type name
+ A traverse instance
+
+
+
+ Gets all fields of the current type
+ A list of field names
+
+
+
+ Moves the current traverse instance to a property
+ The type name
+ Optional property index
+ A traverse instance
+
+
+
+ Moves the current traverse instance to a field
+ The type of the property
+ The type name
+ Optional property index
+ A traverse instance
+
+
+
+ Gets all properties of the current type
+ A list of property names
+
+
+
+ Moves the current traverse instance to a method
+ The name of the method
+ The arguments defining the argument types of the method overload
+ A traverse instance
+
+
+
+ Moves the current traverse instance to a method
+ The name of the method
+ The argument types of the method
+ The arguments for the method
+ A traverse instance
+
+
+
+ Gets all methods of the current type
+ A list of method names
+
+
+
+ Checks if the current traverse instance is for a field
+ True if its a field
+
+
+
+ Checks if the current traverse instance is for a property
+ True if its a property
+
+
+
+ Checks if the current traverse instance is for a method
+ True if its a method
+
+
+
+ Checks if the current traverse instance is for a type
+ True if its a type
+
+
+
+ Iterates over all fields of the current type and executes a traverse action
+ Original object
+ The action receiving a instance for each field
+
+
+
+ Iterates over all fields of the current type and executes a traverse action
+ Original object
+ Target object
+ The action receiving a pair of instances for each field pair
+
+
+
+ Iterates over all fields of the current type and executes a traverse action
+ Original object
+ Target object
+ The action receiving a dot path representing the field pair and the instances
+
+
+
+ Iterates over all properties of the current type and executes a traverse action
+ Original object
+ The action receiving a instance for each property
+
+
+
+ Iterates over all properties of the current type and executes a traverse action
+ Original object
+ Target object
+ The action receiving a pair of instances for each property pair
+
+
+
+ Iterates over all properties of the current type and executes a traverse action
+ Original object
+ Target object
+ The action receiving a dot path representing the property pair and the instances
+
+
+
+ A default field action that copies fields to fields
+
+
+
+ Returns a string that represents the current traverse
+ A string representation
+
+
+
+
diff --git a/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/net45/0Harmony.dll b/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/net45/0Harmony.dll
new file mode 100644
index 0000000..a3439a2
Binary files /dev/null and b/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/net45/0Harmony.dll differ
diff --git a/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/net45/0Harmony.xml b/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/net45/0Harmony.xml
new file mode 100644
index 0000000..6bcea2e
--- /dev/null
+++ b/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/net45/0Harmony.xml
@@ -0,0 +1,2900 @@
+
+
+
+ 0Harmony
+
+
+
+ A factory to create delegate types
+
+
+ Default constructor
+
+
+ Creates a delegate type for a method
+ The method
+ The new delegate type
+
+
+
+ A getter delegate type
+ Type that getter gets field/property value from
+ Type of the value that getter gets
+ The instance get getter uses
+ An delegate
+
+
+
+ A setter delegate type
+ Type that setter sets field/property value for
+ Type of the value that setter sets
+ The instance the setter uses
+ The value the setter uses
+ An delegate
+
+
+
+ A constructor delegate type
+ Type that constructor creates
+ An delegate
+
+
+
+ A helper class for fast access to getters and setters
+
+
+ Creates an instantiation delegate
+ Type that constructor creates
+ The new instantiation delegate
+
+
+
+ Creates an getter delegate for a property
+ Type that getter reads property from
+ Type of the property that gets accessed
+ The property
+ The new getter delegate
+
+
+
+ Creates an getter delegate for a field
+ Type that getter reads field from
+ Type of the field that gets accessed
+ The field
+ The new getter delegate
+
+
+
+ Creates an getter delegate for a field (with a list of possible field names)
+ Type that getter reads field/property from
+ Type of the field/property that gets accessed
+ A list of possible field names
+ The new getter delegate
+
+
+
+ Creates an setter delegate
+ Type that setter assigns property value to
+ Type of the property that gets assigned
+ The property
+ The new setter delegate
+
+
+
+ Creates an setter delegate for a field
+ Type that setter assigns field value to
+ Type of the field that gets assigned
+ The field
+ The new getter delegate
+
+
+
+ A delegate to invoke a method
+ The instance
+ The method parameters
+ The method result
+
+
+ A helper class to invoke method with delegates
+
+
+ Creates a fast invocation handler from a method
+ The method to invoke
+ Controls if boxed value object is accessed/updated directly
+ The
+
+
+ The directBoxValueAccess option controls how value types passed by reference (e.g. ref int, out my_struct) are handled in the arguments array
+ passed to the fast invocation handler.
+ Since the arguments array is an object array, any value types contained within it are actually references to a boxed value object.
+ Like any other object, there can be other references to such boxed value objects, other than the reference within the arguments array.
+ For example,
+
+ var val = 5;
+ var box = (object)val;
+ var arr = new object[] { box };
+ handler(arr); // for a method with parameter signature: ref/out/in int
+
+
+
+
+ If directBoxValueAccess is true , the boxed value object is accessed (and potentially updated) directly when the handler is called,
+ such that all references to the boxed object reflect the potentially updated value.
+ In the above example, if the method associated with the handler updates the passed (boxed) value to 10, both box and arr[0]
+ now reflect the value 10. Note that the original val is not updated, since boxing always copies the value into the new boxed value object.
+
+
+ If directBoxValueAccess is false (default), the boxed value object in the arguments array is replaced with a "reboxed" value object,
+ such that potential updates to the value are reflected only in the arguments array.
+ In the above example, if the method associated with the handler updates the passed (boxed) value to 10, only arr[0] now reflects the value 10.
+
+
+
+
+ A low level memory helper
+
+
+ Mark method for no inlining (currently only works on Mono)
+ The method/constructor to change
+
+
+ Detours a method
+ The original method/constructor
+ The replacement method/constructor
+ An error string
+
+
+
+ Writes a jump to memory
+ The memory address
+ Jump destination
+ An error string
+
+
+
+ Gets the start of a method in memory
+ The method/constructor
+ [out] Details of the exception
+ The method start address
+
+
+
+ special parameter names that can be used in prefix and postfix methods
+
+
+ Patch function helpers
+
+
+ Adds a prefix
+ The patch info
+ The owner (Harmony ID)
+ The annotation info
+
+
+
+ Removes a prefix
+ The patch info
+ The owner (Harmony ID)
+
+
+
+ Adds a postfix
+ The patch info
+ The owner (Harmony ID)
+ The annotation info
+
+
+
+ Removes a postfix
+ The patch info
+ The owner (Harmony ID)
+
+
+
+ Adds a transpiler
+ The patch info
+ The owner (Harmony ID)
+ The annotation info
+
+
+
+ Removes a transpiler
+ The patch info
+ The owner (Harmony ID)
+
+
+
+ Adds a finalizer
+ The patch info
+ The owner (Harmony ID)
+ The annotation info
+
+
+
+ Removes a finalizer
+ The patch info
+ The owner (Harmony ID)
+
+
+
+ Removes a patch method
+ The patch info
+ The patch method
+
+
+
+ Sorts patch methods by their priority rules
+ The original method
+ Patches to sort
+ Use debug mode
+ The sorted patch methods
+
+
+
+ Creates new replacement method with the latest patches and detours the original method
+ The original method
+ Information describing the patches
+ The newly created replacement method
+
+
+
+ Creates a patch sorter
+ Array of patches that will be sorted
+ Use debugging
+
+
+ Sorts internal PatchSortingWrapper collection and caches the results.
+ After first run the result is provided from the cache.
+ The original method
+ The sorted patch methods
+
+
+ Checks if the sorter was created with the same patch list and as a result can be reused to
+ get the sorted order of the patches.
+ List of patches to check against
+ true if equal
+
+
+ Removes one unresolved dependency from the least important patch.
+
+
+ Outputs all unblocked patches from the waiting list to results list
+
+
+ Adds patch to both results list and handled patches set
+ Patch to add
+
+
+ Wrapper used over the Patch object to allow faster dependency access and
+ dependency removal in case of cyclic dependencies
+
+
+ Create patch wrapper object used for sorting
+ Patch to wrap
+
+
+ Determines how patches sort
+ The other patch
+ integer to define sort order (-1, 0, 1)
+
+
+ Determines whether patches are equal
+ The other patch
+ true if equal
+
+
+ Hash function
+ A hash code
+
+
+ Bidirectionally registers Patches as after dependencies
+ List of dependencies to register
+
+
+ Bidirectionally registers Patches as before dependencies
+ List of dependencies to register
+
+
+ Bidirectionally removes Patch from after dependencies
+ Patch to remove
+
+
+ Bidirectionally removes Patch from before dependencies
+ Patch to remove
+
+
+ Specifies the type of method
+
+
+
+ This is a normal method
+
+
+ This is a getter
+
+
+ This is a setter
+
+
+ This is a constructor
+
+
+ This is a static constructor
+
+
+ Specifies the type of argument
+
+
+
+ This is a normal argument
+
+
+ This is a reference argument (ref)
+
+
+ This is an out argument (out)
+
+
+ This is a pointer argument (&)
+
+
+ Specifies the type of patch
+
+
+
+ Any patch
+
+
+ A prefix patch
+
+
+ A postfix patch
+
+
+ A transpiler
+
+
+ A finalizer
+
+
+ A reverse patch
+
+
+ Specifies the type of reverse patch
+
+
+
+ Use the unmodified original method (directly from IL)
+
+
+ Use the original as it is right now including previous patches but excluding future ones
+
+
+ Specifies the type of method call dispatching mechanics
+
+
+
+ Call the method using dynamic dispatching if method is virtual (including overriden)
+
+
+ This is the built-in form of late binding (a.k.a. dynamic binding) and is the default dispatching mechanic in C#.
+ This directly corresponds with the instruction.
+
+
+ For virtual (including overriden) methods, the instance type's most-derived/overriden implementation of the method is called.
+ For non-virtual (including static) methods, same behavior as : the exact specified method implementation is called.
+
+
+ Note: This is not a fully dynamic dispatch, since non-virtual (including static) methods are still called non-virtually.
+ A fully dynamic dispatch in C# involves using
+ the dynamic type
+ (actually a fully dynamic binding, since even the name and overload resolution happens at runtime), which does not support.
+
+
+
+
+ Call the method using static dispatching, regardless of whether method is virtual (including overriden) or non-virtual (including static)
+
+
+ a.k.a. non-virtual dispatching, early binding, or static binding.
+ This directly corresponds with the instruction.
+
+
+ For both virtual (including overriden) and non-virtual (including static) methods, the exact specified method implementation is called, without virtual/override mechanics.
+
+
+
+
+ The base class for all Harmony annotations (not meant to be used directly)
+
+
+
+ The common information for all attributes
+
+
+ Annotation to define your Harmony patch methods
+
+
+
+ An empty annotation can be used together with TargetMethod(s)
+
+
+
+ An annotation that specifies a class to patch
+ The declaring class/type
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The argument types of the method or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+ Array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+ An array of argument types to target overloads
+ Array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+ An array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The
+ An array of argument types to target overloads
+ An array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ An array of argument types to target overloads
+ An array of
+
+
+
+ Annotation to define the original method for delegate injection
+
+
+
+ An annotation that specifies a class to patch
+ The declaring class/type
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The argument types of the method or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+ Array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+ An array of argument types to target overloads
+ Array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+ An array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ The
+
+
+
+ An annotation that specifies call dispatching mechanics for the delegate
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The
+ An array of argument types to target overloads
+ An array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ An array of argument types to target overloads
+ An array of
+
+
+
+ Annotation to define your standin methods for reverse patching
+
+
+
+ An annotation that specifies the type of reverse patching
+ The of the reverse patch
+
+
+
+ A Harmony annotation to define that all methods in a class are to be patched
+
+
+
+ A Harmony annotation
+
+
+
+ A Harmony annotation to define patch priority
+ The priority
+
+
+
+ A Harmony annotation
+
+
+
+ A Harmony annotation to define that a patch comes before another patch
+ The array of harmony IDs of the other patches
+
+
+
+ A Harmony annotation
+
+
+ A Harmony annotation to define that a patch comes after another patch
+ The array of harmony IDs of the other patches
+
+
+
+ A Harmony annotation
+
+
+ A Harmony annotation to debug a patch (output uses to log to your Desktop)
+
+
+
+ Specifies the Prepare function in a patch class
+
+
+
+ Specifies the Cleanup function in a patch class
+
+
+
+ Specifies the TargetMethod function in a patch class
+
+
+
+ Specifies the TargetMethods function in a patch class
+
+
+
+ Specifies the Prefix function in a patch class
+
+
+
+ Specifies the Postfix function in a patch class
+
+
+
+ Specifies the Transpiler function in a patch class
+
+
+
+ Specifies the Finalizer function in a patch class
+
+
+
+ A Harmony annotation
+
+
+
+ The name of the original argument
+
+
+
+ The index of the original argument
+
+
+
+ The new name of the original argument
+
+
+
+ An annotation to declare injected arguments by name
+
+
+
+ An annotation to declare injected arguments by index
+ Zero-based index
+
+
+
+ An annotation to declare injected arguments by renaming them
+ Name of the original argument
+ New name
+
+
+
+ An annotation to declare injected arguments by index and renaming them
+ Zero-based index
+ New name
+
+
+
+ An abstract wrapper around OpCode and their operands. Used by transpilers
+
+
+
+ The opcode
+
+
+
+ The operand
+
+
+
+ All labels defined on this instruction
+
+
+
+ All exception block boundaries defined on this instruction
+
+
+
+ Creates a new CodeInstruction with a given opcode and optional operand
+ The opcode
+ The operand
+
+
+
+ Create a full copy (including labels and exception blocks) of a CodeInstruction
+ The to copy
+
+
+
+ Clones a CodeInstruction and resets its labels and exception blocks
+ A lightweight copy of this code instruction
+
+
+
+ Clones a CodeInstruction, resets labels and exception blocks and sets its opcode
+ The opcode
+ A copy of this CodeInstruction with a new opcode
+
+
+
+ Clones a CodeInstruction, resets labels and exception blocks and sets its operand
+ The operand
+ A copy of this CodeInstruction with a new operand
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The class/type where the method is declared
+ The name of the method (case sensitive)
+ Optional parameters to target a specific overload of the method
+ Optional list of types that define the generic version of the method
+ A code instruction that calls the method matching the arguments
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The target method in the form TypeFullName:MethodName , where the type name matches a form recognized by Type.GetType like Some.Namespace.Type .
+ Optional parameters to target a specific overload of the method
+ Optional list of types that define the generic version of the method
+ A code instruction that calls the method matching the arguments
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The lambda expression using the method
+
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The lambda expression using the method
+
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The lambda expression using the method
+
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The lambda expression using the method
+
+
+
+
+ Creates a CodeInstruction loading a field (LD[S]FLD[A])
+ The class/type where the field is defined
+ The name of the field (case sensitive)
+ Use address of field
+
+
+
+ Creates a CodeInstruction storing to a field (ST[S]FLD)
+ The class/type where the field is defined
+ The name of the field (case sensitive)
+
+
+
+ Returns a string representation of the code instruction
+ A string representation of the code instruction
+
+
+
+ Exception block types
+
+
+
+ The beginning of an exception block
+
+
+
+ The beginning of a catch block
+
+
+
+ The beginning of an except filter block
+
+
+
+ The beginning of a fault block
+
+
+
+ The beginning of a finally block
+
+
+
+ The end of an exception block
+
+
+
+ An exception block
+
+
+
+ Block type
+
+
+
+ Catch type
+
+
+
+ Creates an exception block
+ The
+ The catch type
+
+
+
+ The Harmony instance is the main entry to Harmony. After creating one with an unique identifier, it is used to patch and query the current application domain
+
+
+
+ The unique identifier
+
+
+
+ Set to true before instantiating Harmony to debug Harmony or use an environment variable to set HARMONY_DEBUG to '1' like this: cmd /C "set HARMONY_DEBUG=1 && game.exe"
+ This is for full debugging. To debug only specific patches, use the attribute
+
+
+
+ Creates a new Harmony instance
+ A unique identifier (you choose your own)
+ A Harmony instance
+
+
+
+ Searches the current assembly for Harmony annotations and uses them to create patches
+
+
+
+ Creates a empty patch processor for an original method
+ The original method/constructor
+ A new instance
+
+
+
+ Creates a patch class processor from an annotated class
+ The class/type
+ A new instance
+
+
+
+ Creates a reverse patcher for one of your stub methods
+ The original method/constructor
+ The stand-in stub method as
+ A new instance
+
+
+
+ Searches an assembly for Harmony annotations and uses them to create patches
+ The assembly
+
+
+
+ Creates patches by manually specifying the methods
+ The original method/constructor
+ An optional prefix method wrapped in a object
+ An optional postfix method wrapped in a object
+ An optional transpiler method wrapped in a object
+ An optional finalizer method wrapped in a object
+ The replacement method that was created to patch the original method
+
+
+
+ Patches a foreign method onto a stub method of yours and optionally applies transpilers during the process
+ The original method/constructor you want to duplicate
+ Your stub method as that will become the original. Needs to have the correct signature (either original or whatever your transpilers generates)
+ An optional transpiler as method that will be applied during the process
+ The replacement method that was created to patch the stub method
+
+
+
+ Unpatches methods by patching them with zero patches. Fully unpatching is not supported. Be careful, unpatching is global
+ The optional Harmony ID to restrict unpatching to a specific Harmony instance
+ This method could be static if it wasn't for the fact that unpatching creates a new replacement method that contains your harmony ID
+
+
+
+ Unpatches a method by patching it with zero patches. Fully unpatching is not supported. Be careful, unpatching is global
+ The original method/constructor
+ The
+ The optional Harmony ID to restrict unpatching to a specific Harmony instance
+
+
+
+ Unpatches a method by patching it with zero patches. Fully unpatching is not supported. Be careful, unpatching is global
+ The original method/constructor
+ The patch method as method to remove
+
+
+
+ Test for patches from a specific Harmony ID
+ The Harmony ID
+ True if patches for this ID exist
+
+
+
+ Gets patch information for a given original method
+ The original method/constructor
+ The patch information as
+
+
+
+ Gets the methods this instance has patched
+ An enumeration of original methods/constructors
+
+
+
+ Gets all patched original methods in the appdomain
+ An enumeration of patched original methods/constructors
+
+
+
+ Gets Harmony version for all active Harmony instances
+ [out] The current Harmony version
+ A dictionary containing assembly versions keyed by Harmony IDs
+
+
+
+ Under Mono, HarmonyException wraps IL compile errors with detailed information about the failure
+
+
+
+ Default serialization constructor (not implemented)
+ The info
+ The context
+
+
+
+ Get a list of IL instructions in pairs of offset+code
+ A list of key/value pairs which represent an offset and the code at that offset
+
+
+
+ Get a list of IL instructions without offsets
+ A list of
+
+
+
+ Get the error offset of the errornous IL instruction
+ The offset
+
+
+
+ Get the index of the errornous IL instruction
+ The index into the list of instructions or -1 if not found
+
+
+
+ A wrapper around a method to use it as a patch (for example a Prefix)
+
+
+
+ The original method
+
+
+
+ Class/type declaring this patch
+
+
+
+ Patch method name
+
+
+
+ Optional patch
+
+
+
+ Array of argument types of the patch method
+
+
+
+ of the patch
+
+
+
+ Install this patch before patches with these Harmony IDs
+
+
+
+ Install this patch after patches with these Harmony IDs
+
+
+
+ Reverse patch type, see
+
+
+
+ Create debug output for this patch
+
+
+
+ Whether to use (true ) or (false ) mechanics
+ for -attributed delegate
+
+
+
+ Default constructor
+
+
+
+ Creates a patch from a given method
+ The original method
+
+
+
+ Creates a patch from a given method
+ The original method
+ The patch
+ A list of harmony IDs that should come after this patch
+ A list of harmony IDs that should come before this patch
+ Set to true to generate debug output
+
+
+
+ Creates a patch from a given method
+ The patch class/type
+ The patch method name
+ The optional argument types of the patch method (for overloaded methods)
+
+
+
+ Gets the names of all internal patch info fields
+ A list of field names
+
+
+
+ Merges annotations
+ The list of to merge
+ The merged
+
+
+
+ Returns a string that represents the annotation
+ A string representation
+
+
+
+ Annotation extensions
+
+
+
+ Copies annotation information
+ The source
+ The destination
+
+
+
+ Clones an annotation
+ The to clone
+ A copied
+
+
+
+ Merges annotations
+ The master
+ The detail
+ A new, merged
+
+
+
+ Gets all annotations on a class/type
+ The class/type
+ A list of all
+
+
+
+ Gets merged annotations on a class/type
+ The class/type
+ The merged
+
+
+
+ Gets all annotations on a method
+ The method/constructor
+ A list of
+
+
+
+ Gets merged annotations on a method
+ The method/constructor
+ The merged
+
+
+
+
+ A mutable representation of an inline signature, similar to Mono.Cecil's CallSite.
+ Used by the calli instruction, can be used by transpilers
+
+
+
+
+ See
+
+
+
+ See
+
+
+
+ See
+
+
+
+ The list of all parameter types or function pointer signatures received by the call site
+
+
+
+ The return type or function pointer signature returned by the call site
+
+
+
+ Returns a string representation of the inline signature
+ A string representation of the inline signature
+
+
+
+
+ A mutable representation of a parameter type with an attached type modifier,
+ similar to Mono.Cecil's OptionalModifierType / RequiredModifierType and C#'s modopt / modreq
+
+
+
+
+ Whether this is a modopt (optional modifier type) or a modreq (required modifier type)
+
+
+
+ The modifier type attached to the parameter type
+
+
+
+ The modified parameter type
+
+
+
+ Returns a string representation of the modifier type
+ A string representation of the modifier type
+
+
+
+ Patch serialization
+
+
+
+ Control the binding of a serialized object to a type
+ Specifies the assembly name of the serialized object
+ Specifies the type name of the serialized object
+ The type of the object the formatter creates a new instance of
+
+
+
+ Serializes a patch info
+ The
+ The serialized data
+
+
+
+ Deserialize a patch info
+ The serialized data
+ A
+
+
+
+ Compare function to sort patch priorities
+ The patch
+ Zero-based index
+ The priority
+ A standard sort integer (-1, 0, 1)
+
+
+
+ Serializable patch information
+
+
+
+ Prefixes as an array of
+
+
+
+ Postfixes as an array of
+
+
+
+ Transpilers as an array of
+
+
+
+ Finalizers as an array of
+
+
+
+ Default constructor
+
+
+
+ Returns if any of the patches wants debugging turned on
+
+
+
+ Adds a prefix
+
+ The prefix method
+ An owner (Harmony ID)
+ The priority, see
+ A list of Harmony IDs for prefixes that should run after this prefix
+ A list of Harmony IDs for prefixes that should run before this prefix
+ A flag that will log the replacement method via every time this prefix is used to build the replacement, even in the future
+
+
+
+ Removes prefixes
+ The owner of the prefix or * for any prefix
+
+
+
+ Adds a postfix
+ The postfix method
+ An owner (Harmony ID)
+ The priority, see
+ A list of Harmony IDs for postfixes that should run after this postfix
+ A list of Harmony IDs for postfixes that should run before this postfix
+ A flag that will log the replacement method via every time this postfix is used to build the replacement, even in the future
+
+
+
+ Removes postfixes
+ The owner of the postfix or * for any postfix
+
+
+
+ Adds a transpiler
+ The transpiler method
+ An owner (Harmony ID)
+ The priority, see
+ A list of Harmony IDs for transpilers that should run after this transpiler
+ A list of Harmony IDs for transpilers that should run before this transpiler
+ A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future
+
+
+
+ Removes transpilers
+ The owner of the transpiler or * for any transpiler
+
+
+
+ Adds a finalizer
+ The finalizer method
+ An owner (Harmony ID)
+ The priority, see
+ A list of Harmony IDs for finalizers that should run after this finalizer
+ A list of Harmony IDs for finalizers that should run before this finalizer
+ A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future
+
+
+
+ Removes finalizers
+ The owner of the finalizer or * for any finalizer
+
+
+
+ Removes a patch using its method
+ The method of the patch to remove
+
+
+
+ A serializable patch
+
+
+
+ Zero-based index
+
+
+
+ The owner (Harmony ID)
+
+
+
+ The priority, see
+
+
+
+ Keep this patch before the patches indicated in the list of Harmony IDs
+
+
+
+ Keep this patch after the patches indicated in the list of Harmony IDs
+
+
+
+ A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future
+
+
+
+ The method of the static patch method
+
+
+
+ Creates a patch
+ The method of the patch
+ Zero-based index
+ An owner (Harmony ID)
+ The priority, see
+ A list of Harmony IDs for patches that should run after this patch
+ A list of Harmony IDs for patches that should run before this patch
+ A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future
+
+
+
+ Get the patch method or a DynamicMethod if original patch method is a patch factory
+ The original method/constructor
+ The method of the patch
+
+
+
+ Determines whether patches are equal
+ The other patch
+ true if equal
+
+
+
+ Determines how patches sort
+ The other patch
+ integer to define sort order (-1, 0, 1)
+
+
+
+ Hash function
+ A hash code
+
+
+
+ A PatchClassProcessor used to turn on a class/type into patches
+
+
+
+ Creates a patch class processor by pointing out a class. Similar to PatchAll() but without searching through all classes.
+ The Harmony instance
+ The class to process (need to have at least a [HarmonyPatch] attribute)
+
+
+
+ Applies the patches
+ A list of all created replacement methods or null if patch class is not annotated
+
+
+
+ A group of patches
+
+
+
+ A collection of prefix
+
+
+
+ A collection of postfix
+
+
+
+ A collection of transpiler
+
+
+
+ A collection of finalizer
+
+
+
+ Gets all owners (Harmony IDs) or all known patches
+ The patch owners
+
+
+
+ Creates a group of patches
+ An array of prefixes as
+ An array of postfixes as
+ An array of transpileres as
+ An array of finalizeres as
+
+
+
+ A PatchProcessor handles patches on a method/constructor
+
+
+
+ Creates an empty patch processor
+ The Harmony instance
+ The original method/constructor
+
+
+
+ Adds a prefix
+ The prefix as a
+ A for chaining calls
+
+
+
+ Adds a prefix
+ The prefix method
+ A for chaining calls
+
+
+
+ Adds a postfix
+ The postfix as a
+ A for chaining calls
+
+
+
+ Adds a postfix
+ The postfix method
+ A for chaining calls
+
+
+
+ Adds a transpiler
+ The transpiler as a
+ A for chaining calls
+
+
+
+ Adds a transpiler
+ The transpiler method
+ A for chaining calls
+
+
+
+ Adds a finalizer
+ The finalizer as a
+ A for chaining calls
+
+
+
+ Adds a finalizer
+ The finalizer method
+ A for chaining calls
+
+
+
+ Gets all patched original methods in the appdomain
+ An enumeration of patched method/constructor
+
+
+
+ Applies all registered patches
+ The generated replacement method
+
+
+
+ Unpatches patches of a given type and/or Harmony ID
+ The patch type
+ Harmony ID or * for any
+ A for chaining calls
+
+
+
+ Unpatches a specific patch
+ The method of the patch
+ A for chaining calls
+
+
+
+ Gets patch information on an original
+ The original method/constructor
+ The patch information as
+
+
+
+ Sort patch methods by their priority rules
+ The original method
+ Patches to sort
+ The sorted patch methods
+
+
+
+ Gets Harmony version for all active Harmony instances
+ [out] The current Harmony version
+ A dictionary containing assembly version keyed by Harmony ID
+
+
+
+ Creates a new empty generator to use when reading method bodies
+ A new
+
+
+
+ Creates a new generator matching the method/constructor to use when reading method bodies
+ The original method/constructor to copy method information from
+ A new
+
+
+
+ Returns the methods unmodified list of code instructions
+ The original method/constructor
+ Optionally an existing generator that will be used to create all local variables and labels contained in the result (if not specified, an internal generator is used)
+ A list containing all the original
+
+
+
+ Returns the methods unmodified list of code instructions
+ The original method/constructor
+ A new generator that now contains all local variables and labels contained in the result
+ A list containing all the original
+
+
+
+ Returns the methods current list of code instructions after all existing transpilers have been applied
+ The original method/constructor
+ Apply only the first count of transpilers
+ Optionally an existing generator that will be used to create all local variables and labels contained in the result (if not specified, an internal generator is used)
+ A list of
+
+
+
+ Returns the methods current list of code instructions after all existing transpilers have been applied
+ The original method/constructor
+ A new generator that now contains all local variables and labels contained in the result
+ Apply only the first count of transpilers
+ A list of
+
+
+
+ A low level way to read the body of a method. Used for quick searching in methods
+ The original method
+ All instructions as opcode/operand pairs
+
+
+
+ A low level way to read the body of a method. Used for quick searching in methods
+ The original method
+ An existing generator that will be used to create all local variables and labels contained in the result
+ All instructions as opcode/operand pairs
+
+
+
+ A patch priority
+
+
+
+ Patch last
+
+
+
+ Patch with very low priority
+
+
+
+ Patch with low priority
+
+
+
+ Patch with lower than normal priority
+
+
+
+ Patch with normal priority
+
+
+
+ Patch with higher than normal priority
+
+
+
+ Patch with high priority
+
+
+
+ Patch with very high priority
+
+
+
+ Patch first
+
+
+
+ A reverse patcher
+
+
+
+ Creates a reverse patcher
+ The Harmony instance
+ The original method/constructor
+ Your stand-in stub method as
+
+
+
+ Applies the patch
+ The type of patch, see
+ The generated replacement method
+
+
+
+ A collection of commonly used transpilers
+
+
+
+ A transpiler that replaces all occurrences of a given method with another one
+ The enumeration of to act on
+ Method or constructor to search for
+ Method or constructor to replace with
+ Modified enumeration of
+
+
+
+ A transpiler that alters instructions that match a predicate by calling an action
+ The enumeration of to act on
+ A predicate selecting the instructions to change
+ An action to apply to matching instructions
+ Modified enumeration of
+
+
+
+ A transpiler that logs a text at the beginning of the method
+ The instructions to act on
+ The log text
+ Modified enumeration of
+
+
+
+ A helper class for reflection related functions
+
+
+
+ Shortcut for to simplify the use of reflections and make it work for any access level
+
+
+
+ Shortcut for to simplify the use of reflections and make it work for any access level but only within the current type
+
+
+
+ Gets a type by name. Prefers a full name with namespace but falls back to the first type matching the name otherwise
+ The name
+ A type or null if not found
+
+
+
+ Gets all successfully loaded types from a given assembly
+ The assembly
+ An array of types
+
+ This calls and returns , while catching any thrown .
+ If such an exception is thrown, returns the successfully loaded types ( ,
+ filtered for non-null values).
+
+
+
+
+ Applies a function going up the type hierarchy and stops at the first non null result
+ Result type of func()
+ The class/type to start with
+ The evaluation function returning T
+ Returns the first non null result or default(T) when reaching the top level type object
+
+
+
+ Applies a function going into inner types and stops at the first non null result
+ Generic type parameter
+ The class/type to start with
+ The evaluation function returning T
+ Returns the first non null result or null with no match
+
+
+
+ Gets the reflection information for a directly declared field
+ The class/type where the field is defined
+ The name of the field
+ A field or null when type/name is null or when the field cannot be found
+
+
+
+ Gets the reflection information for a field by searching the type and all its super types
+ The class/type where the field is defined
+ The name of the field (case sensitive)
+ A field or null when type/name is null or when the field cannot be found
+
+
+
+ Gets the reflection information for a field
+ The class/type where the field is declared
+ The zero-based index of the field inside the class definition
+ A field or null when type is null or when the field cannot be found
+
+
+
+ Gets the reflection information for a directly declared property
+ The class/type where the property is declared
+ The name of the property (case sensitive)
+ A property or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for the getter method of a directly declared property
+ The class/type where the property is declared
+ The name of the property (case sensitive)
+ A method or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for the setter method of a directly declared property
+ The class/type where the property is declared
+ The name of the property (case sensitive)
+ A method or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for a property by searching the type and all its super types
+ The class/type
+ The name
+ A property or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for the getter method of a property by searching the type and all its super types
+ The class/type
+ The name
+ A method or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for the setter method of a property by searching the type and all its super types
+ The class/type
+ The name
+ A method or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for a directly declared method
+ The class/type where the method is declared
+ The name of the method (case sensitive)
+ Optional parameters to target a specific overload of the method
+ Optional list of types that define the generic version of the method
+ A method or null when type/name is null or when the method cannot be found
+
+
+
+ Gets the reflection information for a method by searching the type and all its super types
+ The class/type where the method is declared
+ The name of the method (case sensitive)
+ Optional parameters to target a specific overload of the method
+ Optional list of types that define the generic version of the method
+ A method or null when type/name is null or when the method cannot be found
+
+
+
+ Gets the reflection information for a method by searching the type and all its super types
+ The target method in the form TypeFullName:MethodName , where the type name matches a form recognized by Type.GetType like Some.Namespace.Type .
+ Optional parameters to target a specific overload of the method
+ Optional list of types that define the generic version of the method
+ A method or null when type/name is null or when the method cannot be found
+
+
+
+ Gets the names of all method that are declared in a type
+ The declaring class/type
+ A list of method names
+
+
+
+ Gets the names of all method that are declared in the type of the instance
+ An instance of the type to search in
+ A list of method names
+
+
+
+ Gets the names of all fields that are declared in a type
+ The declaring class/type
+ A list of field names
+
+
+
+ Gets the names of all fields that are declared in the type of the instance
+ An instance of the type to search in
+ A list of field names
+
+
+
+ Gets the names of all properties that are declared in a type
+ The declaring class/type
+ A list of property names
+
+
+
+ Gets the names of all properties that are declared in the type of the instance
+ An instance of the type to search in
+ A list of property names
+
+
+
+ Gets the type of any class member of
+ A member
+ The class/type of this member
+
+
+
+ Test if a class member is actually an concrete implementation
+ A member
+ True if the member is a declared
+
+
+
+ Gets the real implementation of a class member
+ A member
+ The member itself if its declared. Otherwise the member that is actually implemented in some base type
+
+
+
+ Gets the reflection information for a directly declared constructor
+ The class/type where the constructor is declared
+ Optional parameters to target a specific overload of the constructor
+ Optional parameters to only consider static constructors
+ A constructor info or null when type is null or when the constructor cannot be found
+
+
+
+ Gets the reflection information for a constructor by searching the type and all its super types
+ The class/type where the constructor is declared
+ Optional parameters to target a specific overload of the method
+ Optional parameters to only consider static constructors
+ A constructor info or null when type is null or when the method cannot be found
+
+
+
+ Gets reflection information for all declared constructors
+ The class/type where the constructors are declared
+ Optional parameters to only consider static constructors
+ A list of constructor infos
+
+
+
+ Gets reflection information for all declared methods
+ The class/type where the methods are declared
+ A list of methods
+
+
+
+ Gets reflection information for all declared properties
+ The class/type where the properties are declared
+ A list of properties
+
+
+
+ Gets reflection information for all declared fields
+ The class/type where the fields are declared
+ A list of fields
+
+
+
+ Gets the return type of a method or constructor
+ The method/constructor
+ The return type
+
+
+
+ Given a type, returns the first inner type matching a recursive search by name
+ The class/type to start searching at
+ The name of the inner type (case sensitive)
+ The inner type or null if type/name is null or if a type with that name cannot be found
+
+
+
+ Given a type, returns the first inner type matching a recursive search with a predicate
+ The class/type to start searching at
+ The predicate to search with
+ The inner type or null if type/predicate is null or if a type with that name cannot be found
+
+
+
+ Given a type, returns the first method matching a predicate
+ The class/type to start searching at
+ The predicate to search with
+ The method or null if type/predicate is null or if a type with that name cannot be found
+
+
+
+ Given a type, returns the first constructor matching a predicate
+ The class/type to start searching at
+ The predicate to search with
+ The constructor info or null if type/predicate is null or if a type with that name cannot be found
+
+
+
+ Given a type, returns the first property matching a predicate
+ The class/type to start searching at
+ The predicate to search with
+ The property or null if type/predicate is null or if a type with that name cannot be found
+
+
+
+ Returns an array containing the type of each object in the given array
+ An array of objects
+ An array of types or an empty array if parameters is null (if an object is null, the type for it will be object)
+
+
+
+ Creates an array of input parameters for a given method and a given set of potential inputs
+ The method/constructor you are planing to call
+ The possible input parameters in any order
+ An object array matching the method signature
+
+
+
+ A read/writable reference to an instance field
+ The class the field is defined in or "object" if type cannot be accessed at compile time
+ The type of the field
+ The runtime instance to access the field (leave empty for static fields)
+ An readable/assignable object representing the field
+
+
+
+ Creates an instance field reference
+ The class the field is defined in
+ The type of the field
+ The name of the field
+ A read and writable field reference delegate
+
+
+
+ Creates an instance field reference for a specific instance
+ The class the field is defined in
+ The type of the field
+ The instance
+ The name of the field
+ An readable/assignable object representing the field
+
+
+
+ Creates an instance field reference delegate for a private type
+ The type of the field
+ The class/type
+ The name of the field
+ A read and writable delegate
+
+
+
+ Creates an instance field reference delegate for a fieldinfo
+ The class the field is defined in or "object" if type cannot be accessed at compile time
+ The type of the field
+ The field of the field
+ A read and writable delegate
+
+
+
+ Creates a static field reference
+ The class the field is defined in or "object" if type cannot be accessed at compile time
+ The type of the field
+ The name of the field
+ An readable/assignable object representing the static field
+
+
+
+ Creates a static field reference
+ The type of the field
+ The class/type
+ The name of the field
+ An readable/assignable object representing the static field
+
+
+
+ Creates a static field reference
+ The class the field is defined in or "object" if type cannot be accessed at compile time
+ The type of the field
+ The field
+ An readable/assignable object representing the static field
+
+
+
+ A read/writable reference delegate to a static field
+ The type of the field
+ An readable/assignable object representing the static field
+
+
+
+ Creates a static field reference delegate
+ The type of the field
+ The field
+ A read and writable delegate
+
+
+
+ Creates a delegate to a given method
+ The delegate Type
+ The method to create a delegate from.
+
+ Only applies for instance methods. If null (default), returned delegate is an open (a.k.a. unbound) instance delegate
+ where an instance is supplied as the first argument to the delegate invocation; else, delegate is a closed (a.k.a. bound)
+ instance delegate where the delegate invocation always applies to the given .
+
+
+ Only applies for instance methods. If true (default) and is virtual, invocation of the delegate
+ calls the instance method virtually (the instance type's most-derived/overriden implementation of the method is called);
+ else, invocation of the delegate calls the exact specified (this is useful for calling base class methods)
+ Note: if false and is an interface method, an ArgumentException is thrown.
+
+ A delegate of given to given
+
+
+ Delegate invocation is more performant and more convenient to use than
+ at a one-time setup cost.
+
+
+ Works for both type of static and instance methods, both open and closed (a.k.a. unbound and bound) instance methods,
+ and both class and struct methods.
+
+
+
+
+
+ Creates a delegate for a given delegate definition, attributed with [ ]
+ The delegate Type, attributed with [ ]
+
+ Only applies for instance methods. If null (default), returned delegate is an open (a.k.a. unbound) instance delegate
+ where an instance is supplied as the first argument to the delegate invocation; else, delegate is a closed (a.k.a. bound)
+ instance delegate where the delegate invocation always applies to the given .
+
+ A delegate of given to the method specified via [ ]
+ attributes on
+
+ This calls with the method and virtualCall arguments
+ determined from the [ ] attributes on ,
+ and the given (for closed instance delegates).
+
+
+
+
+ Returns who called the current method
+ The calling method/constructor (excluding the caller)
+
+
+
+ Rethrows an exception while preserving its stack trace (throw statement typically clobbers existing stack traces)
+ The exception to rethrow
+
+
+
+ True if the current runtime is based on Mono, false otherwise (.NET)
+
+
+
+ True if the current runtime is .NET Framework, false otherwise (.NET Core or Mono, although latter isn't guaranteed)
+
+
+
+ True if the current runtime is .NET Core, false otherwise (Mono or .NET Framework)
+
+
+
+ Throws a missing member runtime exception
+ The type that is involved
+ A list of names
+
+
+
+ Gets default value for a specific type
+ The class/type
+ The default value
+
+
+
+ Creates an (possibly uninitialized) instance of a given type
+ The class/type
+ The new instance
+
+
+
+ Makes a deep copy of any object
+ The type of the instance that should be created
+ The original object
+ A copy of the original object but of type T
+
+
+
+ Makes a deep copy of any object
+ The type of the instance that should be created
+ The original object
+ [out] The copy of the original object
+ Optional value transformation function (taking a field name and src/dst instances)
+ The optional path root to start with
+
+
+
+ Makes a deep copy of any object
+ The original object
+ The type of the instance that should be created
+ Optional value transformation function (taking a field name and src/dst instances)
+ The optional path root to start with
+ The copy of the original object
+
+
+
+ Tests if a type is a struct
+ The type
+ True if the type is a struct
+
+
+
+ Tests if a type is a class
+ The type
+ True if the type is a class
+
+
+
+ Tests if a type is a value type
+ The type
+ True if the type is a value type
+
+
+
+ Tests if a type is an integer type
+ The type
+ True if the type represents some integer
+
+
+
+ Tests if a type is a floating point type
+ The type
+ True if the type represents some floating point
+
+
+
+ Tests if a type is a numerical type
+ The type
+ True if the type represents some number
+
+
+
+ Tests if a type is void
+ The type
+ True if the type is void
+
+
+
+ Test whether an instance is of a nullable type
+ Type of instance
+ An instance to test
+ True if instance is of nullable type, false if not
+
+
+
+ Tests whether a type or member is static, as defined in C#
+ The type or member
+ True if the type or member is static
+
+
+
+ Tests whether a type is static, as defined in C#
+ The type
+ True if the type is static
+
+
+
+ Tests whether a property is static, as defined in C#
+ The property
+ True if the property is static
+
+
+
+ Tests whether an event is static, as defined in C#
+ The event
+ True if the event is static
+
+
+
+ Calculates a combined hash code for an enumeration of objects
+ The objects
+ The hash code
+
+
+
+ General extensions for common cases
+
+
+
+ Joins an enumeration with a value converter and a delimiter to a string
+ The inner type of the enumeration
+ The enumeration
+ An optional value converter (from T to string)
+ An optional delimiter
+ The values joined into a string
+
+
+
+ Converts an array of types (for example methods arguments) into a human readable form
+ The array of types
+ A human readable description including brackets
+
+
+
+ A full description of a type
+ The type
+ A human readable description
+
+
+
+ A a full description of a method or a constructor without assembly details but with generics
+ The method/constructor
+ A human readable description
+
+
+
+ A helper converting parameter infos to types
+ The array of parameter infos
+ An array of types
+
+
+
+ A helper to access a value via key from a dictionary
+ The key type
+ The value type
+ The dictionary
+ The key
+ The value for the key or the default value (of T) if that key does not exist
+
+
+
+ A helper to access a value via key from a dictionary with extra casting
+ The value type
+ The dictionary
+ The key
+ The value for the key or the default value (of T) if that key does not exist or cannot be cast to T
+
+
+
+ Escapes Unicode and ASCII non printable characters
+ The string to convert
+ The string to convert
+ A string literal surrounded by
+
+
+
+ Extensions for
+
+
+
+ Shortcut for testing whether the operand is equal to a non-null value
+ The
+ The value
+ True if the operand has the same type and is equal to the value
+
+
+
+ Shortcut for testing whether the operand is equal to a non-null value
+ The
+ The value
+ True if the operand is equal to the value
+ This is an optimized version of for
+
+
+
+ Shortcut for code.opcode == opcode && code.OperandIs(operand)
+ The
+ The
+ The operand value
+ True if the opcode is equal to the given opcode and the operand has the same type and is equal to the given operand
+
+
+
+ Shortcut for code.opcode == opcode && code.OperandIs(operand)
+ The
+ The
+ The operand value
+ True if the opcode is equal to the given opcode and the operand is equal to the given operand
+ This is an optimized version of for
+
+
+
+ Tests for any form of Ldarg*
+ The
+ The (optional) index
+ True if it matches one of the variations
+
+
+
+ Tests for Ldarga/Ldarga_S
+ The
+ The (optional) index
+ True if it matches one of the variations
+
+
+
+ Tests for Starg/Starg_S
+ The
+ The (optional) index
+ True if it matches one of the variations
+
+
+
+ Tests for any form of Ldloc*
+ The
+ The optional local variable
+ True if it matches one of the variations
+
+
+
+ Tests for any form of Stloc*
+ The
+ The optional local variable
+ True if it matches one of the variations
+
+
+
+ Tests if the code instruction branches
+ The
+ The label if the instruction is a branch operation or if not
+ True if the instruction branches
+
+
+
+ Tests if the code instruction calls the method/constructor
+ The
+ The method
+ True if the instruction calls the method or constructor
+
+
+
+ Tests if the code instruction loads a constant
+ The
+ True if the instruction loads a constant
+
+
+
+ Tests if the code instruction loads an integer constant
+ The
+ The integer constant
+ True if the instruction loads the constant
+
+
+
+ Tests if the code instruction loads a floating point constant
+ The
+ The floating point constant
+ True if the instruction loads the constant
+
+
+
+ Tests if the code instruction loads an enum constant
+ The
+ The enum
+ True if the instruction loads the constant
+
+
+
+ Tests if the code instruction loads a field
+ The
+ The field
+ Set to true if the address of the field is loaded
+ True if the instruction loads the field
+
+
+
+ Tests if the code instruction stores a field
+ The
+ The field
+ True if the instruction stores this field
+
+
+
+ Adds labels to the code instruction and return it
+ The
+ One or several to add
+ The same code instruction
+
+
+ Adds labels to the code instruction and return it
+ The
+ An enumeration of
+ The same code instruction
+
+
+ Extracts all labels from the code instruction and returns them
+ The
+ A list of
+
+
+ Moves all labels from the code instruction to a different one
+ The to move the labels from
+ The to move the labels to
+ The code instruction labels were moved from (now empty)
+
+
+ Moves all labels from a different code instruction to the current one
+ The to move the labels from
+ The to move the labels to
+ The code instruction that received the labels
+
+
+ Adds ExceptionBlocks to the code instruction and return it
+ The
+ One or several to add
+ The same code instruction
+
+
+ Adds ExceptionBlocks to the code instruction and return it
+ The
+ An enumeration of
+ The same code instruction
+
+
+ Extracts all ExceptionBlocks from the code instruction and returns them
+ The
+ A list of
+
+
+ Moves all ExceptionBlocks from the code instruction to a different one
+ The to move the ExceptionBlocks from
+ The to move the ExceptionBlocks to
+ The code instruction blocks were moved from (now empty)
+
+
+ Moves all ExceptionBlocks from a different code instruction to the current one
+ The to move the ExceptionBlocks from
+ The to move the ExceptionBlocks to
+ The code instruction that received the blocks
+
+
+ General extensions for collections
+
+
+
+ A simple way to execute code for every element in a collection
+ The inner type of the collection
+ The collection
+ The action to execute
+
+
+
+ A simple way to execute code for elements in a collection matching a condition
+ The inner type of the collection
+ The collection
+ The predicate
+ The action to execute
+
+
+
+ A helper to add an item to a collection
+ The inner type of the collection
+ The collection
+ The item to add
+ The collection containing the item
+
+
+
+ A helper to add an item to an array
+ The inner type of the collection
+ The array
+ The item to add
+ The array containing the item
+
+
+
+ A helper to add items to an array
+ The inner type of the collection
+ The array
+ The items to add
+ The array containing the items
+
+
+
+ General extensions for collections
+
+
+
+ Tests a class member if it has an IL method body (external methods for example don't have a body)
+ The member to test
+ Returns true if the member has an IL body or false if not
+
+
+ A file log for debugging
+
+
+
+ Full pathname of the log file, defaults to a file called harmony.log.txt on your Desktop
+
+
+
+ The indent character. The default is tab
+
+
+
+ The current indent level
+
+
+
+ Changes the indentation level
+ The value to add to the indentation level
+
+
+
+ Log a string in a buffered way. Use this method only if you are sure that FlushBuffer will be called
+ or else logging information is incomplete in case of a crash
+ The string to log
+
+
+
+ Logs a list of string in a buffered way. Use this method only if you are sure that FlushBuffer will be called
+ or else logging information is incomplete in case of a crash
+ A list of strings to log (they will not be re-indented)
+
+
+
+ Returns the log buffer and optionally empties it
+ True to empty the buffer
+ The buffer.
+
+
+
+ Replaces the buffer with new lines
+ The lines to store
+
+
+
+ Flushes the log buffer to disk (use in combination with LogBuffered)
+
+
+
+ Log a string directly to disk. Slower method that prevents missing information in case of a crash
+ The string to log.
+
+
+
+ Resets and deletes the log
+
+
+
+ Logs some bytes as hex values
+ The pointer to some memory
+ The length of bytes to log
+
+
+
+ A helper class to retrieve reflection info for non-private methods
+
+
+
+ Given a lambda expression that calls a method, returns the method info
+ The lambda expression using the method
+ The method in the lambda expression
+
+
+
+ Given a lambda expression that calls a method, returns the method info
+ The generic type
+ The lambda expression using the method
+ The method in the lambda expression
+
+
+
+ Given a lambda expression that calls a method, returns the method info
+ The generic type
+ The generic result type
+ The lambda expression using the method
+ The method in the lambda expression
+
+
+
+ Given a lambda expression that calls a method, returns the method info
+ The lambda expression using the method
+ The method in the lambda expression
+
+
+
+ A reflection helper to read and write private elements
+ The result type defined by GetValue()
+
+
+
+ Creates a traverse instance from an existing instance
+ The existing instance
+
+
+
+ Gets/Sets the current value
+ The value to read or write
+
+
+
+ A reflection helper to read and write private elements
+
+
+
+ Creates a new traverse instance from a class/type
+ The class/type
+ A instance
+
+
+
+ Creates a new traverse instance from a class T
+ The class
+ A instance
+
+
+
+ Creates a new traverse instance from an instance
+ The object
+ A instance
+
+
+
+ Creates a new traverse instance from a named type
+ The type name, for format see
+ A instance
+
+
+
+ Creates a new and empty traverse instance
+
+
+
+ Creates a new traverse instance from a class/type
+ The class/type
+
+
+
+ Creates a new traverse instance from an instance
+ The object
+
+
+
+ Gets the current value
+ The value
+
+
+
+ Gets the current value
+ The type of the value
+ The value
+
+
+
+ Invokes the current method with arguments and returns the result
+ The method arguments
+ The value returned by the method
+
+
+
+ Invokes the current method with arguments and returns the result
+ The type of the value
+ The method arguments
+ The value returned by the method
+
+
+
+ Sets a value of the current field or property
+ The value
+ The same traverse instance
+
+
+
+ Gets the type of the current field or property
+ The type
+
+
+
+ Moves the current traverse instance to a inner type
+ The type name
+ A traverse instance
+
+
+
+ Moves the current traverse instance to a field
+ The type name
+ A traverse instance
+
+
+
+ Moves the current traverse instance to a field
+ The type of the field
+ The type name
+ A traverse instance
+
+
+
+ Gets all fields of the current type
+ A list of field names
+
+
+
+ Moves the current traverse instance to a property
+ The type name
+ Optional property index
+ A traverse instance
+
+
+
+ Moves the current traverse instance to a field
+ The type of the property
+ The type name
+ Optional property index
+ A traverse instance
+
+
+
+ Gets all properties of the current type
+ A list of property names
+
+
+
+ Moves the current traverse instance to a method
+ The name of the method
+ The arguments defining the argument types of the method overload
+ A traverse instance
+
+
+
+ Moves the current traverse instance to a method
+ The name of the method
+ The argument types of the method
+ The arguments for the method
+ A traverse instance
+
+
+
+ Gets all methods of the current type
+ A list of method names
+
+
+
+ Checks if the current traverse instance is for a field
+ True if its a field
+
+
+
+ Checks if the current traverse instance is for a property
+ True if its a property
+
+
+
+ Checks if the current traverse instance is for a method
+ True if its a method
+
+
+
+ Checks if the current traverse instance is for a type
+ True if its a type
+
+
+
+ Iterates over all fields of the current type and executes a traverse action
+ Original object
+ The action receiving a instance for each field
+
+
+
+ Iterates over all fields of the current type and executes a traverse action
+ Original object
+ Target object
+ The action receiving a pair of instances for each field pair
+
+
+
+ Iterates over all fields of the current type and executes a traverse action
+ Original object
+ Target object
+ The action receiving a dot path representing the field pair and the instances
+
+
+
+ Iterates over all properties of the current type and executes a traverse action
+ Original object
+ The action receiving a instance for each property
+
+
+
+ Iterates over all properties of the current type and executes a traverse action
+ Original object
+ Target object
+ The action receiving a pair of instances for each property pair
+
+
+
+ Iterates over all properties of the current type and executes a traverse action
+ Original object
+ Target object
+ The action receiving a dot path representing the property pair and the instances
+
+
+
+ A default field action that copies fields to fields
+
+
+
+ Returns a string that represents the current traverse
+ A string representation
+
+
+
+
diff --git a/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/net472/0Harmony.dll b/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/net472/0Harmony.dll
new file mode 100644
index 0000000..947c81c
Binary files /dev/null and b/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/net472/0Harmony.dll differ
diff --git a/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/net472/0Harmony.xml b/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/net472/0Harmony.xml
new file mode 100644
index 0000000..6bcea2e
--- /dev/null
+++ b/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/net472/0Harmony.xml
@@ -0,0 +1,2900 @@
+
+
+
+ 0Harmony
+
+
+
+ A factory to create delegate types
+
+
+ Default constructor
+
+
+ Creates a delegate type for a method
+ The method
+ The new delegate type
+
+
+
+ A getter delegate type
+ Type that getter gets field/property value from
+ Type of the value that getter gets
+ The instance get getter uses
+ An delegate
+
+
+
+ A setter delegate type
+ Type that setter sets field/property value for
+ Type of the value that setter sets
+ The instance the setter uses
+ The value the setter uses
+ An delegate
+
+
+
+ A constructor delegate type
+ Type that constructor creates
+ An delegate
+
+
+
+ A helper class for fast access to getters and setters
+
+
+ Creates an instantiation delegate
+ Type that constructor creates
+ The new instantiation delegate
+
+
+
+ Creates an getter delegate for a property
+ Type that getter reads property from
+ Type of the property that gets accessed
+ The property
+ The new getter delegate
+
+
+
+ Creates an getter delegate for a field
+ Type that getter reads field from
+ Type of the field that gets accessed
+ The field
+ The new getter delegate
+
+
+
+ Creates an getter delegate for a field (with a list of possible field names)
+ Type that getter reads field/property from
+ Type of the field/property that gets accessed
+ A list of possible field names
+ The new getter delegate
+
+
+
+ Creates an setter delegate
+ Type that setter assigns property value to
+ Type of the property that gets assigned
+ The property
+ The new setter delegate
+
+
+
+ Creates an setter delegate for a field
+ Type that setter assigns field value to
+ Type of the field that gets assigned
+ The field
+ The new getter delegate
+
+
+
+ A delegate to invoke a method
+ The instance
+ The method parameters
+ The method result
+
+
+ A helper class to invoke method with delegates
+
+
+ Creates a fast invocation handler from a method
+ The method to invoke
+ Controls if boxed value object is accessed/updated directly
+ The
+
+
+ The directBoxValueAccess option controls how value types passed by reference (e.g. ref int, out my_struct) are handled in the arguments array
+ passed to the fast invocation handler.
+ Since the arguments array is an object array, any value types contained within it are actually references to a boxed value object.
+ Like any other object, there can be other references to such boxed value objects, other than the reference within the arguments array.
+ For example,
+
+ var val = 5;
+ var box = (object)val;
+ var arr = new object[] { box };
+ handler(arr); // for a method with parameter signature: ref/out/in int
+
+
+
+
+ If directBoxValueAccess is true , the boxed value object is accessed (and potentially updated) directly when the handler is called,
+ such that all references to the boxed object reflect the potentially updated value.
+ In the above example, if the method associated with the handler updates the passed (boxed) value to 10, both box and arr[0]
+ now reflect the value 10. Note that the original val is not updated, since boxing always copies the value into the new boxed value object.
+
+
+ If directBoxValueAccess is false (default), the boxed value object in the arguments array is replaced with a "reboxed" value object,
+ such that potential updates to the value are reflected only in the arguments array.
+ In the above example, if the method associated with the handler updates the passed (boxed) value to 10, only arr[0] now reflects the value 10.
+
+
+
+
+ A low level memory helper
+
+
+ Mark method for no inlining (currently only works on Mono)
+ The method/constructor to change
+
+
+ Detours a method
+ The original method/constructor
+ The replacement method/constructor
+ An error string
+
+
+
+ Writes a jump to memory
+ The memory address
+ Jump destination
+ An error string
+
+
+
+ Gets the start of a method in memory
+ The method/constructor
+ [out] Details of the exception
+ The method start address
+
+
+
+ special parameter names that can be used in prefix and postfix methods
+
+
+ Patch function helpers
+
+
+ Adds a prefix
+ The patch info
+ The owner (Harmony ID)
+ The annotation info
+
+
+
+ Removes a prefix
+ The patch info
+ The owner (Harmony ID)
+
+
+
+ Adds a postfix
+ The patch info
+ The owner (Harmony ID)
+ The annotation info
+
+
+
+ Removes a postfix
+ The patch info
+ The owner (Harmony ID)
+
+
+
+ Adds a transpiler
+ The patch info
+ The owner (Harmony ID)
+ The annotation info
+
+
+
+ Removes a transpiler
+ The patch info
+ The owner (Harmony ID)
+
+
+
+ Adds a finalizer
+ The patch info
+ The owner (Harmony ID)
+ The annotation info
+
+
+
+ Removes a finalizer
+ The patch info
+ The owner (Harmony ID)
+
+
+
+ Removes a patch method
+ The patch info
+ The patch method
+
+
+
+ Sorts patch methods by their priority rules
+ The original method
+ Patches to sort
+ Use debug mode
+ The sorted patch methods
+
+
+
+ Creates new replacement method with the latest patches and detours the original method
+ The original method
+ Information describing the patches
+ The newly created replacement method
+
+
+
+ Creates a patch sorter
+ Array of patches that will be sorted
+ Use debugging
+
+
+ Sorts internal PatchSortingWrapper collection and caches the results.
+ After first run the result is provided from the cache.
+ The original method
+ The sorted patch methods
+
+
+ Checks if the sorter was created with the same patch list and as a result can be reused to
+ get the sorted order of the patches.
+ List of patches to check against
+ true if equal
+
+
+ Removes one unresolved dependency from the least important patch.
+
+
+ Outputs all unblocked patches from the waiting list to results list
+
+
+ Adds patch to both results list and handled patches set
+ Patch to add
+
+
+ Wrapper used over the Patch object to allow faster dependency access and
+ dependency removal in case of cyclic dependencies
+
+
+ Create patch wrapper object used for sorting
+ Patch to wrap
+
+
+ Determines how patches sort
+ The other patch
+ integer to define sort order (-1, 0, 1)
+
+
+ Determines whether patches are equal
+ The other patch
+ true if equal
+
+
+ Hash function
+ A hash code
+
+
+ Bidirectionally registers Patches as after dependencies
+ List of dependencies to register
+
+
+ Bidirectionally registers Patches as before dependencies
+ List of dependencies to register
+
+
+ Bidirectionally removes Patch from after dependencies
+ Patch to remove
+
+
+ Bidirectionally removes Patch from before dependencies
+ Patch to remove
+
+
+ Specifies the type of method
+
+
+
+ This is a normal method
+
+
+ This is a getter
+
+
+ This is a setter
+
+
+ This is a constructor
+
+
+ This is a static constructor
+
+
+ Specifies the type of argument
+
+
+
+ This is a normal argument
+
+
+ This is a reference argument (ref)
+
+
+ This is an out argument (out)
+
+
+ This is a pointer argument (&)
+
+
+ Specifies the type of patch
+
+
+
+ Any patch
+
+
+ A prefix patch
+
+
+ A postfix patch
+
+
+ A transpiler
+
+
+ A finalizer
+
+
+ A reverse patch
+
+
+ Specifies the type of reverse patch
+
+
+
+ Use the unmodified original method (directly from IL)
+
+
+ Use the original as it is right now including previous patches but excluding future ones
+
+
+ Specifies the type of method call dispatching mechanics
+
+
+
+ Call the method using dynamic dispatching if method is virtual (including overriden)
+
+
+ This is the built-in form of late binding (a.k.a. dynamic binding) and is the default dispatching mechanic in C#.
+ This directly corresponds with the instruction.
+
+
+ For virtual (including overriden) methods, the instance type's most-derived/overriden implementation of the method is called.
+ For non-virtual (including static) methods, same behavior as : the exact specified method implementation is called.
+
+
+ Note: This is not a fully dynamic dispatch, since non-virtual (including static) methods are still called non-virtually.
+ A fully dynamic dispatch in C# involves using
+ the dynamic type
+ (actually a fully dynamic binding, since even the name and overload resolution happens at runtime), which does not support.
+
+
+
+
+ Call the method using static dispatching, regardless of whether method is virtual (including overriden) or non-virtual (including static)
+
+
+ a.k.a. non-virtual dispatching, early binding, or static binding.
+ This directly corresponds with the instruction.
+
+
+ For both virtual (including overriden) and non-virtual (including static) methods, the exact specified method implementation is called, without virtual/override mechanics.
+
+
+
+
+ The base class for all Harmony annotations (not meant to be used directly)
+
+
+
+ The common information for all attributes
+
+
+ Annotation to define your Harmony patch methods
+
+
+
+ An empty annotation can be used together with TargetMethod(s)
+
+
+
+ An annotation that specifies a class to patch
+ The declaring class/type
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The argument types of the method or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+ Array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+ An array of argument types to target overloads
+ Array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+ An array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The
+ An array of argument types to target overloads
+ An array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ An array of argument types to target overloads
+ An array of
+
+
+
+ Annotation to define the original method for delegate injection
+
+
+
+ An annotation that specifies a class to patch
+ The declaring class/type
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The argument types of the method or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+ Array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+ An array of argument types to target overloads
+ Array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+ An array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ The
+
+
+
+ An annotation that specifies call dispatching mechanics for the delegate
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The
+ An array of argument types to target overloads
+ An array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ An array of argument types to target overloads
+ An array of
+
+
+
+ Annotation to define your standin methods for reverse patching
+
+
+
+ An annotation that specifies the type of reverse patching
+ The of the reverse patch
+
+
+
+ A Harmony annotation to define that all methods in a class are to be patched
+
+
+
+ A Harmony annotation
+
+
+
+ A Harmony annotation to define patch priority
+ The priority
+
+
+
+ A Harmony annotation
+
+
+
+ A Harmony annotation to define that a patch comes before another patch
+ The array of harmony IDs of the other patches
+
+
+
+ A Harmony annotation
+
+
+ A Harmony annotation to define that a patch comes after another patch
+ The array of harmony IDs of the other patches
+
+
+
+ A Harmony annotation
+
+
+ A Harmony annotation to debug a patch (output uses to log to your Desktop)
+
+
+
+ Specifies the Prepare function in a patch class
+
+
+
+ Specifies the Cleanup function in a patch class
+
+
+
+ Specifies the TargetMethod function in a patch class
+
+
+
+ Specifies the TargetMethods function in a patch class
+
+
+
+ Specifies the Prefix function in a patch class
+
+
+
+ Specifies the Postfix function in a patch class
+
+
+
+ Specifies the Transpiler function in a patch class
+
+
+
+ Specifies the Finalizer function in a patch class
+
+
+
+ A Harmony annotation
+
+
+
+ The name of the original argument
+
+
+
+ The index of the original argument
+
+
+
+ The new name of the original argument
+
+
+
+ An annotation to declare injected arguments by name
+
+
+
+ An annotation to declare injected arguments by index
+ Zero-based index
+
+
+
+ An annotation to declare injected arguments by renaming them
+ Name of the original argument
+ New name
+
+
+
+ An annotation to declare injected arguments by index and renaming them
+ Zero-based index
+ New name
+
+
+
+ An abstract wrapper around OpCode and their operands. Used by transpilers
+
+
+
+ The opcode
+
+
+
+ The operand
+
+
+
+ All labels defined on this instruction
+
+
+
+ All exception block boundaries defined on this instruction
+
+
+
+ Creates a new CodeInstruction with a given opcode and optional operand
+ The opcode
+ The operand
+
+
+
+ Create a full copy (including labels and exception blocks) of a CodeInstruction
+ The to copy
+
+
+
+ Clones a CodeInstruction and resets its labels and exception blocks
+ A lightweight copy of this code instruction
+
+
+
+ Clones a CodeInstruction, resets labels and exception blocks and sets its opcode
+ The opcode
+ A copy of this CodeInstruction with a new opcode
+
+
+
+ Clones a CodeInstruction, resets labels and exception blocks and sets its operand
+ The operand
+ A copy of this CodeInstruction with a new operand
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The class/type where the method is declared
+ The name of the method (case sensitive)
+ Optional parameters to target a specific overload of the method
+ Optional list of types that define the generic version of the method
+ A code instruction that calls the method matching the arguments
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The target method in the form TypeFullName:MethodName , where the type name matches a form recognized by Type.GetType like Some.Namespace.Type .
+ Optional parameters to target a specific overload of the method
+ Optional list of types that define the generic version of the method
+ A code instruction that calls the method matching the arguments
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The lambda expression using the method
+
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The lambda expression using the method
+
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The lambda expression using the method
+
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The lambda expression using the method
+
+
+
+
+ Creates a CodeInstruction loading a field (LD[S]FLD[A])
+ The class/type where the field is defined
+ The name of the field (case sensitive)
+ Use address of field
+
+
+
+ Creates a CodeInstruction storing to a field (ST[S]FLD)
+ The class/type where the field is defined
+ The name of the field (case sensitive)
+
+
+
+ Returns a string representation of the code instruction
+ A string representation of the code instruction
+
+
+
+ Exception block types
+
+
+
+ The beginning of an exception block
+
+
+
+ The beginning of a catch block
+
+
+
+ The beginning of an except filter block
+
+
+
+ The beginning of a fault block
+
+
+
+ The beginning of a finally block
+
+
+
+ The end of an exception block
+
+
+
+ An exception block
+
+
+
+ Block type
+
+
+
+ Catch type
+
+
+
+ Creates an exception block
+ The
+ The catch type
+
+
+
+ The Harmony instance is the main entry to Harmony. After creating one with an unique identifier, it is used to patch and query the current application domain
+
+
+
+ The unique identifier
+
+
+
+ Set to true before instantiating Harmony to debug Harmony or use an environment variable to set HARMONY_DEBUG to '1' like this: cmd /C "set HARMONY_DEBUG=1 && game.exe"
+ This is for full debugging. To debug only specific patches, use the attribute
+
+
+
+ Creates a new Harmony instance
+ A unique identifier (you choose your own)
+ A Harmony instance
+
+
+
+ Searches the current assembly for Harmony annotations and uses them to create patches
+
+
+
+ Creates a empty patch processor for an original method
+ The original method/constructor
+ A new instance
+
+
+
+ Creates a patch class processor from an annotated class
+ The class/type
+ A new instance
+
+
+
+ Creates a reverse patcher for one of your stub methods
+ The original method/constructor
+ The stand-in stub method as
+ A new instance
+
+
+
+ Searches an assembly for Harmony annotations and uses them to create patches
+ The assembly
+
+
+
+ Creates patches by manually specifying the methods
+ The original method/constructor
+ An optional prefix method wrapped in a object
+ An optional postfix method wrapped in a object
+ An optional transpiler method wrapped in a object
+ An optional finalizer method wrapped in a object
+ The replacement method that was created to patch the original method
+
+
+
+ Patches a foreign method onto a stub method of yours and optionally applies transpilers during the process
+ The original method/constructor you want to duplicate
+ Your stub method as that will become the original. Needs to have the correct signature (either original or whatever your transpilers generates)
+ An optional transpiler as method that will be applied during the process
+ The replacement method that was created to patch the stub method
+
+
+
+ Unpatches methods by patching them with zero patches. Fully unpatching is not supported. Be careful, unpatching is global
+ The optional Harmony ID to restrict unpatching to a specific Harmony instance
+ This method could be static if it wasn't for the fact that unpatching creates a new replacement method that contains your harmony ID
+
+
+
+ Unpatches a method by patching it with zero patches. Fully unpatching is not supported. Be careful, unpatching is global
+ The original method/constructor
+ The
+ The optional Harmony ID to restrict unpatching to a specific Harmony instance
+
+
+
+ Unpatches a method by patching it with zero patches. Fully unpatching is not supported. Be careful, unpatching is global
+ The original method/constructor
+ The patch method as method to remove
+
+
+
+ Test for patches from a specific Harmony ID
+ The Harmony ID
+ True if patches for this ID exist
+
+
+
+ Gets patch information for a given original method
+ The original method/constructor
+ The patch information as
+
+
+
+ Gets the methods this instance has patched
+ An enumeration of original methods/constructors
+
+
+
+ Gets all patched original methods in the appdomain
+ An enumeration of patched original methods/constructors
+
+
+
+ Gets Harmony version for all active Harmony instances
+ [out] The current Harmony version
+ A dictionary containing assembly versions keyed by Harmony IDs
+
+
+
+ Under Mono, HarmonyException wraps IL compile errors with detailed information about the failure
+
+
+
+ Default serialization constructor (not implemented)
+ The info
+ The context
+
+
+
+ Get a list of IL instructions in pairs of offset+code
+ A list of key/value pairs which represent an offset and the code at that offset
+
+
+
+ Get a list of IL instructions without offsets
+ A list of
+
+
+
+ Get the error offset of the errornous IL instruction
+ The offset
+
+
+
+ Get the index of the errornous IL instruction
+ The index into the list of instructions or -1 if not found
+
+
+
+ A wrapper around a method to use it as a patch (for example a Prefix)
+
+
+
+ The original method
+
+
+
+ Class/type declaring this patch
+
+
+
+ Patch method name
+
+
+
+ Optional patch
+
+
+
+ Array of argument types of the patch method
+
+
+
+ of the patch
+
+
+
+ Install this patch before patches with these Harmony IDs
+
+
+
+ Install this patch after patches with these Harmony IDs
+
+
+
+ Reverse patch type, see
+
+
+
+ Create debug output for this patch
+
+
+
+ Whether to use (true ) or (false ) mechanics
+ for -attributed delegate
+
+
+
+ Default constructor
+
+
+
+ Creates a patch from a given method
+ The original method
+
+
+
+ Creates a patch from a given method
+ The original method
+ The patch
+ A list of harmony IDs that should come after this patch
+ A list of harmony IDs that should come before this patch
+ Set to true to generate debug output
+
+
+
+ Creates a patch from a given method
+ The patch class/type
+ The patch method name
+ The optional argument types of the patch method (for overloaded methods)
+
+
+
+ Gets the names of all internal patch info fields
+ A list of field names
+
+
+
+ Merges annotations
+ The list of to merge
+ The merged
+
+
+
+ Returns a string that represents the annotation
+ A string representation
+
+
+
+ Annotation extensions
+
+
+
+ Copies annotation information
+ The source
+ The destination
+
+
+
+ Clones an annotation
+ The to clone
+ A copied
+
+
+
+ Merges annotations
+ The master
+ The detail
+ A new, merged
+
+
+
+ Gets all annotations on a class/type
+ The class/type
+ A list of all
+
+
+
+ Gets merged annotations on a class/type
+ The class/type
+ The merged
+
+
+
+ Gets all annotations on a method
+ The method/constructor
+ A list of
+
+
+
+ Gets merged annotations on a method
+ The method/constructor
+ The merged
+
+
+
+
+ A mutable representation of an inline signature, similar to Mono.Cecil's CallSite.
+ Used by the calli instruction, can be used by transpilers
+
+
+
+
+ See
+
+
+
+ See
+
+
+
+ See
+
+
+
+ The list of all parameter types or function pointer signatures received by the call site
+
+
+
+ The return type or function pointer signature returned by the call site
+
+
+
+ Returns a string representation of the inline signature
+ A string representation of the inline signature
+
+
+
+
+ A mutable representation of a parameter type with an attached type modifier,
+ similar to Mono.Cecil's OptionalModifierType / RequiredModifierType and C#'s modopt / modreq
+
+
+
+
+ Whether this is a modopt (optional modifier type) or a modreq (required modifier type)
+
+
+
+ The modifier type attached to the parameter type
+
+
+
+ The modified parameter type
+
+
+
+ Returns a string representation of the modifier type
+ A string representation of the modifier type
+
+
+
+ Patch serialization
+
+
+
+ Control the binding of a serialized object to a type
+ Specifies the assembly name of the serialized object
+ Specifies the type name of the serialized object
+ The type of the object the formatter creates a new instance of
+
+
+
+ Serializes a patch info
+ The
+ The serialized data
+
+
+
+ Deserialize a patch info
+ The serialized data
+ A
+
+
+
+ Compare function to sort patch priorities
+ The patch
+ Zero-based index
+ The priority
+ A standard sort integer (-1, 0, 1)
+
+
+
+ Serializable patch information
+
+
+
+ Prefixes as an array of
+
+
+
+ Postfixes as an array of
+
+
+
+ Transpilers as an array of
+
+
+
+ Finalizers as an array of
+
+
+
+ Default constructor
+
+
+
+ Returns if any of the patches wants debugging turned on
+
+
+
+ Adds a prefix
+
+ The prefix method
+ An owner (Harmony ID)
+ The priority, see
+ A list of Harmony IDs for prefixes that should run after this prefix
+ A list of Harmony IDs for prefixes that should run before this prefix
+ A flag that will log the replacement method via every time this prefix is used to build the replacement, even in the future
+
+
+
+ Removes prefixes
+ The owner of the prefix or * for any prefix
+
+
+
+ Adds a postfix
+ The postfix method
+ An owner (Harmony ID)
+ The priority, see
+ A list of Harmony IDs for postfixes that should run after this postfix
+ A list of Harmony IDs for postfixes that should run before this postfix
+ A flag that will log the replacement method via every time this postfix is used to build the replacement, even in the future
+
+
+
+ Removes postfixes
+ The owner of the postfix or * for any postfix
+
+
+
+ Adds a transpiler
+ The transpiler method
+ An owner (Harmony ID)
+ The priority, see
+ A list of Harmony IDs for transpilers that should run after this transpiler
+ A list of Harmony IDs for transpilers that should run before this transpiler
+ A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future
+
+
+
+ Removes transpilers
+ The owner of the transpiler or * for any transpiler
+
+
+
+ Adds a finalizer
+ The finalizer method
+ An owner (Harmony ID)
+ The priority, see
+ A list of Harmony IDs for finalizers that should run after this finalizer
+ A list of Harmony IDs for finalizers that should run before this finalizer
+ A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future
+
+
+
+ Removes finalizers
+ The owner of the finalizer or * for any finalizer
+
+
+
+ Removes a patch using its method
+ The method of the patch to remove
+
+
+
+ A serializable patch
+
+
+
+ Zero-based index
+
+
+
+ The owner (Harmony ID)
+
+
+
+ The priority, see
+
+
+
+ Keep this patch before the patches indicated in the list of Harmony IDs
+
+
+
+ Keep this patch after the patches indicated in the list of Harmony IDs
+
+
+
+ A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future
+
+
+
+ The method of the static patch method
+
+
+
+ Creates a patch
+ The method of the patch
+ Zero-based index
+ An owner (Harmony ID)
+ The priority, see
+ A list of Harmony IDs for patches that should run after this patch
+ A list of Harmony IDs for patches that should run before this patch
+ A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future
+
+
+
+ Get the patch method or a DynamicMethod if original patch method is a patch factory
+ The original method/constructor
+ The method of the patch
+
+
+
+ Determines whether patches are equal
+ The other patch
+ true if equal
+
+
+
+ Determines how patches sort
+ The other patch
+ integer to define sort order (-1, 0, 1)
+
+
+
+ Hash function
+ A hash code
+
+
+
+ A PatchClassProcessor used to turn on a class/type into patches
+
+
+
+ Creates a patch class processor by pointing out a class. Similar to PatchAll() but without searching through all classes.
+ The Harmony instance
+ The class to process (need to have at least a [HarmonyPatch] attribute)
+
+
+
+ Applies the patches
+ A list of all created replacement methods or null if patch class is not annotated
+
+
+
+ A group of patches
+
+
+
+ A collection of prefix
+
+
+
+ A collection of postfix
+
+
+
+ A collection of transpiler
+
+
+
+ A collection of finalizer
+
+
+
+ Gets all owners (Harmony IDs) or all known patches
+ The patch owners
+
+
+
+ Creates a group of patches
+ An array of prefixes as
+ An array of postfixes as
+ An array of transpileres as
+ An array of finalizeres as
+
+
+
+ A PatchProcessor handles patches on a method/constructor
+
+
+
+ Creates an empty patch processor
+ The Harmony instance
+ The original method/constructor
+
+
+
+ Adds a prefix
+ The prefix as a
+ A for chaining calls
+
+
+
+ Adds a prefix
+ The prefix method
+ A for chaining calls
+
+
+
+ Adds a postfix
+ The postfix as a
+ A for chaining calls
+
+
+
+ Adds a postfix
+ The postfix method
+ A for chaining calls
+
+
+
+ Adds a transpiler
+ The transpiler as a
+ A for chaining calls
+
+
+
+ Adds a transpiler
+ The transpiler method
+ A for chaining calls
+
+
+
+ Adds a finalizer
+ The finalizer as a
+ A for chaining calls
+
+
+
+ Adds a finalizer
+ The finalizer method
+ A for chaining calls
+
+
+
+ Gets all patched original methods in the appdomain
+ An enumeration of patched method/constructor
+
+
+
+ Applies all registered patches
+ The generated replacement method
+
+
+
+ Unpatches patches of a given type and/or Harmony ID
+ The patch type
+ Harmony ID or * for any
+ A for chaining calls
+
+
+
+ Unpatches a specific patch
+ The method of the patch
+ A for chaining calls
+
+
+
+ Gets patch information on an original
+ The original method/constructor
+ The patch information as
+
+
+
+ Sort patch methods by their priority rules
+ The original method
+ Patches to sort
+ The sorted patch methods
+
+
+
+ Gets Harmony version for all active Harmony instances
+ [out] The current Harmony version
+ A dictionary containing assembly version keyed by Harmony ID
+
+
+
+ Creates a new empty generator to use when reading method bodies
+ A new
+
+
+
+ Creates a new generator matching the method/constructor to use when reading method bodies
+ The original method/constructor to copy method information from
+ A new
+
+
+
+ Returns the methods unmodified list of code instructions
+ The original method/constructor
+ Optionally an existing generator that will be used to create all local variables and labels contained in the result (if not specified, an internal generator is used)
+ A list containing all the original
+
+
+
+ Returns the methods unmodified list of code instructions
+ The original method/constructor
+ A new generator that now contains all local variables and labels contained in the result
+ A list containing all the original
+
+
+
+ Returns the methods current list of code instructions after all existing transpilers have been applied
+ The original method/constructor
+ Apply only the first count of transpilers
+ Optionally an existing generator that will be used to create all local variables and labels contained in the result (if not specified, an internal generator is used)
+ A list of
+
+
+
+ Returns the methods current list of code instructions after all existing transpilers have been applied
+ The original method/constructor
+ A new generator that now contains all local variables and labels contained in the result
+ Apply only the first count of transpilers
+ A list of
+
+
+
+ A low level way to read the body of a method. Used for quick searching in methods
+ The original method
+ All instructions as opcode/operand pairs
+
+
+
+ A low level way to read the body of a method. Used for quick searching in methods
+ The original method
+ An existing generator that will be used to create all local variables and labels contained in the result
+ All instructions as opcode/operand pairs
+
+
+
+ A patch priority
+
+
+
+ Patch last
+
+
+
+ Patch with very low priority
+
+
+
+ Patch with low priority
+
+
+
+ Patch with lower than normal priority
+
+
+
+ Patch with normal priority
+
+
+
+ Patch with higher than normal priority
+
+
+
+ Patch with high priority
+
+
+
+ Patch with very high priority
+
+
+
+ Patch first
+
+
+
+ A reverse patcher
+
+
+
+ Creates a reverse patcher
+ The Harmony instance
+ The original method/constructor
+ Your stand-in stub method as
+
+
+
+ Applies the patch
+ The type of patch, see
+ The generated replacement method
+
+
+
+ A collection of commonly used transpilers
+
+
+
+ A transpiler that replaces all occurrences of a given method with another one
+ The enumeration of to act on
+ Method or constructor to search for
+ Method or constructor to replace with
+ Modified enumeration of
+
+
+
+ A transpiler that alters instructions that match a predicate by calling an action
+ The enumeration of to act on
+ A predicate selecting the instructions to change
+ An action to apply to matching instructions
+ Modified enumeration of
+
+
+
+ A transpiler that logs a text at the beginning of the method
+ The instructions to act on
+ The log text
+ Modified enumeration of
+
+
+
+ A helper class for reflection related functions
+
+
+
+ Shortcut for to simplify the use of reflections and make it work for any access level
+
+
+
+ Shortcut for to simplify the use of reflections and make it work for any access level but only within the current type
+
+
+
+ Gets a type by name. Prefers a full name with namespace but falls back to the first type matching the name otherwise
+ The name
+ A type or null if not found
+
+
+
+ Gets all successfully loaded types from a given assembly
+ The assembly
+ An array of types
+
+ This calls and returns , while catching any thrown .
+ If such an exception is thrown, returns the successfully loaded types ( ,
+ filtered for non-null values).
+
+
+
+
+ Applies a function going up the type hierarchy and stops at the first non null result
+ Result type of func()
+ The class/type to start with
+ The evaluation function returning T
+ Returns the first non null result or default(T) when reaching the top level type object
+
+
+
+ Applies a function going into inner types and stops at the first non null result
+ Generic type parameter
+ The class/type to start with
+ The evaluation function returning T
+ Returns the first non null result or null with no match
+
+
+
+ Gets the reflection information for a directly declared field
+ The class/type where the field is defined
+ The name of the field
+ A field or null when type/name is null or when the field cannot be found
+
+
+
+ Gets the reflection information for a field by searching the type and all its super types
+ The class/type where the field is defined
+ The name of the field (case sensitive)
+ A field or null when type/name is null or when the field cannot be found
+
+
+
+ Gets the reflection information for a field
+ The class/type where the field is declared
+ The zero-based index of the field inside the class definition
+ A field or null when type is null or when the field cannot be found
+
+
+
+ Gets the reflection information for a directly declared property
+ The class/type where the property is declared
+ The name of the property (case sensitive)
+ A property or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for the getter method of a directly declared property
+ The class/type where the property is declared
+ The name of the property (case sensitive)
+ A method or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for the setter method of a directly declared property
+ The class/type where the property is declared
+ The name of the property (case sensitive)
+ A method or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for a property by searching the type and all its super types
+ The class/type
+ The name
+ A property or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for the getter method of a property by searching the type and all its super types
+ The class/type
+ The name
+ A method or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for the setter method of a property by searching the type and all its super types
+ The class/type
+ The name
+ A method or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for a directly declared method
+ The class/type where the method is declared
+ The name of the method (case sensitive)
+ Optional parameters to target a specific overload of the method
+ Optional list of types that define the generic version of the method
+ A method or null when type/name is null or when the method cannot be found
+
+
+
+ Gets the reflection information for a method by searching the type and all its super types
+ The class/type where the method is declared
+ The name of the method (case sensitive)
+ Optional parameters to target a specific overload of the method
+ Optional list of types that define the generic version of the method
+ A method or null when type/name is null or when the method cannot be found
+
+
+
+ Gets the reflection information for a method by searching the type and all its super types
+ The target method in the form TypeFullName:MethodName , where the type name matches a form recognized by Type.GetType like Some.Namespace.Type .
+ Optional parameters to target a specific overload of the method
+ Optional list of types that define the generic version of the method
+ A method or null when type/name is null or when the method cannot be found
+
+
+
+ Gets the names of all method that are declared in a type
+ The declaring class/type
+ A list of method names
+
+
+
+ Gets the names of all method that are declared in the type of the instance
+ An instance of the type to search in
+ A list of method names
+
+
+
+ Gets the names of all fields that are declared in a type
+ The declaring class/type
+ A list of field names
+
+
+
+ Gets the names of all fields that are declared in the type of the instance
+ An instance of the type to search in
+ A list of field names
+
+
+
+ Gets the names of all properties that are declared in a type
+ The declaring class/type
+ A list of property names
+
+
+
+ Gets the names of all properties that are declared in the type of the instance
+ An instance of the type to search in
+ A list of property names
+
+
+
+ Gets the type of any class member of
+ A member
+ The class/type of this member
+
+
+
+ Test if a class member is actually an concrete implementation
+ A member
+ True if the member is a declared
+
+
+
+ Gets the real implementation of a class member
+ A member
+ The member itself if its declared. Otherwise the member that is actually implemented in some base type
+
+
+
+ Gets the reflection information for a directly declared constructor
+ The class/type where the constructor is declared
+ Optional parameters to target a specific overload of the constructor
+ Optional parameters to only consider static constructors
+ A constructor info or null when type is null or when the constructor cannot be found
+
+
+
+ Gets the reflection information for a constructor by searching the type and all its super types
+ The class/type where the constructor is declared
+ Optional parameters to target a specific overload of the method
+ Optional parameters to only consider static constructors
+ A constructor info or null when type is null or when the method cannot be found
+
+
+
+ Gets reflection information for all declared constructors
+ The class/type where the constructors are declared
+ Optional parameters to only consider static constructors
+ A list of constructor infos
+
+
+
+ Gets reflection information for all declared methods
+ The class/type where the methods are declared
+ A list of methods
+
+
+
+ Gets reflection information for all declared properties
+ The class/type where the properties are declared
+ A list of properties
+
+
+
+ Gets reflection information for all declared fields
+ The class/type where the fields are declared
+ A list of fields
+
+
+
+ Gets the return type of a method or constructor
+ The method/constructor
+ The return type
+
+
+
+ Given a type, returns the first inner type matching a recursive search by name
+ The class/type to start searching at
+ The name of the inner type (case sensitive)
+ The inner type or null if type/name is null or if a type with that name cannot be found
+
+
+
+ Given a type, returns the first inner type matching a recursive search with a predicate
+ The class/type to start searching at
+ The predicate to search with
+ The inner type or null if type/predicate is null or if a type with that name cannot be found
+
+
+
+ Given a type, returns the first method matching a predicate
+ The class/type to start searching at
+ The predicate to search with
+ The method or null if type/predicate is null or if a type with that name cannot be found
+
+
+
+ Given a type, returns the first constructor matching a predicate
+ The class/type to start searching at
+ The predicate to search with
+ The constructor info or null if type/predicate is null or if a type with that name cannot be found
+
+
+
+ Given a type, returns the first property matching a predicate
+ The class/type to start searching at
+ The predicate to search with
+ The property or null if type/predicate is null or if a type with that name cannot be found
+
+
+
+ Returns an array containing the type of each object in the given array
+ An array of objects
+ An array of types or an empty array if parameters is null (if an object is null, the type for it will be object)
+
+
+
+ Creates an array of input parameters for a given method and a given set of potential inputs
+ The method/constructor you are planing to call
+ The possible input parameters in any order
+ An object array matching the method signature
+
+
+
+ A read/writable reference to an instance field
+ The class the field is defined in or "object" if type cannot be accessed at compile time
+ The type of the field
+ The runtime instance to access the field (leave empty for static fields)
+ An readable/assignable object representing the field
+
+
+
+ Creates an instance field reference
+ The class the field is defined in
+ The type of the field
+ The name of the field
+ A read and writable field reference delegate
+
+
+
+ Creates an instance field reference for a specific instance
+ The class the field is defined in
+ The type of the field
+ The instance
+ The name of the field
+ An readable/assignable object representing the field
+
+
+
+ Creates an instance field reference delegate for a private type
+ The type of the field
+ The class/type
+ The name of the field
+ A read and writable delegate
+
+
+
+ Creates an instance field reference delegate for a fieldinfo
+ The class the field is defined in or "object" if type cannot be accessed at compile time
+ The type of the field
+ The field of the field
+ A read and writable delegate
+
+
+
+ Creates a static field reference
+ The class the field is defined in or "object" if type cannot be accessed at compile time
+ The type of the field
+ The name of the field
+ An readable/assignable object representing the static field
+
+
+
+ Creates a static field reference
+ The type of the field
+ The class/type
+ The name of the field
+ An readable/assignable object representing the static field
+
+
+
+ Creates a static field reference
+ The class the field is defined in or "object" if type cannot be accessed at compile time
+ The type of the field
+ The field
+ An readable/assignable object representing the static field
+
+
+
+ A read/writable reference delegate to a static field
+ The type of the field
+ An readable/assignable object representing the static field
+
+
+
+ Creates a static field reference delegate
+ The type of the field
+ The field
+ A read and writable delegate
+
+
+
+ Creates a delegate to a given method
+ The delegate Type
+ The method to create a delegate from.
+
+ Only applies for instance methods. If null (default), returned delegate is an open (a.k.a. unbound) instance delegate
+ where an instance is supplied as the first argument to the delegate invocation; else, delegate is a closed (a.k.a. bound)
+ instance delegate where the delegate invocation always applies to the given .
+
+
+ Only applies for instance methods. If true (default) and is virtual, invocation of the delegate
+ calls the instance method virtually (the instance type's most-derived/overriden implementation of the method is called);
+ else, invocation of the delegate calls the exact specified (this is useful for calling base class methods)
+ Note: if false and is an interface method, an ArgumentException is thrown.
+
+ A delegate of given to given
+
+
+ Delegate invocation is more performant and more convenient to use than
+ at a one-time setup cost.
+
+
+ Works for both type of static and instance methods, both open and closed (a.k.a. unbound and bound) instance methods,
+ and both class and struct methods.
+
+
+
+
+
+ Creates a delegate for a given delegate definition, attributed with [ ]
+ The delegate Type, attributed with [ ]
+
+ Only applies for instance methods. If null (default), returned delegate is an open (a.k.a. unbound) instance delegate
+ where an instance is supplied as the first argument to the delegate invocation; else, delegate is a closed (a.k.a. bound)
+ instance delegate where the delegate invocation always applies to the given .
+
+ A delegate of given to the method specified via [ ]
+ attributes on
+
+ This calls with the method and virtualCall arguments
+ determined from the [ ] attributes on ,
+ and the given (for closed instance delegates).
+
+
+
+
+ Returns who called the current method
+ The calling method/constructor (excluding the caller)
+
+
+
+ Rethrows an exception while preserving its stack trace (throw statement typically clobbers existing stack traces)
+ The exception to rethrow
+
+
+
+ True if the current runtime is based on Mono, false otherwise (.NET)
+
+
+
+ True if the current runtime is .NET Framework, false otherwise (.NET Core or Mono, although latter isn't guaranteed)
+
+
+
+ True if the current runtime is .NET Core, false otherwise (Mono or .NET Framework)
+
+
+
+ Throws a missing member runtime exception
+ The type that is involved
+ A list of names
+
+
+
+ Gets default value for a specific type
+ The class/type
+ The default value
+
+
+
+ Creates an (possibly uninitialized) instance of a given type
+ The class/type
+ The new instance
+
+
+
+ Makes a deep copy of any object
+ The type of the instance that should be created
+ The original object
+ A copy of the original object but of type T
+
+
+
+ Makes a deep copy of any object
+ The type of the instance that should be created
+ The original object
+ [out] The copy of the original object
+ Optional value transformation function (taking a field name and src/dst instances)
+ The optional path root to start with
+
+
+
+ Makes a deep copy of any object
+ The original object
+ The type of the instance that should be created
+ Optional value transformation function (taking a field name and src/dst instances)
+ The optional path root to start with
+ The copy of the original object
+
+
+
+ Tests if a type is a struct
+ The type
+ True if the type is a struct
+
+
+
+ Tests if a type is a class
+ The type
+ True if the type is a class
+
+
+
+ Tests if a type is a value type
+ The type
+ True if the type is a value type
+
+
+
+ Tests if a type is an integer type
+ The type
+ True if the type represents some integer
+
+
+
+ Tests if a type is a floating point type
+ The type
+ True if the type represents some floating point
+
+
+
+ Tests if a type is a numerical type
+ The type
+ True if the type represents some number
+
+
+
+ Tests if a type is void
+ The type
+ True if the type is void
+
+
+
+ Test whether an instance is of a nullable type
+ Type of instance
+ An instance to test
+ True if instance is of nullable type, false if not
+
+
+
+ Tests whether a type or member is static, as defined in C#
+ The type or member
+ True if the type or member is static
+
+
+
+ Tests whether a type is static, as defined in C#
+ The type
+ True if the type is static
+
+
+
+ Tests whether a property is static, as defined in C#
+ The property
+ True if the property is static
+
+
+
+ Tests whether an event is static, as defined in C#
+ The event
+ True if the event is static
+
+
+
+ Calculates a combined hash code for an enumeration of objects
+ The objects
+ The hash code
+
+
+
+ General extensions for common cases
+
+
+
+ Joins an enumeration with a value converter and a delimiter to a string
+ The inner type of the enumeration
+ The enumeration
+ An optional value converter (from T to string)
+ An optional delimiter
+ The values joined into a string
+
+
+
+ Converts an array of types (for example methods arguments) into a human readable form
+ The array of types
+ A human readable description including brackets
+
+
+
+ A full description of a type
+ The type
+ A human readable description
+
+
+
+ A a full description of a method or a constructor without assembly details but with generics
+ The method/constructor
+ A human readable description
+
+
+
+ A helper converting parameter infos to types
+ The array of parameter infos
+ An array of types
+
+
+
+ A helper to access a value via key from a dictionary
+ The key type
+ The value type
+ The dictionary
+ The key
+ The value for the key or the default value (of T) if that key does not exist
+
+
+
+ A helper to access a value via key from a dictionary with extra casting
+ The value type
+ The dictionary
+ The key
+ The value for the key or the default value (of T) if that key does not exist or cannot be cast to T
+
+
+
+ Escapes Unicode and ASCII non printable characters
+ The string to convert
+ The string to convert
+ A string literal surrounded by
+
+
+
+ Extensions for
+
+
+
+ Shortcut for testing whether the operand is equal to a non-null value
+ The
+ The value
+ True if the operand has the same type and is equal to the value
+
+
+
+ Shortcut for testing whether the operand is equal to a non-null value
+ The
+ The value
+ True if the operand is equal to the value
+ This is an optimized version of for
+
+
+
+ Shortcut for code.opcode == opcode && code.OperandIs(operand)
+ The
+ The
+ The operand value
+ True if the opcode is equal to the given opcode and the operand has the same type and is equal to the given operand
+
+
+
+ Shortcut for code.opcode == opcode && code.OperandIs(operand)
+ The
+ The
+ The operand value
+ True if the opcode is equal to the given opcode and the operand is equal to the given operand
+ This is an optimized version of for
+
+
+
+ Tests for any form of Ldarg*
+ The
+ The (optional) index
+ True if it matches one of the variations
+
+
+
+ Tests for Ldarga/Ldarga_S
+ The
+ The (optional) index
+ True if it matches one of the variations
+
+
+
+ Tests for Starg/Starg_S
+ The
+ The (optional) index
+ True if it matches one of the variations
+
+
+
+ Tests for any form of Ldloc*
+ The
+ The optional local variable
+ True if it matches one of the variations
+
+
+
+ Tests for any form of Stloc*
+ The
+ The optional local variable
+ True if it matches one of the variations
+
+
+
+ Tests if the code instruction branches
+ The
+ The label if the instruction is a branch operation or if not
+ True if the instruction branches
+
+
+
+ Tests if the code instruction calls the method/constructor
+ The
+ The method
+ True if the instruction calls the method or constructor
+
+
+
+ Tests if the code instruction loads a constant
+ The
+ True if the instruction loads a constant
+
+
+
+ Tests if the code instruction loads an integer constant
+ The
+ The integer constant
+ True if the instruction loads the constant
+
+
+
+ Tests if the code instruction loads a floating point constant
+ The
+ The floating point constant
+ True if the instruction loads the constant
+
+
+
+ Tests if the code instruction loads an enum constant
+ The
+ The enum
+ True if the instruction loads the constant
+
+
+
+ Tests if the code instruction loads a field
+ The
+ The field
+ Set to true if the address of the field is loaded
+ True if the instruction loads the field
+
+
+
+ Tests if the code instruction stores a field
+ The
+ The field
+ True if the instruction stores this field
+
+
+
+ Adds labels to the code instruction and return it
+ The
+ One or several to add
+ The same code instruction
+
+
+ Adds labels to the code instruction and return it
+ The
+ An enumeration of
+ The same code instruction
+
+
+ Extracts all labels from the code instruction and returns them
+ The
+ A list of
+
+
+ Moves all labels from the code instruction to a different one
+ The to move the labels from
+ The to move the labels to
+ The code instruction labels were moved from (now empty)
+
+
+ Moves all labels from a different code instruction to the current one
+ The to move the labels from
+ The to move the labels to
+ The code instruction that received the labels
+
+
+ Adds ExceptionBlocks to the code instruction and return it
+ The
+ One or several to add
+ The same code instruction
+
+
+ Adds ExceptionBlocks to the code instruction and return it
+ The
+ An enumeration of
+ The same code instruction
+
+
+ Extracts all ExceptionBlocks from the code instruction and returns them
+ The
+ A list of
+
+
+ Moves all ExceptionBlocks from the code instruction to a different one
+ The to move the ExceptionBlocks from
+ The to move the ExceptionBlocks to
+ The code instruction blocks were moved from (now empty)
+
+
+ Moves all ExceptionBlocks from a different code instruction to the current one
+ The to move the ExceptionBlocks from
+ The to move the ExceptionBlocks to
+ The code instruction that received the blocks
+
+
+ General extensions for collections
+
+
+
+ A simple way to execute code for every element in a collection
+ The inner type of the collection
+ The collection
+ The action to execute
+
+
+
+ A simple way to execute code for elements in a collection matching a condition
+ The inner type of the collection
+ The collection
+ The predicate
+ The action to execute
+
+
+
+ A helper to add an item to a collection
+ The inner type of the collection
+ The collection
+ The item to add
+ The collection containing the item
+
+
+
+ A helper to add an item to an array
+ The inner type of the collection
+ The array
+ The item to add
+ The array containing the item
+
+
+
+ A helper to add items to an array
+ The inner type of the collection
+ The array
+ The items to add
+ The array containing the items
+
+
+
+ General extensions for collections
+
+
+
+ Tests a class member if it has an IL method body (external methods for example don't have a body)
+ The member to test
+ Returns true if the member has an IL body or false if not
+
+
+ A file log for debugging
+
+
+
+ Full pathname of the log file, defaults to a file called harmony.log.txt on your Desktop
+
+
+
+ The indent character. The default is tab
+
+
+
+ The current indent level
+
+
+
+ Changes the indentation level
+ The value to add to the indentation level
+
+
+
+ Log a string in a buffered way. Use this method only if you are sure that FlushBuffer will be called
+ or else logging information is incomplete in case of a crash
+ The string to log
+
+
+
+ Logs a list of string in a buffered way. Use this method only if you are sure that FlushBuffer will be called
+ or else logging information is incomplete in case of a crash
+ A list of strings to log (they will not be re-indented)
+
+
+
+ Returns the log buffer and optionally empties it
+ True to empty the buffer
+ The buffer.
+
+
+
+ Replaces the buffer with new lines
+ The lines to store
+
+
+
+ Flushes the log buffer to disk (use in combination with LogBuffered)
+
+
+
+ Log a string directly to disk. Slower method that prevents missing information in case of a crash
+ The string to log.
+
+
+
+ Resets and deletes the log
+
+
+
+ Logs some bytes as hex values
+ The pointer to some memory
+ The length of bytes to log
+
+
+
+ A helper class to retrieve reflection info for non-private methods
+
+
+
+ Given a lambda expression that calls a method, returns the method info
+ The lambda expression using the method
+ The method in the lambda expression
+
+
+
+ Given a lambda expression that calls a method, returns the method info
+ The generic type
+ The lambda expression using the method
+ The method in the lambda expression
+
+
+
+ Given a lambda expression that calls a method, returns the method info
+ The generic type
+ The generic result type
+ The lambda expression using the method
+ The method in the lambda expression
+
+
+
+ Given a lambda expression that calls a method, returns the method info
+ The lambda expression using the method
+ The method in the lambda expression
+
+
+
+ A reflection helper to read and write private elements
+ The result type defined by GetValue()
+
+
+
+ Creates a traverse instance from an existing instance
+ The existing instance
+
+
+
+ Gets/Sets the current value
+ The value to read or write
+
+
+
+ A reflection helper to read and write private elements
+
+
+
+ Creates a new traverse instance from a class/type
+ The class/type
+ A instance
+
+
+
+ Creates a new traverse instance from a class T
+ The class
+ A instance
+
+
+
+ Creates a new traverse instance from an instance
+ The object
+ A instance
+
+
+
+ Creates a new traverse instance from a named type
+ The type name, for format see
+ A instance
+
+
+
+ Creates a new and empty traverse instance
+
+
+
+ Creates a new traverse instance from a class/type
+ The class/type
+
+
+
+ Creates a new traverse instance from an instance
+ The object
+
+
+
+ Gets the current value
+ The value
+
+
+
+ Gets the current value
+ The type of the value
+ The value
+
+
+
+ Invokes the current method with arguments and returns the result
+ The method arguments
+ The value returned by the method
+
+
+
+ Invokes the current method with arguments and returns the result
+ The type of the value
+ The method arguments
+ The value returned by the method
+
+
+
+ Sets a value of the current field or property
+ The value
+ The same traverse instance
+
+
+
+ Gets the type of the current field or property
+ The type
+
+
+
+ Moves the current traverse instance to a inner type
+ The type name
+ A traverse instance
+
+
+
+ Moves the current traverse instance to a field
+ The type name
+ A traverse instance
+
+
+
+ Moves the current traverse instance to a field
+ The type of the field
+ The type name
+ A traverse instance
+
+
+
+ Gets all fields of the current type
+ A list of field names
+
+
+
+ Moves the current traverse instance to a property
+ The type name
+ Optional property index
+ A traverse instance
+
+
+
+ Moves the current traverse instance to a field
+ The type of the property
+ The type name
+ Optional property index
+ A traverse instance
+
+
+
+ Gets all properties of the current type
+ A list of property names
+
+
+
+ Moves the current traverse instance to a method
+ The name of the method
+ The arguments defining the argument types of the method overload
+ A traverse instance
+
+
+
+ Moves the current traverse instance to a method
+ The name of the method
+ The argument types of the method
+ The arguments for the method
+ A traverse instance
+
+
+
+ Gets all methods of the current type
+ A list of method names
+
+
+
+ Checks if the current traverse instance is for a field
+ True if its a field
+
+
+
+ Checks if the current traverse instance is for a property
+ True if its a property
+
+
+
+ Checks if the current traverse instance is for a method
+ True if its a method
+
+
+
+ Checks if the current traverse instance is for a type
+ True if its a type
+
+
+
+ Iterates over all fields of the current type and executes a traverse action
+ Original object
+ The action receiving a instance for each field
+
+
+
+ Iterates over all fields of the current type and executes a traverse action
+ Original object
+ Target object
+ The action receiving a pair of instances for each field pair
+
+
+
+ Iterates over all fields of the current type and executes a traverse action
+ Original object
+ Target object
+ The action receiving a dot path representing the field pair and the instances
+
+
+
+ Iterates over all properties of the current type and executes a traverse action
+ Original object
+ The action receiving a instance for each property
+
+
+
+ Iterates over all properties of the current type and executes a traverse action
+ Original object
+ Target object
+ The action receiving a pair of instances for each property pair
+
+
+
+ Iterates over all properties of the current type and executes a traverse action
+ Original object
+ Target object
+ The action receiving a dot path representing the property pair and the instances
+
+
+
+ A default field action that copies fields to fields
+
+
+
+ Returns a string that represents the current traverse
+ A string representation
+
+
+
+
diff --git a/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/net48/0Harmony.dll b/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/net48/0Harmony.dll
new file mode 100644
index 0000000..482061c
Binary files /dev/null and b/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/net48/0Harmony.dll differ
diff --git a/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/net48/0Harmony.xml b/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/net48/0Harmony.xml
new file mode 100644
index 0000000..6bcea2e
--- /dev/null
+++ b/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/net48/0Harmony.xml
@@ -0,0 +1,2900 @@
+
+
+
+ 0Harmony
+
+
+
+ A factory to create delegate types
+
+
+ Default constructor
+
+
+ Creates a delegate type for a method
+ The method
+ The new delegate type
+
+
+
+ A getter delegate type
+ Type that getter gets field/property value from
+ Type of the value that getter gets
+ The instance get getter uses
+ An delegate
+
+
+
+ A setter delegate type
+ Type that setter sets field/property value for
+ Type of the value that setter sets
+ The instance the setter uses
+ The value the setter uses
+ An delegate
+
+
+
+ A constructor delegate type
+ Type that constructor creates
+ An delegate
+
+
+
+ A helper class for fast access to getters and setters
+
+
+ Creates an instantiation delegate
+ Type that constructor creates
+ The new instantiation delegate
+
+
+
+ Creates an getter delegate for a property
+ Type that getter reads property from
+ Type of the property that gets accessed
+ The property
+ The new getter delegate
+
+
+
+ Creates an getter delegate for a field
+ Type that getter reads field from
+ Type of the field that gets accessed
+ The field
+ The new getter delegate
+
+
+
+ Creates an getter delegate for a field (with a list of possible field names)
+ Type that getter reads field/property from
+ Type of the field/property that gets accessed
+ A list of possible field names
+ The new getter delegate
+
+
+
+ Creates an setter delegate
+ Type that setter assigns property value to
+ Type of the property that gets assigned
+ The property
+ The new setter delegate
+
+
+
+ Creates an setter delegate for a field
+ Type that setter assigns field value to
+ Type of the field that gets assigned
+ The field
+ The new getter delegate
+
+
+
+ A delegate to invoke a method
+ The instance
+ The method parameters
+ The method result
+
+
+ A helper class to invoke method with delegates
+
+
+ Creates a fast invocation handler from a method
+ The method to invoke
+ Controls if boxed value object is accessed/updated directly
+ The
+
+
+ The directBoxValueAccess option controls how value types passed by reference (e.g. ref int, out my_struct) are handled in the arguments array
+ passed to the fast invocation handler.
+ Since the arguments array is an object array, any value types contained within it are actually references to a boxed value object.
+ Like any other object, there can be other references to such boxed value objects, other than the reference within the arguments array.
+ For example,
+
+ var val = 5;
+ var box = (object)val;
+ var arr = new object[] { box };
+ handler(arr); // for a method with parameter signature: ref/out/in int
+
+
+
+
+ If directBoxValueAccess is true , the boxed value object is accessed (and potentially updated) directly when the handler is called,
+ such that all references to the boxed object reflect the potentially updated value.
+ In the above example, if the method associated with the handler updates the passed (boxed) value to 10, both box and arr[0]
+ now reflect the value 10. Note that the original val is not updated, since boxing always copies the value into the new boxed value object.
+
+
+ If directBoxValueAccess is false (default), the boxed value object in the arguments array is replaced with a "reboxed" value object,
+ such that potential updates to the value are reflected only in the arguments array.
+ In the above example, if the method associated with the handler updates the passed (boxed) value to 10, only arr[0] now reflects the value 10.
+
+
+
+
+ A low level memory helper
+
+
+ Mark method for no inlining (currently only works on Mono)
+ The method/constructor to change
+
+
+ Detours a method
+ The original method/constructor
+ The replacement method/constructor
+ An error string
+
+
+
+ Writes a jump to memory
+ The memory address
+ Jump destination
+ An error string
+
+
+
+ Gets the start of a method in memory
+ The method/constructor
+ [out] Details of the exception
+ The method start address
+
+
+
+ special parameter names that can be used in prefix and postfix methods
+
+
+ Patch function helpers
+
+
+ Adds a prefix
+ The patch info
+ The owner (Harmony ID)
+ The annotation info
+
+
+
+ Removes a prefix
+ The patch info
+ The owner (Harmony ID)
+
+
+
+ Adds a postfix
+ The patch info
+ The owner (Harmony ID)
+ The annotation info
+
+
+
+ Removes a postfix
+ The patch info
+ The owner (Harmony ID)
+
+
+
+ Adds a transpiler
+ The patch info
+ The owner (Harmony ID)
+ The annotation info
+
+
+
+ Removes a transpiler
+ The patch info
+ The owner (Harmony ID)
+
+
+
+ Adds a finalizer
+ The patch info
+ The owner (Harmony ID)
+ The annotation info
+
+
+
+ Removes a finalizer
+ The patch info
+ The owner (Harmony ID)
+
+
+
+ Removes a patch method
+ The patch info
+ The patch method
+
+
+
+ Sorts patch methods by their priority rules
+ The original method
+ Patches to sort
+ Use debug mode
+ The sorted patch methods
+
+
+
+ Creates new replacement method with the latest patches and detours the original method
+ The original method
+ Information describing the patches
+ The newly created replacement method
+
+
+
+ Creates a patch sorter
+ Array of patches that will be sorted
+ Use debugging
+
+
+ Sorts internal PatchSortingWrapper collection and caches the results.
+ After first run the result is provided from the cache.
+ The original method
+ The sorted patch methods
+
+
+ Checks if the sorter was created with the same patch list and as a result can be reused to
+ get the sorted order of the patches.
+ List of patches to check against
+ true if equal
+
+
+ Removes one unresolved dependency from the least important patch.
+
+
+ Outputs all unblocked patches from the waiting list to results list
+
+
+ Adds patch to both results list and handled patches set
+ Patch to add
+
+
+ Wrapper used over the Patch object to allow faster dependency access and
+ dependency removal in case of cyclic dependencies
+
+
+ Create patch wrapper object used for sorting
+ Patch to wrap
+
+
+ Determines how patches sort
+ The other patch
+ integer to define sort order (-1, 0, 1)
+
+
+ Determines whether patches are equal
+ The other patch
+ true if equal
+
+
+ Hash function
+ A hash code
+
+
+ Bidirectionally registers Patches as after dependencies
+ List of dependencies to register
+
+
+ Bidirectionally registers Patches as before dependencies
+ List of dependencies to register
+
+
+ Bidirectionally removes Patch from after dependencies
+ Patch to remove
+
+
+ Bidirectionally removes Patch from before dependencies
+ Patch to remove
+
+
+ Specifies the type of method
+
+
+
+ This is a normal method
+
+
+ This is a getter
+
+
+ This is a setter
+
+
+ This is a constructor
+
+
+ This is a static constructor
+
+
+ Specifies the type of argument
+
+
+
+ This is a normal argument
+
+
+ This is a reference argument (ref)
+
+
+ This is an out argument (out)
+
+
+ This is a pointer argument (&)
+
+
+ Specifies the type of patch
+
+
+
+ Any patch
+
+
+ A prefix patch
+
+
+ A postfix patch
+
+
+ A transpiler
+
+
+ A finalizer
+
+
+ A reverse patch
+
+
+ Specifies the type of reverse patch
+
+
+
+ Use the unmodified original method (directly from IL)
+
+
+ Use the original as it is right now including previous patches but excluding future ones
+
+
+ Specifies the type of method call dispatching mechanics
+
+
+
+ Call the method using dynamic dispatching if method is virtual (including overriden)
+
+
+ This is the built-in form of late binding (a.k.a. dynamic binding) and is the default dispatching mechanic in C#.
+ This directly corresponds with the instruction.
+
+
+ For virtual (including overriden) methods, the instance type's most-derived/overriden implementation of the method is called.
+ For non-virtual (including static) methods, same behavior as : the exact specified method implementation is called.
+
+
+ Note: This is not a fully dynamic dispatch, since non-virtual (including static) methods are still called non-virtually.
+ A fully dynamic dispatch in C# involves using
+ the dynamic type
+ (actually a fully dynamic binding, since even the name and overload resolution happens at runtime), which does not support.
+
+
+
+
+ Call the method using static dispatching, regardless of whether method is virtual (including overriden) or non-virtual (including static)
+
+
+ a.k.a. non-virtual dispatching, early binding, or static binding.
+ This directly corresponds with the instruction.
+
+
+ For both virtual (including overriden) and non-virtual (including static) methods, the exact specified method implementation is called, without virtual/override mechanics.
+
+
+
+
+ The base class for all Harmony annotations (not meant to be used directly)
+
+
+
+ The common information for all attributes
+
+
+ Annotation to define your Harmony patch methods
+
+
+
+ An empty annotation can be used together with TargetMethod(s)
+
+
+
+ An annotation that specifies a class to patch
+ The declaring class/type
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The argument types of the method or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+ Array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+ An array of argument types to target overloads
+ Array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+ An array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The
+ An array of argument types to target overloads
+ An array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ An array of argument types to target overloads
+ An array of
+
+
+
+ Annotation to define the original method for delegate injection
+
+
+
+ An annotation that specifies a class to patch
+ The declaring class/type
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The argument types of the method or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+ Array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+ An array of argument types to target overloads
+ Array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+ An array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ The
+
+
+
+ An annotation that specifies call dispatching mechanics for the delegate
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The
+ An array of argument types to target overloads
+ An array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ An array of argument types to target overloads
+ An array of
+
+
+
+ Annotation to define your standin methods for reverse patching
+
+
+
+ An annotation that specifies the type of reverse patching
+ The of the reverse patch
+
+
+
+ A Harmony annotation to define that all methods in a class are to be patched
+
+
+
+ A Harmony annotation
+
+
+
+ A Harmony annotation to define patch priority
+ The priority
+
+
+
+ A Harmony annotation
+
+
+
+ A Harmony annotation to define that a patch comes before another patch
+ The array of harmony IDs of the other patches
+
+
+
+ A Harmony annotation
+
+
+ A Harmony annotation to define that a patch comes after another patch
+ The array of harmony IDs of the other patches
+
+
+
+ A Harmony annotation
+
+
+ A Harmony annotation to debug a patch (output uses to log to your Desktop)
+
+
+
+ Specifies the Prepare function in a patch class
+
+
+
+ Specifies the Cleanup function in a patch class
+
+
+
+ Specifies the TargetMethod function in a patch class
+
+
+
+ Specifies the TargetMethods function in a patch class
+
+
+
+ Specifies the Prefix function in a patch class
+
+
+
+ Specifies the Postfix function in a patch class
+
+
+
+ Specifies the Transpiler function in a patch class
+
+
+
+ Specifies the Finalizer function in a patch class
+
+
+
+ A Harmony annotation
+
+
+
+ The name of the original argument
+
+
+
+ The index of the original argument
+
+
+
+ The new name of the original argument
+
+
+
+ An annotation to declare injected arguments by name
+
+
+
+ An annotation to declare injected arguments by index
+ Zero-based index
+
+
+
+ An annotation to declare injected arguments by renaming them
+ Name of the original argument
+ New name
+
+
+
+ An annotation to declare injected arguments by index and renaming them
+ Zero-based index
+ New name
+
+
+
+ An abstract wrapper around OpCode and their operands. Used by transpilers
+
+
+
+ The opcode
+
+
+
+ The operand
+
+
+
+ All labels defined on this instruction
+
+
+
+ All exception block boundaries defined on this instruction
+
+
+
+ Creates a new CodeInstruction with a given opcode and optional operand
+ The opcode
+ The operand
+
+
+
+ Create a full copy (including labels and exception blocks) of a CodeInstruction
+ The to copy
+
+
+
+ Clones a CodeInstruction and resets its labels and exception blocks
+ A lightweight copy of this code instruction
+
+
+
+ Clones a CodeInstruction, resets labels and exception blocks and sets its opcode
+ The opcode
+ A copy of this CodeInstruction with a new opcode
+
+
+
+ Clones a CodeInstruction, resets labels and exception blocks and sets its operand
+ The operand
+ A copy of this CodeInstruction with a new operand
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The class/type where the method is declared
+ The name of the method (case sensitive)
+ Optional parameters to target a specific overload of the method
+ Optional list of types that define the generic version of the method
+ A code instruction that calls the method matching the arguments
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The target method in the form TypeFullName:MethodName , where the type name matches a form recognized by Type.GetType like Some.Namespace.Type .
+ Optional parameters to target a specific overload of the method
+ Optional list of types that define the generic version of the method
+ A code instruction that calls the method matching the arguments
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The lambda expression using the method
+
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The lambda expression using the method
+
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The lambda expression using the method
+
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The lambda expression using the method
+
+
+
+
+ Creates a CodeInstruction loading a field (LD[S]FLD[A])
+ The class/type where the field is defined
+ The name of the field (case sensitive)
+ Use address of field
+
+
+
+ Creates a CodeInstruction storing to a field (ST[S]FLD)
+ The class/type where the field is defined
+ The name of the field (case sensitive)
+
+
+
+ Returns a string representation of the code instruction
+ A string representation of the code instruction
+
+
+
+ Exception block types
+
+
+
+ The beginning of an exception block
+
+
+
+ The beginning of a catch block
+
+
+
+ The beginning of an except filter block
+
+
+
+ The beginning of a fault block
+
+
+
+ The beginning of a finally block
+
+
+
+ The end of an exception block
+
+
+
+ An exception block
+
+
+
+ Block type
+
+
+
+ Catch type
+
+
+
+ Creates an exception block
+ The
+ The catch type
+
+
+
+ The Harmony instance is the main entry to Harmony. After creating one with an unique identifier, it is used to patch and query the current application domain
+
+
+
+ The unique identifier
+
+
+
+ Set to true before instantiating Harmony to debug Harmony or use an environment variable to set HARMONY_DEBUG to '1' like this: cmd /C "set HARMONY_DEBUG=1 && game.exe"
+ This is for full debugging. To debug only specific patches, use the attribute
+
+
+
+ Creates a new Harmony instance
+ A unique identifier (you choose your own)
+ A Harmony instance
+
+
+
+ Searches the current assembly for Harmony annotations and uses them to create patches
+
+
+
+ Creates a empty patch processor for an original method
+ The original method/constructor
+ A new instance
+
+
+
+ Creates a patch class processor from an annotated class
+ The class/type
+ A new instance
+
+
+
+ Creates a reverse patcher for one of your stub methods
+ The original method/constructor
+ The stand-in stub method as
+ A new instance
+
+
+
+ Searches an assembly for Harmony annotations and uses them to create patches
+ The assembly
+
+
+
+ Creates patches by manually specifying the methods
+ The original method/constructor
+ An optional prefix method wrapped in a object
+ An optional postfix method wrapped in a object
+ An optional transpiler method wrapped in a object
+ An optional finalizer method wrapped in a object
+ The replacement method that was created to patch the original method
+
+
+
+ Patches a foreign method onto a stub method of yours and optionally applies transpilers during the process
+ The original method/constructor you want to duplicate
+ Your stub method as that will become the original. Needs to have the correct signature (either original or whatever your transpilers generates)
+ An optional transpiler as method that will be applied during the process
+ The replacement method that was created to patch the stub method
+
+
+
+ Unpatches methods by patching them with zero patches. Fully unpatching is not supported. Be careful, unpatching is global
+ The optional Harmony ID to restrict unpatching to a specific Harmony instance
+ This method could be static if it wasn't for the fact that unpatching creates a new replacement method that contains your harmony ID
+
+
+
+ Unpatches a method by patching it with zero patches. Fully unpatching is not supported. Be careful, unpatching is global
+ The original method/constructor
+ The
+ The optional Harmony ID to restrict unpatching to a specific Harmony instance
+
+
+
+ Unpatches a method by patching it with zero patches. Fully unpatching is not supported. Be careful, unpatching is global
+ The original method/constructor
+ The patch method as method to remove
+
+
+
+ Test for patches from a specific Harmony ID
+ The Harmony ID
+ True if patches for this ID exist
+
+
+
+ Gets patch information for a given original method
+ The original method/constructor
+ The patch information as
+
+
+
+ Gets the methods this instance has patched
+ An enumeration of original methods/constructors
+
+
+
+ Gets all patched original methods in the appdomain
+ An enumeration of patched original methods/constructors
+
+
+
+ Gets Harmony version for all active Harmony instances
+ [out] The current Harmony version
+ A dictionary containing assembly versions keyed by Harmony IDs
+
+
+
+ Under Mono, HarmonyException wraps IL compile errors with detailed information about the failure
+
+
+
+ Default serialization constructor (not implemented)
+ The info
+ The context
+
+
+
+ Get a list of IL instructions in pairs of offset+code
+ A list of key/value pairs which represent an offset and the code at that offset
+
+
+
+ Get a list of IL instructions without offsets
+ A list of
+
+
+
+ Get the error offset of the errornous IL instruction
+ The offset
+
+
+
+ Get the index of the errornous IL instruction
+ The index into the list of instructions or -1 if not found
+
+
+
+ A wrapper around a method to use it as a patch (for example a Prefix)
+
+
+
+ The original method
+
+
+
+ Class/type declaring this patch
+
+
+
+ Patch method name
+
+
+
+ Optional patch
+
+
+
+ Array of argument types of the patch method
+
+
+
+ of the patch
+
+
+
+ Install this patch before patches with these Harmony IDs
+
+
+
+ Install this patch after patches with these Harmony IDs
+
+
+
+ Reverse patch type, see
+
+
+
+ Create debug output for this patch
+
+
+
+ Whether to use (true ) or (false ) mechanics
+ for -attributed delegate
+
+
+
+ Default constructor
+
+
+
+ Creates a patch from a given method
+ The original method
+
+
+
+ Creates a patch from a given method
+ The original method
+ The patch
+ A list of harmony IDs that should come after this patch
+ A list of harmony IDs that should come before this patch
+ Set to true to generate debug output
+
+
+
+ Creates a patch from a given method
+ The patch class/type
+ The patch method name
+ The optional argument types of the patch method (for overloaded methods)
+
+
+
+ Gets the names of all internal patch info fields
+ A list of field names
+
+
+
+ Merges annotations
+ The list of to merge
+ The merged
+
+
+
+ Returns a string that represents the annotation
+ A string representation
+
+
+
+ Annotation extensions
+
+
+
+ Copies annotation information
+ The source
+ The destination
+
+
+
+ Clones an annotation
+ The to clone
+ A copied
+
+
+
+ Merges annotations
+ The master
+ The detail
+ A new, merged
+
+
+
+ Gets all annotations on a class/type
+ The class/type
+ A list of all
+
+
+
+ Gets merged annotations on a class/type
+ The class/type
+ The merged
+
+
+
+ Gets all annotations on a method
+ The method/constructor
+ A list of
+
+
+
+ Gets merged annotations on a method
+ The method/constructor
+ The merged
+
+
+
+
+ A mutable representation of an inline signature, similar to Mono.Cecil's CallSite.
+ Used by the calli instruction, can be used by transpilers
+
+
+
+
+ See
+
+
+
+ See
+
+
+
+ See
+
+
+
+ The list of all parameter types or function pointer signatures received by the call site
+
+
+
+ The return type or function pointer signature returned by the call site
+
+
+
+ Returns a string representation of the inline signature
+ A string representation of the inline signature
+
+
+
+
+ A mutable representation of a parameter type with an attached type modifier,
+ similar to Mono.Cecil's OptionalModifierType / RequiredModifierType and C#'s modopt / modreq
+
+
+
+
+ Whether this is a modopt (optional modifier type) or a modreq (required modifier type)
+
+
+
+ The modifier type attached to the parameter type
+
+
+
+ The modified parameter type
+
+
+
+ Returns a string representation of the modifier type
+ A string representation of the modifier type
+
+
+
+ Patch serialization
+
+
+
+ Control the binding of a serialized object to a type
+ Specifies the assembly name of the serialized object
+ Specifies the type name of the serialized object
+ The type of the object the formatter creates a new instance of
+
+
+
+ Serializes a patch info
+ The
+ The serialized data
+
+
+
+ Deserialize a patch info
+ The serialized data
+ A
+
+
+
+ Compare function to sort patch priorities
+ The patch
+ Zero-based index
+ The priority
+ A standard sort integer (-1, 0, 1)
+
+
+
+ Serializable patch information
+
+
+
+ Prefixes as an array of
+
+
+
+ Postfixes as an array of
+
+
+
+ Transpilers as an array of
+
+
+
+ Finalizers as an array of
+
+
+
+ Default constructor
+
+
+
+ Returns if any of the patches wants debugging turned on
+
+
+
+ Adds a prefix
+
+ The prefix method
+ An owner (Harmony ID)
+ The priority, see
+ A list of Harmony IDs for prefixes that should run after this prefix
+ A list of Harmony IDs for prefixes that should run before this prefix
+ A flag that will log the replacement method via every time this prefix is used to build the replacement, even in the future
+
+
+
+ Removes prefixes
+ The owner of the prefix or * for any prefix
+
+
+
+ Adds a postfix
+ The postfix method
+ An owner (Harmony ID)
+ The priority, see
+ A list of Harmony IDs for postfixes that should run after this postfix
+ A list of Harmony IDs for postfixes that should run before this postfix
+ A flag that will log the replacement method via every time this postfix is used to build the replacement, even in the future
+
+
+
+ Removes postfixes
+ The owner of the postfix or * for any postfix
+
+
+
+ Adds a transpiler
+ The transpiler method
+ An owner (Harmony ID)
+ The priority, see
+ A list of Harmony IDs for transpilers that should run after this transpiler
+ A list of Harmony IDs for transpilers that should run before this transpiler
+ A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future
+
+
+
+ Removes transpilers
+ The owner of the transpiler or * for any transpiler
+
+
+
+ Adds a finalizer
+ The finalizer method
+ An owner (Harmony ID)
+ The priority, see
+ A list of Harmony IDs for finalizers that should run after this finalizer
+ A list of Harmony IDs for finalizers that should run before this finalizer
+ A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future
+
+
+
+ Removes finalizers
+ The owner of the finalizer or * for any finalizer
+
+
+
+ Removes a patch using its method
+ The method of the patch to remove
+
+
+
+ A serializable patch
+
+
+
+ Zero-based index
+
+
+
+ The owner (Harmony ID)
+
+
+
+ The priority, see
+
+
+
+ Keep this patch before the patches indicated in the list of Harmony IDs
+
+
+
+ Keep this patch after the patches indicated in the list of Harmony IDs
+
+
+
+ A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future
+
+
+
+ The method of the static patch method
+
+
+
+ Creates a patch
+ The method of the patch
+ Zero-based index
+ An owner (Harmony ID)
+ The priority, see
+ A list of Harmony IDs for patches that should run after this patch
+ A list of Harmony IDs for patches that should run before this patch
+ A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future
+
+
+
+ Get the patch method or a DynamicMethod if original patch method is a patch factory
+ The original method/constructor
+ The method of the patch
+
+
+
+ Determines whether patches are equal
+ The other patch
+ true if equal
+
+
+
+ Determines how patches sort
+ The other patch
+ integer to define sort order (-1, 0, 1)
+
+
+
+ Hash function
+ A hash code
+
+
+
+ A PatchClassProcessor used to turn on a class/type into patches
+
+
+
+ Creates a patch class processor by pointing out a class. Similar to PatchAll() but without searching through all classes.
+ The Harmony instance
+ The class to process (need to have at least a [HarmonyPatch] attribute)
+
+
+
+ Applies the patches
+ A list of all created replacement methods or null if patch class is not annotated
+
+
+
+ A group of patches
+
+
+
+ A collection of prefix
+
+
+
+ A collection of postfix
+
+
+
+ A collection of transpiler
+
+
+
+ A collection of finalizer
+
+
+
+ Gets all owners (Harmony IDs) or all known patches
+ The patch owners
+
+
+
+ Creates a group of patches
+ An array of prefixes as
+ An array of postfixes as
+ An array of transpileres as
+ An array of finalizeres as
+
+
+
+ A PatchProcessor handles patches on a method/constructor
+
+
+
+ Creates an empty patch processor
+ The Harmony instance
+ The original method/constructor
+
+
+
+ Adds a prefix
+ The prefix as a
+ A for chaining calls
+
+
+
+ Adds a prefix
+ The prefix method
+ A for chaining calls
+
+
+
+ Adds a postfix
+ The postfix as a
+ A for chaining calls
+
+
+
+ Adds a postfix
+ The postfix method
+ A for chaining calls
+
+
+
+ Adds a transpiler
+ The transpiler as a
+ A for chaining calls
+
+
+
+ Adds a transpiler
+ The transpiler method
+ A for chaining calls
+
+
+
+ Adds a finalizer
+ The finalizer as a
+ A for chaining calls
+
+
+
+ Adds a finalizer
+ The finalizer method
+ A for chaining calls
+
+
+
+ Gets all patched original methods in the appdomain
+ An enumeration of patched method/constructor
+
+
+
+ Applies all registered patches
+ The generated replacement method
+
+
+
+ Unpatches patches of a given type and/or Harmony ID
+ The patch type
+ Harmony ID or * for any
+ A for chaining calls
+
+
+
+ Unpatches a specific patch
+ The method of the patch
+ A for chaining calls
+
+
+
+ Gets patch information on an original
+ The original method/constructor
+ The patch information as
+
+
+
+ Sort patch methods by their priority rules
+ The original method
+ Patches to sort
+ The sorted patch methods
+
+
+
+ Gets Harmony version for all active Harmony instances
+ [out] The current Harmony version
+ A dictionary containing assembly version keyed by Harmony ID
+
+
+
+ Creates a new empty generator to use when reading method bodies
+ A new
+
+
+
+ Creates a new generator matching the method/constructor to use when reading method bodies
+ The original method/constructor to copy method information from
+ A new
+
+
+
+ Returns the methods unmodified list of code instructions
+ The original method/constructor
+ Optionally an existing generator that will be used to create all local variables and labels contained in the result (if not specified, an internal generator is used)
+ A list containing all the original
+
+
+
+ Returns the methods unmodified list of code instructions
+ The original method/constructor
+ A new generator that now contains all local variables and labels contained in the result
+ A list containing all the original
+
+
+
+ Returns the methods current list of code instructions after all existing transpilers have been applied
+ The original method/constructor
+ Apply only the first count of transpilers
+ Optionally an existing generator that will be used to create all local variables and labels contained in the result (if not specified, an internal generator is used)
+ A list of
+
+
+
+ Returns the methods current list of code instructions after all existing transpilers have been applied
+ The original method/constructor
+ A new generator that now contains all local variables and labels contained in the result
+ Apply only the first count of transpilers
+ A list of
+
+
+
+ A low level way to read the body of a method. Used for quick searching in methods
+ The original method
+ All instructions as opcode/operand pairs
+
+
+
+ A low level way to read the body of a method. Used for quick searching in methods
+ The original method
+ An existing generator that will be used to create all local variables and labels contained in the result
+ All instructions as opcode/operand pairs
+
+
+
+ A patch priority
+
+
+
+ Patch last
+
+
+
+ Patch with very low priority
+
+
+
+ Patch with low priority
+
+
+
+ Patch with lower than normal priority
+
+
+
+ Patch with normal priority
+
+
+
+ Patch with higher than normal priority
+
+
+
+ Patch with high priority
+
+
+
+ Patch with very high priority
+
+
+
+ Patch first
+
+
+
+ A reverse patcher
+
+
+
+ Creates a reverse patcher
+ The Harmony instance
+ The original method/constructor
+ Your stand-in stub method as
+
+
+
+ Applies the patch
+ The type of patch, see
+ The generated replacement method
+
+
+
+ A collection of commonly used transpilers
+
+
+
+ A transpiler that replaces all occurrences of a given method with another one
+ The enumeration of to act on
+ Method or constructor to search for
+ Method or constructor to replace with
+ Modified enumeration of
+
+
+
+ A transpiler that alters instructions that match a predicate by calling an action
+ The enumeration of to act on
+ A predicate selecting the instructions to change
+ An action to apply to matching instructions
+ Modified enumeration of
+
+
+
+ A transpiler that logs a text at the beginning of the method
+ The instructions to act on
+ The log text
+ Modified enumeration of
+
+
+
+ A helper class for reflection related functions
+
+
+
+ Shortcut for to simplify the use of reflections and make it work for any access level
+
+
+
+ Shortcut for to simplify the use of reflections and make it work for any access level but only within the current type
+
+
+
+ Gets a type by name. Prefers a full name with namespace but falls back to the first type matching the name otherwise
+ The name
+ A type or null if not found
+
+
+
+ Gets all successfully loaded types from a given assembly
+ The assembly
+ An array of types
+
+ This calls and returns , while catching any thrown .
+ If such an exception is thrown, returns the successfully loaded types ( ,
+ filtered for non-null values).
+
+
+
+
+ Applies a function going up the type hierarchy and stops at the first non null result
+ Result type of func()
+ The class/type to start with
+ The evaluation function returning T
+ Returns the first non null result or default(T) when reaching the top level type object
+
+
+
+ Applies a function going into inner types and stops at the first non null result
+ Generic type parameter
+ The class/type to start with
+ The evaluation function returning T
+ Returns the first non null result or null with no match
+
+
+
+ Gets the reflection information for a directly declared field
+ The class/type where the field is defined
+ The name of the field
+ A field or null when type/name is null or when the field cannot be found
+
+
+
+ Gets the reflection information for a field by searching the type and all its super types
+ The class/type where the field is defined
+ The name of the field (case sensitive)
+ A field or null when type/name is null or when the field cannot be found
+
+
+
+ Gets the reflection information for a field
+ The class/type where the field is declared
+ The zero-based index of the field inside the class definition
+ A field or null when type is null or when the field cannot be found
+
+
+
+ Gets the reflection information for a directly declared property
+ The class/type where the property is declared
+ The name of the property (case sensitive)
+ A property or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for the getter method of a directly declared property
+ The class/type where the property is declared
+ The name of the property (case sensitive)
+ A method or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for the setter method of a directly declared property
+ The class/type where the property is declared
+ The name of the property (case sensitive)
+ A method or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for a property by searching the type and all its super types
+ The class/type
+ The name
+ A property or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for the getter method of a property by searching the type and all its super types
+ The class/type
+ The name
+ A method or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for the setter method of a property by searching the type and all its super types
+ The class/type
+ The name
+ A method or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for a directly declared method
+ The class/type where the method is declared
+ The name of the method (case sensitive)
+ Optional parameters to target a specific overload of the method
+ Optional list of types that define the generic version of the method
+ A method or null when type/name is null or when the method cannot be found
+
+
+
+ Gets the reflection information for a method by searching the type and all its super types
+ The class/type where the method is declared
+ The name of the method (case sensitive)
+ Optional parameters to target a specific overload of the method
+ Optional list of types that define the generic version of the method
+ A method or null when type/name is null or when the method cannot be found
+
+
+
+ Gets the reflection information for a method by searching the type and all its super types
+ The target method in the form TypeFullName:MethodName , where the type name matches a form recognized by Type.GetType like Some.Namespace.Type .
+ Optional parameters to target a specific overload of the method
+ Optional list of types that define the generic version of the method
+ A method or null when type/name is null or when the method cannot be found
+
+
+
+ Gets the names of all method that are declared in a type
+ The declaring class/type
+ A list of method names
+
+
+
+ Gets the names of all method that are declared in the type of the instance
+ An instance of the type to search in
+ A list of method names
+
+
+
+ Gets the names of all fields that are declared in a type
+ The declaring class/type
+ A list of field names
+
+
+
+ Gets the names of all fields that are declared in the type of the instance
+ An instance of the type to search in
+ A list of field names
+
+
+
+ Gets the names of all properties that are declared in a type
+ The declaring class/type
+ A list of property names
+
+
+
+ Gets the names of all properties that are declared in the type of the instance
+ An instance of the type to search in
+ A list of property names
+
+
+
+ Gets the type of any class member of
+ A member
+ The class/type of this member
+
+
+
+ Test if a class member is actually an concrete implementation
+ A member
+ True if the member is a declared
+
+
+
+ Gets the real implementation of a class member
+ A member
+ The member itself if its declared. Otherwise the member that is actually implemented in some base type
+
+
+
+ Gets the reflection information for a directly declared constructor
+ The class/type where the constructor is declared
+ Optional parameters to target a specific overload of the constructor
+ Optional parameters to only consider static constructors
+ A constructor info or null when type is null or when the constructor cannot be found
+
+
+
+ Gets the reflection information for a constructor by searching the type and all its super types
+ The class/type where the constructor is declared
+ Optional parameters to target a specific overload of the method
+ Optional parameters to only consider static constructors
+ A constructor info or null when type is null or when the method cannot be found
+
+
+
+ Gets reflection information for all declared constructors
+ The class/type where the constructors are declared
+ Optional parameters to only consider static constructors
+ A list of constructor infos
+
+
+
+ Gets reflection information for all declared methods
+ The class/type where the methods are declared
+ A list of methods
+
+
+
+ Gets reflection information for all declared properties
+ The class/type where the properties are declared
+ A list of properties
+
+
+
+ Gets reflection information for all declared fields
+ The class/type where the fields are declared
+ A list of fields
+
+
+
+ Gets the return type of a method or constructor
+ The method/constructor
+ The return type
+
+
+
+ Given a type, returns the first inner type matching a recursive search by name
+ The class/type to start searching at
+ The name of the inner type (case sensitive)
+ The inner type or null if type/name is null or if a type with that name cannot be found
+
+
+
+ Given a type, returns the first inner type matching a recursive search with a predicate
+ The class/type to start searching at
+ The predicate to search with
+ The inner type or null if type/predicate is null or if a type with that name cannot be found
+
+
+
+ Given a type, returns the first method matching a predicate
+ The class/type to start searching at
+ The predicate to search with
+ The method or null if type/predicate is null or if a type with that name cannot be found
+
+
+
+ Given a type, returns the first constructor matching a predicate
+ The class/type to start searching at
+ The predicate to search with
+ The constructor info or null if type/predicate is null or if a type with that name cannot be found
+
+
+
+ Given a type, returns the first property matching a predicate
+ The class/type to start searching at
+ The predicate to search with
+ The property or null if type/predicate is null or if a type with that name cannot be found
+
+
+
+ Returns an array containing the type of each object in the given array
+ An array of objects
+ An array of types or an empty array if parameters is null (if an object is null, the type for it will be object)
+
+
+
+ Creates an array of input parameters for a given method and a given set of potential inputs
+ The method/constructor you are planing to call
+ The possible input parameters in any order
+ An object array matching the method signature
+
+
+
+ A read/writable reference to an instance field
+ The class the field is defined in or "object" if type cannot be accessed at compile time
+ The type of the field
+ The runtime instance to access the field (leave empty for static fields)
+ An readable/assignable object representing the field
+
+
+
+ Creates an instance field reference
+ The class the field is defined in
+ The type of the field
+ The name of the field
+ A read and writable field reference delegate
+
+
+
+ Creates an instance field reference for a specific instance
+ The class the field is defined in
+ The type of the field
+ The instance
+ The name of the field
+ An readable/assignable object representing the field
+
+
+
+ Creates an instance field reference delegate for a private type
+ The type of the field
+ The class/type
+ The name of the field
+ A read and writable delegate
+
+
+
+ Creates an instance field reference delegate for a fieldinfo
+ The class the field is defined in or "object" if type cannot be accessed at compile time
+ The type of the field
+ The field of the field
+ A read and writable delegate
+
+
+
+ Creates a static field reference
+ The class the field is defined in or "object" if type cannot be accessed at compile time
+ The type of the field
+ The name of the field
+ An readable/assignable object representing the static field
+
+
+
+ Creates a static field reference
+ The type of the field
+ The class/type
+ The name of the field
+ An readable/assignable object representing the static field
+
+
+
+ Creates a static field reference
+ The class the field is defined in or "object" if type cannot be accessed at compile time
+ The type of the field
+ The field
+ An readable/assignable object representing the static field
+
+
+
+ A read/writable reference delegate to a static field
+ The type of the field
+ An readable/assignable object representing the static field
+
+
+
+ Creates a static field reference delegate
+ The type of the field
+ The field
+ A read and writable delegate
+
+
+
+ Creates a delegate to a given method
+ The delegate Type
+ The method to create a delegate from.
+
+ Only applies for instance methods. If null (default), returned delegate is an open (a.k.a. unbound) instance delegate
+ where an instance is supplied as the first argument to the delegate invocation; else, delegate is a closed (a.k.a. bound)
+ instance delegate where the delegate invocation always applies to the given .
+
+
+ Only applies for instance methods. If true (default) and is virtual, invocation of the delegate
+ calls the instance method virtually (the instance type's most-derived/overriden implementation of the method is called);
+ else, invocation of the delegate calls the exact specified (this is useful for calling base class methods)
+ Note: if false and is an interface method, an ArgumentException is thrown.
+
+ A delegate of given to given
+
+
+ Delegate invocation is more performant and more convenient to use than
+ at a one-time setup cost.
+
+
+ Works for both type of static and instance methods, both open and closed (a.k.a. unbound and bound) instance methods,
+ and both class and struct methods.
+
+
+
+
+
+ Creates a delegate for a given delegate definition, attributed with [ ]
+ The delegate Type, attributed with [ ]
+
+ Only applies for instance methods. If null (default), returned delegate is an open (a.k.a. unbound) instance delegate
+ where an instance is supplied as the first argument to the delegate invocation; else, delegate is a closed (a.k.a. bound)
+ instance delegate where the delegate invocation always applies to the given .
+
+ A delegate of given to the method specified via [ ]
+ attributes on
+
+ This calls with the method and virtualCall arguments
+ determined from the [ ] attributes on ,
+ and the given (for closed instance delegates).
+
+
+
+
+ Returns who called the current method
+ The calling method/constructor (excluding the caller)
+
+
+
+ Rethrows an exception while preserving its stack trace (throw statement typically clobbers existing stack traces)
+ The exception to rethrow
+
+
+
+ True if the current runtime is based on Mono, false otherwise (.NET)
+
+
+
+ True if the current runtime is .NET Framework, false otherwise (.NET Core or Mono, although latter isn't guaranteed)
+
+
+
+ True if the current runtime is .NET Core, false otherwise (Mono or .NET Framework)
+
+
+
+ Throws a missing member runtime exception
+ The type that is involved
+ A list of names
+
+
+
+ Gets default value for a specific type
+ The class/type
+ The default value
+
+
+
+ Creates an (possibly uninitialized) instance of a given type
+ The class/type
+ The new instance
+
+
+
+ Makes a deep copy of any object
+ The type of the instance that should be created
+ The original object
+ A copy of the original object but of type T
+
+
+
+ Makes a deep copy of any object
+ The type of the instance that should be created
+ The original object
+ [out] The copy of the original object
+ Optional value transformation function (taking a field name and src/dst instances)
+ The optional path root to start with
+
+
+
+ Makes a deep copy of any object
+ The original object
+ The type of the instance that should be created
+ Optional value transformation function (taking a field name and src/dst instances)
+ The optional path root to start with
+ The copy of the original object
+
+
+
+ Tests if a type is a struct
+ The type
+ True if the type is a struct
+
+
+
+ Tests if a type is a class
+ The type
+ True if the type is a class
+
+
+
+ Tests if a type is a value type
+ The type
+ True if the type is a value type
+
+
+
+ Tests if a type is an integer type
+ The type
+ True if the type represents some integer
+
+
+
+ Tests if a type is a floating point type
+ The type
+ True if the type represents some floating point
+
+
+
+ Tests if a type is a numerical type
+ The type
+ True if the type represents some number
+
+
+
+ Tests if a type is void
+ The type
+ True if the type is void
+
+
+
+ Test whether an instance is of a nullable type
+ Type of instance
+ An instance to test
+ True if instance is of nullable type, false if not
+
+
+
+ Tests whether a type or member is static, as defined in C#
+ The type or member
+ True if the type or member is static
+
+
+
+ Tests whether a type is static, as defined in C#
+ The type
+ True if the type is static
+
+
+
+ Tests whether a property is static, as defined in C#
+ The property
+ True if the property is static
+
+
+
+ Tests whether an event is static, as defined in C#
+ The event
+ True if the event is static
+
+
+
+ Calculates a combined hash code for an enumeration of objects
+ The objects
+ The hash code
+
+
+
+ General extensions for common cases
+
+
+
+ Joins an enumeration with a value converter and a delimiter to a string
+ The inner type of the enumeration
+ The enumeration
+ An optional value converter (from T to string)
+ An optional delimiter
+ The values joined into a string
+
+
+
+ Converts an array of types (for example methods arguments) into a human readable form
+ The array of types
+ A human readable description including brackets
+
+
+
+ A full description of a type
+ The type
+ A human readable description
+
+
+
+ A a full description of a method or a constructor without assembly details but with generics
+ The method/constructor
+ A human readable description
+
+
+
+ A helper converting parameter infos to types
+ The array of parameter infos
+ An array of types
+
+
+
+ A helper to access a value via key from a dictionary
+ The key type
+ The value type
+ The dictionary
+ The key
+ The value for the key or the default value (of T) if that key does not exist
+
+
+
+ A helper to access a value via key from a dictionary with extra casting
+ The value type
+ The dictionary
+ The key
+ The value for the key or the default value (of T) if that key does not exist or cannot be cast to T
+
+
+
+ Escapes Unicode and ASCII non printable characters
+ The string to convert
+ The string to convert
+ A string literal surrounded by
+
+
+
+ Extensions for
+
+
+
+ Shortcut for testing whether the operand is equal to a non-null value
+ The
+ The value
+ True if the operand has the same type and is equal to the value
+
+
+
+ Shortcut for testing whether the operand is equal to a non-null value
+ The
+ The value
+ True if the operand is equal to the value
+ This is an optimized version of for
+
+
+
+ Shortcut for code.opcode == opcode && code.OperandIs(operand)
+ The
+ The
+ The operand value
+ True if the opcode is equal to the given opcode and the operand has the same type and is equal to the given operand
+
+
+
+ Shortcut for code.opcode == opcode && code.OperandIs(operand)
+ The
+ The
+ The operand value
+ True if the opcode is equal to the given opcode and the operand is equal to the given operand
+ This is an optimized version of for
+
+
+
+ Tests for any form of Ldarg*
+ The
+ The (optional) index
+ True if it matches one of the variations
+
+
+
+ Tests for Ldarga/Ldarga_S
+ The
+ The (optional) index
+ True if it matches one of the variations
+
+
+
+ Tests for Starg/Starg_S
+ The
+ The (optional) index
+ True if it matches one of the variations
+
+
+
+ Tests for any form of Ldloc*
+ The
+ The optional local variable
+ True if it matches one of the variations
+
+
+
+ Tests for any form of Stloc*
+ The
+ The optional local variable
+ True if it matches one of the variations
+
+
+
+ Tests if the code instruction branches
+ The
+ The label if the instruction is a branch operation or if not
+ True if the instruction branches
+
+
+
+ Tests if the code instruction calls the method/constructor
+ The
+ The method
+ True if the instruction calls the method or constructor
+
+
+
+ Tests if the code instruction loads a constant
+ The
+ True if the instruction loads a constant
+
+
+
+ Tests if the code instruction loads an integer constant
+ The
+ The integer constant
+ True if the instruction loads the constant
+
+
+
+ Tests if the code instruction loads a floating point constant
+ The
+ The floating point constant
+ True if the instruction loads the constant
+
+
+
+ Tests if the code instruction loads an enum constant
+ The
+ The enum
+ True if the instruction loads the constant
+
+
+
+ Tests if the code instruction loads a field
+ The
+ The field
+ Set to true if the address of the field is loaded
+ True if the instruction loads the field
+
+
+
+ Tests if the code instruction stores a field
+ The
+ The field
+ True if the instruction stores this field
+
+
+
+ Adds labels to the code instruction and return it
+ The
+ One or several to add
+ The same code instruction
+
+
+ Adds labels to the code instruction and return it
+ The
+ An enumeration of
+ The same code instruction
+
+
+ Extracts all labels from the code instruction and returns them
+ The
+ A list of
+
+
+ Moves all labels from the code instruction to a different one
+ The to move the labels from
+ The to move the labels to
+ The code instruction labels were moved from (now empty)
+
+
+ Moves all labels from a different code instruction to the current one
+ The to move the labels from
+ The to move the labels to
+ The code instruction that received the labels
+
+
+ Adds ExceptionBlocks to the code instruction and return it
+ The
+ One or several to add
+ The same code instruction
+
+
+ Adds ExceptionBlocks to the code instruction and return it
+ The
+ An enumeration of
+ The same code instruction
+
+
+ Extracts all ExceptionBlocks from the code instruction and returns them
+ The
+ A list of
+
+
+ Moves all ExceptionBlocks from the code instruction to a different one
+ The to move the ExceptionBlocks from
+ The to move the ExceptionBlocks to
+ The code instruction blocks were moved from (now empty)
+
+
+ Moves all ExceptionBlocks from a different code instruction to the current one
+ The to move the ExceptionBlocks from
+ The to move the ExceptionBlocks to
+ The code instruction that received the blocks
+
+
+ General extensions for collections
+
+
+
+ A simple way to execute code for every element in a collection
+ The inner type of the collection
+ The collection
+ The action to execute
+
+
+
+ A simple way to execute code for elements in a collection matching a condition
+ The inner type of the collection
+ The collection
+ The predicate
+ The action to execute
+
+
+
+ A helper to add an item to a collection
+ The inner type of the collection
+ The collection
+ The item to add
+ The collection containing the item
+
+
+
+ A helper to add an item to an array
+ The inner type of the collection
+ The array
+ The item to add
+ The array containing the item
+
+
+
+ A helper to add items to an array
+ The inner type of the collection
+ The array
+ The items to add
+ The array containing the items
+
+
+
+ General extensions for collections
+
+
+
+ Tests a class member if it has an IL method body (external methods for example don't have a body)
+ The member to test
+ Returns true if the member has an IL body or false if not
+
+
+ A file log for debugging
+
+
+
+ Full pathname of the log file, defaults to a file called harmony.log.txt on your Desktop
+
+
+
+ The indent character. The default is tab
+
+
+
+ The current indent level
+
+
+
+ Changes the indentation level
+ The value to add to the indentation level
+
+
+
+ Log a string in a buffered way. Use this method only if you are sure that FlushBuffer will be called
+ or else logging information is incomplete in case of a crash
+ The string to log
+
+
+
+ Logs a list of string in a buffered way. Use this method only if you are sure that FlushBuffer will be called
+ or else logging information is incomplete in case of a crash
+ A list of strings to log (they will not be re-indented)
+
+
+
+ Returns the log buffer and optionally empties it
+ True to empty the buffer
+ The buffer.
+
+
+
+ Replaces the buffer with new lines
+ The lines to store
+
+
+
+ Flushes the log buffer to disk (use in combination with LogBuffered)
+
+
+
+ Log a string directly to disk. Slower method that prevents missing information in case of a crash
+ The string to log.
+
+
+
+ Resets and deletes the log
+
+
+
+ Logs some bytes as hex values
+ The pointer to some memory
+ The length of bytes to log
+
+
+
+ A helper class to retrieve reflection info for non-private methods
+
+
+
+ Given a lambda expression that calls a method, returns the method info
+ The lambda expression using the method
+ The method in the lambda expression
+
+
+
+ Given a lambda expression that calls a method, returns the method info
+ The generic type
+ The lambda expression using the method
+ The method in the lambda expression
+
+
+
+ Given a lambda expression that calls a method, returns the method info
+ The generic type
+ The generic result type
+ The lambda expression using the method
+ The method in the lambda expression
+
+
+
+ Given a lambda expression that calls a method, returns the method info
+ The lambda expression using the method
+ The method in the lambda expression
+
+
+
+ A reflection helper to read and write private elements
+ The result type defined by GetValue()
+
+
+
+ Creates a traverse instance from an existing instance
+ The existing instance
+
+
+
+ Gets/Sets the current value
+ The value to read or write
+
+
+
+ A reflection helper to read and write private elements
+
+
+
+ Creates a new traverse instance from a class/type
+ The class/type
+ A instance
+
+
+
+ Creates a new traverse instance from a class T
+ The class
+ A instance
+
+
+
+ Creates a new traverse instance from an instance
+ The object
+ A instance
+
+
+
+ Creates a new traverse instance from a named type
+ The type name, for format see
+ A instance
+
+
+
+ Creates a new and empty traverse instance
+
+
+
+ Creates a new traverse instance from a class/type
+ The class/type
+
+
+
+ Creates a new traverse instance from an instance
+ The object
+
+
+
+ Gets the current value
+ The value
+
+
+
+ Gets the current value
+ The type of the value
+ The value
+
+
+
+ Invokes the current method with arguments and returns the result
+ The method arguments
+ The value returned by the method
+
+
+
+ Invokes the current method with arguments and returns the result
+ The type of the value
+ The method arguments
+ The value returned by the method
+
+
+
+ Sets a value of the current field or property
+ The value
+ The same traverse instance
+
+
+
+ Gets the type of the current field or property
+ The type
+
+
+
+ Moves the current traverse instance to a inner type
+ The type name
+ A traverse instance
+
+
+
+ Moves the current traverse instance to a field
+ The type name
+ A traverse instance
+
+
+
+ Moves the current traverse instance to a field
+ The type of the field
+ The type name
+ A traverse instance
+
+
+
+ Gets all fields of the current type
+ A list of field names
+
+
+
+ Moves the current traverse instance to a property
+ The type name
+ Optional property index
+ A traverse instance
+
+
+
+ Moves the current traverse instance to a field
+ The type of the property
+ The type name
+ Optional property index
+ A traverse instance
+
+
+
+ Gets all properties of the current type
+ A list of property names
+
+
+
+ Moves the current traverse instance to a method
+ The name of the method
+ The arguments defining the argument types of the method overload
+ A traverse instance
+
+
+
+ Moves the current traverse instance to a method
+ The name of the method
+ The argument types of the method
+ The arguments for the method
+ A traverse instance
+
+
+
+ Gets all methods of the current type
+ A list of method names
+
+
+
+ Checks if the current traverse instance is for a field
+ True if its a field
+
+
+
+ Checks if the current traverse instance is for a property
+ True if its a property
+
+
+
+ Checks if the current traverse instance is for a method
+ True if its a method
+
+
+
+ Checks if the current traverse instance is for a type
+ True if its a type
+
+
+
+ Iterates over all fields of the current type and executes a traverse action
+ Original object
+ The action receiving a instance for each field
+
+
+
+ Iterates over all fields of the current type and executes a traverse action
+ Original object
+ Target object
+ The action receiving a pair of instances for each field pair
+
+
+
+ Iterates over all fields of the current type and executes a traverse action
+ Original object
+ Target object
+ The action receiving a dot path representing the field pair and the instances
+
+
+
+ Iterates over all properties of the current type and executes a traverse action
+ Original object
+ The action receiving a instance for each property
+
+
+
+ Iterates over all properties of the current type and executes a traverse action
+ Original object
+ Target object
+ The action receiving a pair of instances for each property pair
+
+
+
+ Iterates over all properties of the current type and executes a traverse action
+ Original object
+ Target object
+ The action receiving a dot path representing the property pair and the instances
+
+
+
+ A default field action that copies fields to fields
+
+
+
+ Returns a string that represents the current traverse
+ A string representation
+
+
+
+
diff --git a/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/netcoreapp3.0/0Harmony.dll b/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/netcoreapp3.0/0Harmony.dll
new file mode 100644
index 0000000..5ba0a5e
Binary files /dev/null and b/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/netcoreapp3.0/0Harmony.dll differ
diff --git a/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/netcoreapp3.0/0Harmony.xml b/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/netcoreapp3.0/0Harmony.xml
new file mode 100644
index 0000000..6bcea2e
--- /dev/null
+++ b/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/netcoreapp3.0/0Harmony.xml
@@ -0,0 +1,2900 @@
+
+
+
+ 0Harmony
+
+
+
+ A factory to create delegate types
+
+
+ Default constructor
+
+
+ Creates a delegate type for a method
+ The method
+ The new delegate type
+
+
+
+ A getter delegate type
+ Type that getter gets field/property value from
+ Type of the value that getter gets
+ The instance get getter uses
+ An delegate
+
+
+
+ A setter delegate type
+ Type that setter sets field/property value for
+ Type of the value that setter sets
+ The instance the setter uses
+ The value the setter uses
+ An delegate
+
+
+
+ A constructor delegate type
+ Type that constructor creates
+ An delegate
+
+
+
+ A helper class for fast access to getters and setters
+
+
+ Creates an instantiation delegate
+ Type that constructor creates
+ The new instantiation delegate
+
+
+
+ Creates an getter delegate for a property
+ Type that getter reads property from
+ Type of the property that gets accessed
+ The property
+ The new getter delegate
+
+
+
+ Creates an getter delegate for a field
+ Type that getter reads field from
+ Type of the field that gets accessed
+ The field
+ The new getter delegate
+
+
+
+ Creates an getter delegate for a field (with a list of possible field names)
+ Type that getter reads field/property from
+ Type of the field/property that gets accessed
+ A list of possible field names
+ The new getter delegate
+
+
+
+ Creates an setter delegate
+ Type that setter assigns property value to
+ Type of the property that gets assigned
+ The property
+ The new setter delegate
+
+
+
+ Creates an setter delegate for a field
+ Type that setter assigns field value to
+ Type of the field that gets assigned
+ The field
+ The new getter delegate
+
+
+
+ A delegate to invoke a method
+ The instance
+ The method parameters
+ The method result
+
+
+ A helper class to invoke method with delegates
+
+
+ Creates a fast invocation handler from a method
+ The method to invoke
+ Controls if boxed value object is accessed/updated directly
+ The
+
+
+ The directBoxValueAccess option controls how value types passed by reference (e.g. ref int, out my_struct) are handled in the arguments array
+ passed to the fast invocation handler.
+ Since the arguments array is an object array, any value types contained within it are actually references to a boxed value object.
+ Like any other object, there can be other references to such boxed value objects, other than the reference within the arguments array.
+ For example,
+
+ var val = 5;
+ var box = (object)val;
+ var arr = new object[] { box };
+ handler(arr); // for a method with parameter signature: ref/out/in int
+
+
+
+
+ If directBoxValueAccess is true , the boxed value object is accessed (and potentially updated) directly when the handler is called,
+ such that all references to the boxed object reflect the potentially updated value.
+ In the above example, if the method associated with the handler updates the passed (boxed) value to 10, both box and arr[0]
+ now reflect the value 10. Note that the original val is not updated, since boxing always copies the value into the new boxed value object.
+
+
+ If directBoxValueAccess is false (default), the boxed value object in the arguments array is replaced with a "reboxed" value object,
+ such that potential updates to the value are reflected only in the arguments array.
+ In the above example, if the method associated with the handler updates the passed (boxed) value to 10, only arr[0] now reflects the value 10.
+
+
+
+
+ A low level memory helper
+
+
+ Mark method for no inlining (currently only works on Mono)
+ The method/constructor to change
+
+
+ Detours a method
+ The original method/constructor
+ The replacement method/constructor
+ An error string
+
+
+
+ Writes a jump to memory
+ The memory address
+ Jump destination
+ An error string
+
+
+
+ Gets the start of a method in memory
+ The method/constructor
+ [out] Details of the exception
+ The method start address
+
+
+
+ special parameter names that can be used in prefix and postfix methods
+
+
+ Patch function helpers
+
+
+ Adds a prefix
+ The patch info
+ The owner (Harmony ID)
+ The annotation info
+
+
+
+ Removes a prefix
+ The patch info
+ The owner (Harmony ID)
+
+
+
+ Adds a postfix
+ The patch info
+ The owner (Harmony ID)
+ The annotation info
+
+
+
+ Removes a postfix
+ The patch info
+ The owner (Harmony ID)
+
+
+
+ Adds a transpiler
+ The patch info
+ The owner (Harmony ID)
+ The annotation info
+
+
+
+ Removes a transpiler
+ The patch info
+ The owner (Harmony ID)
+
+
+
+ Adds a finalizer
+ The patch info
+ The owner (Harmony ID)
+ The annotation info
+
+
+
+ Removes a finalizer
+ The patch info
+ The owner (Harmony ID)
+
+
+
+ Removes a patch method
+ The patch info
+ The patch method
+
+
+
+ Sorts patch methods by their priority rules
+ The original method
+ Patches to sort
+ Use debug mode
+ The sorted patch methods
+
+
+
+ Creates new replacement method with the latest patches and detours the original method
+ The original method
+ Information describing the patches
+ The newly created replacement method
+
+
+
+ Creates a patch sorter
+ Array of patches that will be sorted
+ Use debugging
+
+
+ Sorts internal PatchSortingWrapper collection and caches the results.
+ After first run the result is provided from the cache.
+ The original method
+ The sorted patch methods
+
+
+ Checks if the sorter was created with the same patch list and as a result can be reused to
+ get the sorted order of the patches.
+ List of patches to check against
+ true if equal
+
+
+ Removes one unresolved dependency from the least important patch.
+
+
+ Outputs all unblocked patches from the waiting list to results list
+
+
+ Adds patch to both results list and handled patches set
+ Patch to add
+
+
+ Wrapper used over the Patch object to allow faster dependency access and
+ dependency removal in case of cyclic dependencies
+
+
+ Create patch wrapper object used for sorting
+ Patch to wrap
+
+
+ Determines how patches sort
+ The other patch
+ integer to define sort order (-1, 0, 1)
+
+
+ Determines whether patches are equal
+ The other patch
+ true if equal
+
+
+ Hash function
+ A hash code
+
+
+ Bidirectionally registers Patches as after dependencies
+ List of dependencies to register
+
+
+ Bidirectionally registers Patches as before dependencies
+ List of dependencies to register
+
+
+ Bidirectionally removes Patch from after dependencies
+ Patch to remove
+
+
+ Bidirectionally removes Patch from before dependencies
+ Patch to remove
+
+
+ Specifies the type of method
+
+
+
+ This is a normal method
+
+
+ This is a getter
+
+
+ This is a setter
+
+
+ This is a constructor
+
+
+ This is a static constructor
+
+
+ Specifies the type of argument
+
+
+
+ This is a normal argument
+
+
+ This is a reference argument (ref)
+
+
+ This is an out argument (out)
+
+
+ This is a pointer argument (&)
+
+
+ Specifies the type of patch
+
+
+
+ Any patch
+
+
+ A prefix patch
+
+
+ A postfix patch
+
+
+ A transpiler
+
+
+ A finalizer
+
+
+ A reverse patch
+
+
+ Specifies the type of reverse patch
+
+
+
+ Use the unmodified original method (directly from IL)
+
+
+ Use the original as it is right now including previous patches but excluding future ones
+
+
+ Specifies the type of method call dispatching mechanics
+
+
+
+ Call the method using dynamic dispatching if method is virtual (including overriden)
+
+
+ This is the built-in form of late binding (a.k.a. dynamic binding) and is the default dispatching mechanic in C#.
+ This directly corresponds with the instruction.
+
+
+ For virtual (including overriden) methods, the instance type's most-derived/overriden implementation of the method is called.
+ For non-virtual (including static) methods, same behavior as : the exact specified method implementation is called.
+
+
+ Note: This is not a fully dynamic dispatch, since non-virtual (including static) methods are still called non-virtually.
+ A fully dynamic dispatch in C# involves using
+ the dynamic type
+ (actually a fully dynamic binding, since even the name and overload resolution happens at runtime), which does not support.
+
+
+
+
+ Call the method using static dispatching, regardless of whether method is virtual (including overriden) or non-virtual (including static)
+
+
+ a.k.a. non-virtual dispatching, early binding, or static binding.
+ This directly corresponds with the instruction.
+
+
+ For both virtual (including overriden) and non-virtual (including static) methods, the exact specified method implementation is called, without virtual/override mechanics.
+
+
+
+
+ The base class for all Harmony annotations (not meant to be used directly)
+
+
+
+ The common information for all attributes
+
+
+ Annotation to define your Harmony patch methods
+
+
+
+ An empty annotation can be used together with TargetMethod(s)
+
+
+
+ An annotation that specifies a class to patch
+ The declaring class/type
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The argument types of the method or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+ Array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+ An array of argument types to target overloads
+ Array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+ An array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The
+ An array of argument types to target overloads
+ An array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ An array of argument types to target overloads
+ An array of
+
+
+
+ Annotation to define the original method for delegate injection
+
+
+
+ An annotation that specifies a class to patch
+ The declaring class/type
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The argument types of the method or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+ Array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+ An array of argument types to target overloads
+ Array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+ An array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ The
+
+
+
+ An annotation that specifies call dispatching mechanics for the delegate
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The
+ An array of argument types to target overloads
+ An array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ An array of argument types to target overloads
+ An array of
+
+
+
+ Annotation to define your standin methods for reverse patching
+
+
+
+ An annotation that specifies the type of reverse patching
+ The of the reverse patch
+
+
+
+ A Harmony annotation to define that all methods in a class are to be patched
+
+
+
+ A Harmony annotation
+
+
+
+ A Harmony annotation to define patch priority
+ The priority
+
+
+
+ A Harmony annotation
+
+
+
+ A Harmony annotation to define that a patch comes before another patch
+ The array of harmony IDs of the other patches
+
+
+
+ A Harmony annotation
+
+
+ A Harmony annotation to define that a patch comes after another patch
+ The array of harmony IDs of the other patches
+
+
+
+ A Harmony annotation
+
+
+ A Harmony annotation to debug a patch (output uses to log to your Desktop)
+
+
+
+ Specifies the Prepare function in a patch class
+
+
+
+ Specifies the Cleanup function in a patch class
+
+
+
+ Specifies the TargetMethod function in a patch class
+
+
+
+ Specifies the TargetMethods function in a patch class
+
+
+
+ Specifies the Prefix function in a patch class
+
+
+
+ Specifies the Postfix function in a patch class
+
+
+
+ Specifies the Transpiler function in a patch class
+
+
+
+ Specifies the Finalizer function in a patch class
+
+
+
+ A Harmony annotation
+
+
+
+ The name of the original argument
+
+
+
+ The index of the original argument
+
+
+
+ The new name of the original argument
+
+
+
+ An annotation to declare injected arguments by name
+
+
+
+ An annotation to declare injected arguments by index
+ Zero-based index
+
+
+
+ An annotation to declare injected arguments by renaming them
+ Name of the original argument
+ New name
+
+
+
+ An annotation to declare injected arguments by index and renaming them
+ Zero-based index
+ New name
+
+
+
+ An abstract wrapper around OpCode and their operands. Used by transpilers
+
+
+
+ The opcode
+
+
+
+ The operand
+
+
+
+ All labels defined on this instruction
+
+
+
+ All exception block boundaries defined on this instruction
+
+
+
+ Creates a new CodeInstruction with a given opcode and optional operand
+ The opcode
+ The operand
+
+
+
+ Create a full copy (including labels and exception blocks) of a CodeInstruction
+ The to copy
+
+
+
+ Clones a CodeInstruction and resets its labels and exception blocks
+ A lightweight copy of this code instruction
+
+
+
+ Clones a CodeInstruction, resets labels and exception blocks and sets its opcode
+ The opcode
+ A copy of this CodeInstruction with a new opcode
+
+
+
+ Clones a CodeInstruction, resets labels and exception blocks and sets its operand
+ The operand
+ A copy of this CodeInstruction with a new operand
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The class/type where the method is declared
+ The name of the method (case sensitive)
+ Optional parameters to target a specific overload of the method
+ Optional list of types that define the generic version of the method
+ A code instruction that calls the method matching the arguments
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The target method in the form TypeFullName:MethodName , where the type name matches a form recognized by Type.GetType like Some.Namespace.Type .
+ Optional parameters to target a specific overload of the method
+ Optional list of types that define the generic version of the method
+ A code instruction that calls the method matching the arguments
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The lambda expression using the method
+
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The lambda expression using the method
+
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The lambda expression using the method
+
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The lambda expression using the method
+
+
+
+
+ Creates a CodeInstruction loading a field (LD[S]FLD[A])
+ The class/type where the field is defined
+ The name of the field (case sensitive)
+ Use address of field
+
+
+
+ Creates a CodeInstruction storing to a field (ST[S]FLD)
+ The class/type where the field is defined
+ The name of the field (case sensitive)
+
+
+
+ Returns a string representation of the code instruction
+ A string representation of the code instruction
+
+
+
+ Exception block types
+
+
+
+ The beginning of an exception block
+
+
+
+ The beginning of a catch block
+
+
+
+ The beginning of an except filter block
+
+
+
+ The beginning of a fault block
+
+
+
+ The beginning of a finally block
+
+
+
+ The end of an exception block
+
+
+
+ An exception block
+
+
+
+ Block type
+
+
+
+ Catch type
+
+
+
+ Creates an exception block
+ The
+ The catch type
+
+
+
+ The Harmony instance is the main entry to Harmony. After creating one with an unique identifier, it is used to patch and query the current application domain
+
+
+
+ The unique identifier
+
+
+
+ Set to true before instantiating Harmony to debug Harmony or use an environment variable to set HARMONY_DEBUG to '1' like this: cmd /C "set HARMONY_DEBUG=1 && game.exe"
+ This is for full debugging. To debug only specific patches, use the attribute
+
+
+
+ Creates a new Harmony instance
+ A unique identifier (you choose your own)
+ A Harmony instance
+
+
+
+ Searches the current assembly for Harmony annotations and uses them to create patches
+
+
+
+ Creates a empty patch processor for an original method
+ The original method/constructor
+ A new instance
+
+
+
+ Creates a patch class processor from an annotated class
+ The class/type
+ A new instance
+
+
+
+ Creates a reverse patcher for one of your stub methods
+ The original method/constructor
+ The stand-in stub method as
+ A new instance
+
+
+
+ Searches an assembly for Harmony annotations and uses them to create patches
+ The assembly
+
+
+
+ Creates patches by manually specifying the methods
+ The original method/constructor
+ An optional prefix method wrapped in a object
+ An optional postfix method wrapped in a object
+ An optional transpiler method wrapped in a object
+ An optional finalizer method wrapped in a object
+ The replacement method that was created to patch the original method
+
+
+
+ Patches a foreign method onto a stub method of yours and optionally applies transpilers during the process
+ The original method/constructor you want to duplicate
+ Your stub method as that will become the original. Needs to have the correct signature (either original or whatever your transpilers generates)
+ An optional transpiler as method that will be applied during the process
+ The replacement method that was created to patch the stub method
+
+
+
+ Unpatches methods by patching them with zero patches. Fully unpatching is not supported. Be careful, unpatching is global
+ The optional Harmony ID to restrict unpatching to a specific Harmony instance
+ This method could be static if it wasn't for the fact that unpatching creates a new replacement method that contains your harmony ID
+
+
+
+ Unpatches a method by patching it with zero patches. Fully unpatching is not supported. Be careful, unpatching is global
+ The original method/constructor
+ The
+ The optional Harmony ID to restrict unpatching to a specific Harmony instance
+
+
+
+ Unpatches a method by patching it with zero patches. Fully unpatching is not supported. Be careful, unpatching is global
+ The original method/constructor
+ The patch method as method to remove
+
+
+
+ Test for patches from a specific Harmony ID
+ The Harmony ID
+ True if patches for this ID exist
+
+
+
+ Gets patch information for a given original method
+ The original method/constructor
+ The patch information as
+
+
+
+ Gets the methods this instance has patched
+ An enumeration of original methods/constructors
+
+
+
+ Gets all patched original methods in the appdomain
+ An enumeration of patched original methods/constructors
+
+
+
+ Gets Harmony version for all active Harmony instances
+ [out] The current Harmony version
+ A dictionary containing assembly versions keyed by Harmony IDs
+
+
+
+ Under Mono, HarmonyException wraps IL compile errors with detailed information about the failure
+
+
+
+ Default serialization constructor (not implemented)
+ The info
+ The context
+
+
+
+ Get a list of IL instructions in pairs of offset+code
+ A list of key/value pairs which represent an offset and the code at that offset
+
+
+
+ Get a list of IL instructions without offsets
+ A list of
+
+
+
+ Get the error offset of the errornous IL instruction
+ The offset
+
+
+
+ Get the index of the errornous IL instruction
+ The index into the list of instructions or -1 if not found
+
+
+
+ A wrapper around a method to use it as a patch (for example a Prefix)
+
+
+
+ The original method
+
+
+
+ Class/type declaring this patch
+
+
+
+ Patch method name
+
+
+
+ Optional patch
+
+
+
+ Array of argument types of the patch method
+
+
+
+ of the patch
+
+
+
+ Install this patch before patches with these Harmony IDs
+
+
+
+ Install this patch after patches with these Harmony IDs
+
+
+
+ Reverse patch type, see
+
+
+
+ Create debug output for this patch
+
+
+
+ Whether to use (true ) or (false ) mechanics
+ for -attributed delegate
+
+
+
+ Default constructor
+
+
+
+ Creates a patch from a given method
+ The original method
+
+
+
+ Creates a patch from a given method
+ The original method
+ The patch
+ A list of harmony IDs that should come after this patch
+ A list of harmony IDs that should come before this patch
+ Set to true to generate debug output
+
+
+
+ Creates a patch from a given method
+ The patch class/type
+ The patch method name
+ The optional argument types of the patch method (for overloaded methods)
+
+
+
+ Gets the names of all internal patch info fields
+ A list of field names
+
+
+
+ Merges annotations
+ The list of to merge
+ The merged
+
+
+
+ Returns a string that represents the annotation
+ A string representation
+
+
+
+ Annotation extensions
+
+
+
+ Copies annotation information
+ The source
+ The destination
+
+
+
+ Clones an annotation
+ The to clone
+ A copied
+
+
+
+ Merges annotations
+ The master
+ The detail
+ A new, merged
+
+
+
+ Gets all annotations on a class/type
+ The class/type
+ A list of all
+
+
+
+ Gets merged annotations on a class/type
+ The class/type
+ The merged
+
+
+
+ Gets all annotations on a method
+ The method/constructor
+ A list of
+
+
+
+ Gets merged annotations on a method
+ The method/constructor
+ The merged
+
+
+
+
+ A mutable representation of an inline signature, similar to Mono.Cecil's CallSite.
+ Used by the calli instruction, can be used by transpilers
+
+
+
+
+ See
+
+
+
+ See
+
+
+
+ See
+
+
+
+ The list of all parameter types or function pointer signatures received by the call site
+
+
+
+ The return type or function pointer signature returned by the call site
+
+
+
+ Returns a string representation of the inline signature
+ A string representation of the inline signature
+
+
+
+
+ A mutable representation of a parameter type with an attached type modifier,
+ similar to Mono.Cecil's OptionalModifierType / RequiredModifierType and C#'s modopt / modreq
+
+
+
+
+ Whether this is a modopt (optional modifier type) or a modreq (required modifier type)
+
+
+
+ The modifier type attached to the parameter type
+
+
+
+ The modified parameter type
+
+
+
+ Returns a string representation of the modifier type
+ A string representation of the modifier type
+
+
+
+ Patch serialization
+
+
+
+ Control the binding of a serialized object to a type
+ Specifies the assembly name of the serialized object
+ Specifies the type name of the serialized object
+ The type of the object the formatter creates a new instance of
+
+
+
+ Serializes a patch info
+ The
+ The serialized data
+
+
+
+ Deserialize a patch info
+ The serialized data
+ A
+
+
+
+ Compare function to sort patch priorities
+ The patch
+ Zero-based index
+ The priority
+ A standard sort integer (-1, 0, 1)
+
+
+
+ Serializable patch information
+
+
+
+ Prefixes as an array of
+
+
+
+ Postfixes as an array of
+
+
+
+ Transpilers as an array of
+
+
+
+ Finalizers as an array of
+
+
+
+ Default constructor
+
+
+
+ Returns if any of the patches wants debugging turned on
+
+
+
+ Adds a prefix
+
+ The prefix method
+ An owner (Harmony ID)
+ The priority, see
+ A list of Harmony IDs for prefixes that should run after this prefix
+ A list of Harmony IDs for prefixes that should run before this prefix
+ A flag that will log the replacement method via every time this prefix is used to build the replacement, even in the future
+
+
+
+ Removes prefixes
+ The owner of the prefix or * for any prefix
+
+
+
+ Adds a postfix
+ The postfix method
+ An owner (Harmony ID)
+ The priority, see
+ A list of Harmony IDs for postfixes that should run after this postfix
+ A list of Harmony IDs for postfixes that should run before this postfix
+ A flag that will log the replacement method via every time this postfix is used to build the replacement, even in the future
+
+
+
+ Removes postfixes
+ The owner of the postfix or * for any postfix
+
+
+
+ Adds a transpiler
+ The transpiler method
+ An owner (Harmony ID)
+ The priority, see
+ A list of Harmony IDs for transpilers that should run after this transpiler
+ A list of Harmony IDs for transpilers that should run before this transpiler
+ A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future
+
+
+
+ Removes transpilers
+ The owner of the transpiler or * for any transpiler
+
+
+
+ Adds a finalizer
+ The finalizer method
+ An owner (Harmony ID)
+ The priority, see
+ A list of Harmony IDs for finalizers that should run after this finalizer
+ A list of Harmony IDs for finalizers that should run before this finalizer
+ A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future
+
+
+
+ Removes finalizers
+ The owner of the finalizer or * for any finalizer
+
+
+
+ Removes a patch using its method
+ The method of the patch to remove
+
+
+
+ A serializable patch
+
+
+
+ Zero-based index
+
+
+
+ The owner (Harmony ID)
+
+
+
+ The priority, see
+
+
+
+ Keep this patch before the patches indicated in the list of Harmony IDs
+
+
+
+ Keep this patch after the patches indicated in the list of Harmony IDs
+
+
+
+ A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future
+
+
+
+ The method of the static patch method
+
+
+
+ Creates a patch
+ The method of the patch
+ Zero-based index
+ An owner (Harmony ID)
+ The priority, see
+ A list of Harmony IDs for patches that should run after this patch
+ A list of Harmony IDs for patches that should run before this patch
+ A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future
+
+
+
+ Get the patch method or a DynamicMethod if original patch method is a patch factory
+ The original method/constructor
+ The method of the patch
+
+
+
+ Determines whether patches are equal
+ The other patch
+ true if equal
+
+
+
+ Determines how patches sort
+ The other patch
+ integer to define sort order (-1, 0, 1)
+
+
+
+ Hash function
+ A hash code
+
+
+
+ A PatchClassProcessor used to turn on a class/type into patches
+
+
+
+ Creates a patch class processor by pointing out a class. Similar to PatchAll() but without searching through all classes.
+ The Harmony instance
+ The class to process (need to have at least a [HarmonyPatch] attribute)
+
+
+
+ Applies the patches
+ A list of all created replacement methods or null if patch class is not annotated
+
+
+
+ A group of patches
+
+
+
+ A collection of prefix
+
+
+
+ A collection of postfix
+
+
+
+ A collection of transpiler
+
+
+
+ A collection of finalizer
+
+
+
+ Gets all owners (Harmony IDs) or all known patches
+ The patch owners
+
+
+
+ Creates a group of patches
+ An array of prefixes as
+ An array of postfixes as
+ An array of transpileres as
+ An array of finalizeres as
+
+
+
+ A PatchProcessor handles patches on a method/constructor
+
+
+
+ Creates an empty patch processor
+ The Harmony instance
+ The original method/constructor
+
+
+
+ Adds a prefix
+ The prefix as a
+ A for chaining calls
+
+
+
+ Adds a prefix
+ The prefix method
+ A for chaining calls
+
+
+
+ Adds a postfix
+ The postfix as a
+ A for chaining calls
+
+
+
+ Adds a postfix
+ The postfix method
+ A for chaining calls
+
+
+
+ Adds a transpiler
+ The transpiler as a
+ A for chaining calls
+
+
+
+ Adds a transpiler
+ The transpiler method
+ A for chaining calls
+
+
+
+ Adds a finalizer
+ The finalizer as a
+ A for chaining calls
+
+
+
+ Adds a finalizer
+ The finalizer method
+ A for chaining calls
+
+
+
+ Gets all patched original methods in the appdomain
+ An enumeration of patched method/constructor
+
+
+
+ Applies all registered patches
+ The generated replacement method
+
+
+
+ Unpatches patches of a given type and/or Harmony ID
+ The patch type
+ Harmony ID or * for any
+ A for chaining calls
+
+
+
+ Unpatches a specific patch
+ The method of the patch
+ A for chaining calls
+
+
+
+ Gets patch information on an original
+ The original method/constructor
+ The patch information as
+
+
+
+ Sort patch methods by their priority rules
+ The original method
+ Patches to sort
+ The sorted patch methods
+
+
+
+ Gets Harmony version for all active Harmony instances
+ [out] The current Harmony version
+ A dictionary containing assembly version keyed by Harmony ID
+
+
+
+ Creates a new empty generator to use when reading method bodies
+ A new
+
+
+
+ Creates a new generator matching the method/constructor to use when reading method bodies
+ The original method/constructor to copy method information from
+ A new
+
+
+
+ Returns the methods unmodified list of code instructions
+ The original method/constructor
+ Optionally an existing generator that will be used to create all local variables and labels contained in the result (if not specified, an internal generator is used)
+ A list containing all the original
+
+
+
+ Returns the methods unmodified list of code instructions
+ The original method/constructor
+ A new generator that now contains all local variables and labels contained in the result
+ A list containing all the original
+
+
+
+ Returns the methods current list of code instructions after all existing transpilers have been applied
+ The original method/constructor
+ Apply only the first count of transpilers
+ Optionally an existing generator that will be used to create all local variables and labels contained in the result (if not specified, an internal generator is used)
+ A list of
+
+
+
+ Returns the methods current list of code instructions after all existing transpilers have been applied
+ The original method/constructor
+ A new generator that now contains all local variables and labels contained in the result
+ Apply only the first count of transpilers
+ A list of
+
+
+
+ A low level way to read the body of a method. Used for quick searching in methods
+ The original method
+ All instructions as opcode/operand pairs
+
+
+
+ A low level way to read the body of a method. Used for quick searching in methods
+ The original method
+ An existing generator that will be used to create all local variables and labels contained in the result
+ All instructions as opcode/operand pairs
+
+
+
+ A patch priority
+
+
+
+ Patch last
+
+
+
+ Patch with very low priority
+
+
+
+ Patch with low priority
+
+
+
+ Patch with lower than normal priority
+
+
+
+ Patch with normal priority
+
+
+
+ Patch with higher than normal priority
+
+
+
+ Patch with high priority
+
+
+
+ Patch with very high priority
+
+
+
+ Patch first
+
+
+
+ A reverse patcher
+
+
+
+ Creates a reverse patcher
+ The Harmony instance
+ The original method/constructor
+ Your stand-in stub method as
+
+
+
+ Applies the patch
+ The type of patch, see
+ The generated replacement method
+
+
+
+ A collection of commonly used transpilers
+
+
+
+ A transpiler that replaces all occurrences of a given method with another one
+ The enumeration of to act on
+ Method or constructor to search for
+ Method or constructor to replace with
+ Modified enumeration of
+
+
+
+ A transpiler that alters instructions that match a predicate by calling an action
+ The enumeration of to act on
+ A predicate selecting the instructions to change
+ An action to apply to matching instructions
+ Modified enumeration of
+
+
+
+ A transpiler that logs a text at the beginning of the method
+ The instructions to act on
+ The log text
+ Modified enumeration of
+
+
+
+ A helper class for reflection related functions
+
+
+
+ Shortcut for to simplify the use of reflections and make it work for any access level
+
+
+
+ Shortcut for to simplify the use of reflections and make it work for any access level but only within the current type
+
+
+
+ Gets a type by name. Prefers a full name with namespace but falls back to the first type matching the name otherwise
+ The name
+ A type or null if not found
+
+
+
+ Gets all successfully loaded types from a given assembly
+ The assembly
+ An array of types
+
+ This calls and returns , while catching any thrown .
+ If such an exception is thrown, returns the successfully loaded types ( ,
+ filtered for non-null values).
+
+
+
+
+ Applies a function going up the type hierarchy and stops at the first non null result
+ Result type of func()
+ The class/type to start with
+ The evaluation function returning T
+ Returns the first non null result or default(T) when reaching the top level type object
+
+
+
+ Applies a function going into inner types and stops at the first non null result
+ Generic type parameter
+ The class/type to start with
+ The evaluation function returning T
+ Returns the first non null result or null with no match
+
+
+
+ Gets the reflection information for a directly declared field
+ The class/type where the field is defined
+ The name of the field
+ A field or null when type/name is null or when the field cannot be found
+
+
+
+ Gets the reflection information for a field by searching the type and all its super types
+ The class/type where the field is defined
+ The name of the field (case sensitive)
+ A field or null when type/name is null or when the field cannot be found
+
+
+
+ Gets the reflection information for a field
+ The class/type where the field is declared
+ The zero-based index of the field inside the class definition
+ A field or null when type is null or when the field cannot be found
+
+
+
+ Gets the reflection information for a directly declared property
+ The class/type where the property is declared
+ The name of the property (case sensitive)
+ A property or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for the getter method of a directly declared property
+ The class/type where the property is declared
+ The name of the property (case sensitive)
+ A method or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for the setter method of a directly declared property
+ The class/type where the property is declared
+ The name of the property (case sensitive)
+ A method or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for a property by searching the type and all its super types
+ The class/type
+ The name
+ A property or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for the getter method of a property by searching the type and all its super types
+ The class/type
+ The name
+ A method or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for the setter method of a property by searching the type and all its super types
+ The class/type
+ The name
+ A method or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for a directly declared method
+ The class/type where the method is declared
+ The name of the method (case sensitive)
+ Optional parameters to target a specific overload of the method
+ Optional list of types that define the generic version of the method
+ A method or null when type/name is null or when the method cannot be found
+
+
+
+ Gets the reflection information for a method by searching the type and all its super types
+ The class/type where the method is declared
+ The name of the method (case sensitive)
+ Optional parameters to target a specific overload of the method
+ Optional list of types that define the generic version of the method
+ A method or null when type/name is null or when the method cannot be found
+
+
+
+ Gets the reflection information for a method by searching the type and all its super types
+ The target method in the form TypeFullName:MethodName , where the type name matches a form recognized by Type.GetType like Some.Namespace.Type .
+ Optional parameters to target a specific overload of the method
+ Optional list of types that define the generic version of the method
+ A method or null when type/name is null or when the method cannot be found
+
+
+
+ Gets the names of all method that are declared in a type
+ The declaring class/type
+ A list of method names
+
+
+
+ Gets the names of all method that are declared in the type of the instance
+ An instance of the type to search in
+ A list of method names
+
+
+
+ Gets the names of all fields that are declared in a type
+ The declaring class/type
+ A list of field names
+
+
+
+ Gets the names of all fields that are declared in the type of the instance
+ An instance of the type to search in
+ A list of field names
+
+
+
+ Gets the names of all properties that are declared in a type
+ The declaring class/type
+ A list of property names
+
+
+
+ Gets the names of all properties that are declared in the type of the instance
+ An instance of the type to search in
+ A list of property names
+
+
+
+ Gets the type of any class member of
+ A member
+ The class/type of this member
+
+
+
+ Test if a class member is actually an concrete implementation
+ A member
+ True if the member is a declared
+
+
+
+ Gets the real implementation of a class member
+ A member
+ The member itself if its declared. Otherwise the member that is actually implemented in some base type
+
+
+
+ Gets the reflection information for a directly declared constructor
+ The class/type where the constructor is declared
+ Optional parameters to target a specific overload of the constructor
+ Optional parameters to only consider static constructors
+ A constructor info or null when type is null or when the constructor cannot be found
+
+
+
+ Gets the reflection information for a constructor by searching the type and all its super types
+ The class/type where the constructor is declared
+ Optional parameters to target a specific overload of the method
+ Optional parameters to only consider static constructors
+ A constructor info or null when type is null or when the method cannot be found
+
+
+
+ Gets reflection information for all declared constructors
+ The class/type where the constructors are declared
+ Optional parameters to only consider static constructors
+ A list of constructor infos
+
+
+
+ Gets reflection information for all declared methods
+ The class/type where the methods are declared
+ A list of methods
+
+
+
+ Gets reflection information for all declared properties
+ The class/type where the properties are declared
+ A list of properties
+
+
+
+ Gets reflection information for all declared fields
+ The class/type where the fields are declared
+ A list of fields
+
+
+
+ Gets the return type of a method or constructor
+ The method/constructor
+ The return type
+
+
+
+ Given a type, returns the first inner type matching a recursive search by name
+ The class/type to start searching at
+ The name of the inner type (case sensitive)
+ The inner type or null if type/name is null or if a type with that name cannot be found
+
+
+
+ Given a type, returns the first inner type matching a recursive search with a predicate
+ The class/type to start searching at
+ The predicate to search with
+ The inner type or null if type/predicate is null or if a type with that name cannot be found
+
+
+
+ Given a type, returns the first method matching a predicate
+ The class/type to start searching at
+ The predicate to search with
+ The method or null if type/predicate is null or if a type with that name cannot be found
+
+
+
+ Given a type, returns the first constructor matching a predicate
+ The class/type to start searching at
+ The predicate to search with
+ The constructor info or null if type/predicate is null or if a type with that name cannot be found
+
+
+
+ Given a type, returns the first property matching a predicate
+ The class/type to start searching at
+ The predicate to search with
+ The property or null if type/predicate is null or if a type with that name cannot be found
+
+
+
+ Returns an array containing the type of each object in the given array
+ An array of objects
+ An array of types or an empty array if parameters is null (if an object is null, the type for it will be object)
+
+
+
+ Creates an array of input parameters for a given method and a given set of potential inputs
+ The method/constructor you are planing to call
+ The possible input parameters in any order
+ An object array matching the method signature
+
+
+
+ A read/writable reference to an instance field
+ The class the field is defined in or "object" if type cannot be accessed at compile time
+ The type of the field
+ The runtime instance to access the field (leave empty for static fields)
+ An readable/assignable object representing the field
+
+
+
+ Creates an instance field reference
+ The class the field is defined in
+ The type of the field
+ The name of the field
+ A read and writable field reference delegate
+
+
+
+ Creates an instance field reference for a specific instance
+ The class the field is defined in
+ The type of the field
+ The instance
+ The name of the field
+ An readable/assignable object representing the field
+
+
+
+ Creates an instance field reference delegate for a private type
+ The type of the field
+ The class/type
+ The name of the field
+ A read and writable delegate
+
+
+
+ Creates an instance field reference delegate for a fieldinfo
+ The class the field is defined in or "object" if type cannot be accessed at compile time
+ The type of the field
+ The field of the field
+ A read and writable delegate
+
+
+
+ Creates a static field reference
+ The class the field is defined in or "object" if type cannot be accessed at compile time
+ The type of the field
+ The name of the field
+ An readable/assignable object representing the static field
+
+
+
+ Creates a static field reference
+ The type of the field
+ The class/type
+ The name of the field
+ An readable/assignable object representing the static field
+
+
+
+ Creates a static field reference
+ The class the field is defined in or "object" if type cannot be accessed at compile time
+ The type of the field
+ The field
+ An readable/assignable object representing the static field
+
+
+
+ A read/writable reference delegate to a static field
+ The type of the field
+ An readable/assignable object representing the static field
+
+
+
+ Creates a static field reference delegate
+ The type of the field
+ The field
+ A read and writable delegate
+
+
+
+ Creates a delegate to a given method
+ The delegate Type
+ The method to create a delegate from.
+
+ Only applies for instance methods. If null (default), returned delegate is an open (a.k.a. unbound) instance delegate
+ where an instance is supplied as the first argument to the delegate invocation; else, delegate is a closed (a.k.a. bound)
+ instance delegate where the delegate invocation always applies to the given .
+
+
+ Only applies for instance methods. If true (default) and is virtual, invocation of the delegate
+ calls the instance method virtually (the instance type's most-derived/overriden implementation of the method is called);
+ else, invocation of the delegate calls the exact specified (this is useful for calling base class methods)
+ Note: if false and is an interface method, an ArgumentException is thrown.
+
+ A delegate of given to given
+
+
+ Delegate invocation is more performant and more convenient to use than
+ at a one-time setup cost.
+
+
+ Works for both type of static and instance methods, both open and closed (a.k.a. unbound and bound) instance methods,
+ and both class and struct methods.
+
+
+
+
+
+ Creates a delegate for a given delegate definition, attributed with [ ]
+ The delegate Type, attributed with [ ]
+
+ Only applies for instance methods. If null (default), returned delegate is an open (a.k.a. unbound) instance delegate
+ where an instance is supplied as the first argument to the delegate invocation; else, delegate is a closed (a.k.a. bound)
+ instance delegate where the delegate invocation always applies to the given .
+
+ A delegate of given to the method specified via [ ]
+ attributes on
+
+ This calls with the method and virtualCall arguments
+ determined from the [ ] attributes on ,
+ and the given (for closed instance delegates).
+
+
+
+
+ Returns who called the current method
+ The calling method/constructor (excluding the caller)
+
+
+
+ Rethrows an exception while preserving its stack trace (throw statement typically clobbers existing stack traces)
+ The exception to rethrow
+
+
+
+ True if the current runtime is based on Mono, false otherwise (.NET)
+
+
+
+ True if the current runtime is .NET Framework, false otherwise (.NET Core or Mono, although latter isn't guaranteed)
+
+
+
+ True if the current runtime is .NET Core, false otherwise (Mono or .NET Framework)
+
+
+
+ Throws a missing member runtime exception
+ The type that is involved
+ A list of names
+
+
+
+ Gets default value for a specific type
+ The class/type
+ The default value
+
+
+
+ Creates an (possibly uninitialized) instance of a given type
+ The class/type
+ The new instance
+
+
+
+ Makes a deep copy of any object
+ The type of the instance that should be created
+ The original object
+ A copy of the original object but of type T
+
+
+
+ Makes a deep copy of any object
+ The type of the instance that should be created
+ The original object
+ [out] The copy of the original object
+ Optional value transformation function (taking a field name and src/dst instances)
+ The optional path root to start with
+
+
+
+ Makes a deep copy of any object
+ The original object
+ The type of the instance that should be created
+ Optional value transformation function (taking a field name and src/dst instances)
+ The optional path root to start with
+ The copy of the original object
+
+
+
+ Tests if a type is a struct
+ The type
+ True if the type is a struct
+
+
+
+ Tests if a type is a class
+ The type
+ True if the type is a class
+
+
+
+ Tests if a type is a value type
+ The type
+ True if the type is a value type
+
+
+
+ Tests if a type is an integer type
+ The type
+ True if the type represents some integer
+
+
+
+ Tests if a type is a floating point type
+ The type
+ True if the type represents some floating point
+
+
+
+ Tests if a type is a numerical type
+ The type
+ True if the type represents some number
+
+
+
+ Tests if a type is void
+ The type
+ True if the type is void
+
+
+
+ Test whether an instance is of a nullable type
+ Type of instance
+ An instance to test
+ True if instance is of nullable type, false if not
+
+
+
+ Tests whether a type or member is static, as defined in C#
+ The type or member
+ True if the type or member is static
+
+
+
+ Tests whether a type is static, as defined in C#
+ The type
+ True if the type is static
+
+
+
+ Tests whether a property is static, as defined in C#
+ The property
+ True if the property is static
+
+
+
+ Tests whether an event is static, as defined in C#
+ The event
+ True if the event is static
+
+
+
+ Calculates a combined hash code for an enumeration of objects
+ The objects
+ The hash code
+
+
+
+ General extensions for common cases
+
+
+
+ Joins an enumeration with a value converter and a delimiter to a string
+ The inner type of the enumeration
+ The enumeration
+ An optional value converter (from T to string)
+ An optional delimiter
+ The values joined into a string
+
+
+
+ Converts an array of types (for example methods arguments) into a human readable form
+ The array of types
+ A human readable description including brackets
+
+
+
+ A full description of a type
+ The type
+ A human readable description
+
+
+
+ A a full description of a method or a constructor without assembly details but with generics
+ The method/constructor
+ A human readable description
+
+
+
+ A helper converting parameter infos to types
+ The array of parameter infos
+ An array of types
+
+
+
+ A helper to access a value via key from a dictionary
+ The key type
+ The value type
+ The dictionary
+ The key
+ The value for the key or the default value (of T) if that key does not exist
+
+
+
+ A helper to access a value via key from a dictionary with extra casting
+ The value type
+ The dictionary
+ The key
+ The value for the key or the default value (of T) if that key does not exist or cannot be cast to T
+
+
+
+ Escapes Unicode and ASCII non printable characters
+ The string to convert
+ The string to convert
+ A string literal surrounded by
+
+
+
+ Extensions for
+
+
+
+ Shortcut for testing whether the operand is equal to a non-null value
+ The
+ The value
+ True if the operand has the same type and is equal to the value
+
+
+
+ Shortcut for testing whether the operand is equal to a non-null value
+ The
+ The value
+ True if the operand is equal to the value
+ This is an optimized version of for
+
+
+
+ Shortcut for code.opcode == opcode && code.OperandIs(operand)
+ The
+ The
+ The operand value
+ True if the opcode is equal to the given opcode and the operand has the same type and is equal to the given operand
+
+
+
+ Shortcut for code.opcode == opcode && code.OperandIs(operand)
+ The
+ The
+ The operand value
+ True if the opcode is equal to the given opcode and the operand is equal to the given operand
+ This is an optimized version of for
+
+
+
+ Tests for any form of Ldarg*
+ The
+ The (optional) index
+ True if it matches one of the variations
+
+
+
+ Tests for Ldarga/Ldarga_S
+ The
+ The (optional) index
+ True if it matches one of the variations
+
+
+
+ Tests for Starg/Starg_S
+ The
+ The (optional) index
+ True if it matches one of the variations
+
+
+
+ Tests for any form of Ldloc*
+ The
+ The optional local variable
+ True if it matches one of the variations
+
+
+
+ Tests for any form of Stloc*
+ The
+ The optional local variable
+ True if it matches one of the variations
+
+
+
+ Tests if the code instruction branches
+ The
+ The label if the instruction is a branch operation or if not
+ True if the instruction branches
+
+
+
+ Tests if the code instruction calls the method/constructor
+ The
+ The method
+ True if the instruction calls the method or constructor
+
+
+
+ Tests if the code instruction loads a constant
+ The
+ True if the instruction loads a constant
+
+
+
+ Tests if the code instruction loads an integer constant
+ The
+ The integer constant
+ True if the instruction loads the constant
+
+
+
+ Tests if the code instruction loads a floating point constant
+ The
+ The floating point constant
+ True if the instruction loads the constant
+
+
+
+ Tests if the code instruction loads an enum constant
+ The
+ The enum
+ True if the instruction loads the constant
+
+
+
+ Tests if the code instruction loads a field
+ The
+ The field
+ Set to true if the address of the field is loaded
+ True if the instruction loads the field
+
+
+
+ Tests if the code instruction stores a field
+ The
+ The field
+ True if the instruction stores this field
+
+
+
+ Adds labels to the code instruction and return it
+ The
+ One or several to add
+ The same code instruction
+
+
+ Adds labels to the code instruction and return it
+ The
+ An enumeration of
+ The same code instruction
+
+
+ Extracts all labels from the code instruction and returns them
+ The
+ A list of
+
+
+ Moves all labels from the code instruction to a different one
+ The to move the labels from
+ The to move the labels to
+ The code instruction labels were moved from (now empty)
+
+
+ Moves all labels from a different code instruction to the current one
+ The to move the labels from
+ The to move the labels to
+ The code instruction that received the labels
+
+
+ Adds ExceptionBlocks to the code instruction and return it
+ The
+ One or several to add
+ The same code instruction
+
+
+ Adds ExceptionBlocks to the code instruction and return it
+ The
+ An enumeration of
+ The same code instruction
+
+
+ Extracts all ExceptionBlocks from the code instruction and returns them
+ The
+ A list of
+
+
+ Moves all ExceptionBlocks from the code instruction to a different one
+ The to move the ExceptionBlocks from
+ The to move the ExceptionBlocks to
+ The code instruction blocks were moved from (now empty)
+
+
+ Moves all ExceptionBlocks from a different code instruction to the current one
+ The to move the ExceptionBlocks from
+ The to move the ExceptionBlocks to
+ The code instruction that received the blocks
+
+
+ General extensions for collections
+
+
+
+ A simple way to execute code for every element in a collection
+ The inner type of the collection
+ The collection
+ The action to execute
+
+
+
+ A simple way to execute code for elements in a collection matching a condition
+ The inner type of the collection
+ The collection
+ The predicate
+ The action to execute
+
+
+
+ A helper to add an item to a collection
+ The inner type of the collection
+ The collection
+ The item to add
+ The collection containing the item
+
+
+
+ A helper to add an item to an array
+ The inner type of the collection
+ The array
+ The item to add
+ The array containing the item
+
+
+
+ A helper to add items to an array
+ The inner type of the collection
+ The array
+ The items to add
+ The array containing the items
+
+
+
+ General extensions for collections
+
+
+
+ Tests a class member if it has an IL method body (external methods for example don't have a body)
+ The member to test
+ Returns true if the member has an IL body or false if not
+
+
+ A file log for debugging
+
+
+
+ Full pathname of the log file, defaults to a file called harmony.log.txt on your Desktop
+
+
+
+ The indent character. The default is tab
+
+
+
+ The current indent level
+
+
+
+ Changes the indentation level
+ The value to add to the indentation level
+
+
+
+ Log a string in a buffered way. Use this method only if you are sure that FlushBuffer will be called
+ or else logging information is incomplete in case of a crash
+ The string to log
+
+
+
+ Logs a list of string in a buffered way. Use this method only if you are sure that FlushBuffer will be called
+ or else logging information is incomplete in case of a crash
+ A list of strings to log (they will not be re-indented)
+
+
+
+ Returns the log buffer and optionally empties it
+ True to empty the buffer
+ The buffer.
+
+
+
+ Replaces the buffer with new lines
+ The lines to store
+
+
+
+ Flushes the log buffer to disk (use in combination with LogBuffered)
+
+
+
+ Log a string directly to disk. Slower method that prevents missing information in case of a crash
+ The string to log.
+
+
+
+ Resets and deletes the log
+
+
+
+ Logs some bytes as hex values
+ The pointer to some memory
+ The length of bytes to log
+
+
+
+ A helper class to retrieve reflection info for non-private methods
+
+
+
+ Given a lambda expression that calls a method, returns the method info
+ The lambda expression using the method
+ The method in the lambda expression
+
+
+
+ Given a lambda expression that calls a method, returns the method info
+ The generic type
+ The lambda expression using the method
+ The method in the lambda expression
+
+
+
+ Given a lambda expression that calls a method, returns the method info
+ The generic type
+ The generic result type
+ The lambda expression using the method
+ The method in the lambda expression
+
+
+
+ Given a lambda expression that calls a method, returns the method info
+ The lambda expression using the method
+ The method in the lambda expression
+
+
+
+ A reflection helper to read and write private elements
+ The result type defined by GetValue()
+
+
+
+ Creates a traverse instance from an existing instance
+ The existing instance
+
+
+
+ Gets/Sets the current value
+ The value to read or write
+
+
+
+ A reflection helper to read and write private elements
+
+
+
+ Creates a new traverse instance from a class/type
+ The class/type
+ A instance
+
+
+
+ Creates a new traverse instance from a class T
+ The class
+ A instance
+
+
+
+ Creates a new traverse instance from an instance
+ The object
+ A instance
+
+
+
+ Creates a new traverse instance from a named type
+ The type name, for format see
+ A instance
+
+
+
+ Creates a new and empty traverse instance
+
+
+
+ Creates a new traverse instance from a class/type
+ The class/type
+
+
+
+ Creates a new traverse instance from an instance
+ The object
+
+
+
+ Gets the current value
+ The value
+
+
+
+ Gets the current value
+ The type of the value
+ The value
+
+
+
+ Invokes the current method with arguments and returns the result
+ The method arguments
+ The value returned by the method
+
+
+
+ Invokes the current method with arguments and returns the result
+ The type of the value
+ The method arguments
+ The value returned by the method
+
+
+
+ Sets a value of the current field or property
+ The value
+ The same traverse instance
+
+
+
+ Gets the type of the current field or property
+ The type
+
+
+
+ Moves the current traverse instance to a inner type
+ The type name
+ A traverse instance
+
+
+
+ Moves the current traverse instance to a field
+ The type name
+ A traverse instance
+
+
+
+ Moves the current traverse instance to a field
+ The type of the field
+ The type name
+ A traverse instance
+
+
+
+ Gets all fields of the current type
+ A list of field names
+
+
+
+ Moves the current traverse instance to a property
+ The type name
+ Optional property index
+ A traverse instance
+
+
+
+ Moves the current traverse instance to a field
+ The type of the property
+ The type name
+ Optional property index
+ A traverse instance
+
+
+
+ Gets all properties of the current type
+ A list of property names
+
+
+
+ Moves the current traverse instance to a method
+ The name of the method
+ The arguments defining the argument types of the method overload
+ A traverse instance
+
+
+
+ Moves the current traverse instance to a method
+ The name of the method
+ The argument types of the method
+ The arguments for the method
+ A traverse instance
+
+
+
+ Gets all methods of the current type
+ A list of method names
+
+
+
+ Checks if the current traverse instance is for a field
+ True if its a field
+
+
+
+ Checks if the current traverse instance is for a property
+ True if its a property
+
+
+
+ Checks if the current traverse instance is for a method
+ True if its a method
+
+
+
+ Checks if the current traverse instance is for a type
+ True if its a type
+
+
+
+ Iterates over all fields of the current type and executes a traverse action
+ Original object
+ The action receiving a instance for each field
+
+
+
+ Iterates over all fields of the current type and executes a traverse action
+ Original object
+ Target object
+ The action receiving a pair of instances for each field pair
+
+
+
+ Iterates over all fields of the current type and executes a traverse action
+ Original object
+ Target object
+ The action receiving a dot path representing the field pair and the instances
+
+
+
+ Iterates over all properties of the current type and executes a traverse action
+ Original object
+ The action receiving a instance for each property
+
+
+
+ Iterates over all properties of the current type and executes a traverse action
+ Original object
+ Target object
+ The action receiving a pair of instances for each property pair
+
+
+
+ Iterates over all properties of the current type and executes a traverse action
+ Original object
+ Target object
+ The action receiving a dot path representing the property pair and the instances
+
+
+
+ A default field action that copies fields to fields
+
+
+
+ Returns a string that represents the current traverse
+ A string representation
+
+
+
+
diff --git a/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/netcoreapp3.1/0Harmony.dll b/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/netcoreapp3.1/0Harmony.dll
new file mode 100644
index 0000000..e239948
Binary files /dev/null and b/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/netcoreapp3.1/0Harmony.dll differ
diff --git a/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/netcoreapp3.1/0Harmony.xml b/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/netcoreapp3.1/0Harmony.xml
new file mode 100644
index 0000000..6bcea2e
--- /dev/null
+++ b/source/RimNudeWorldHARAddon/packages/Lib.Harmony.2.0.2/lib/netcoreapp3.1/0Harmony.xml
@@ -0,0 +1,2900 @@
+
+
+
+ 0Harmony
+
+
+
+ A factory to create delegate types
+
+
+ Default constructor
+
+
+ Creates a delegate type for a method
+ The method
+ The new delegate type
+
+
+
+ A getter delegate type
+ Type that getter gets field/property value from
+ Type of the value that getter gets
+ The instance get getter uses
+ An delegate
+
+
+
+ A setter delegate type
+ Type that setter sets field/property value for
+ Type of the value that setter sets
+ The instance the setter uses
+ The value the setter uses
+ An delegate
+
+
+
+ A constructor delegate type
+ Type that constructor creates
+ An delegate
+
+
+
+ A helper class for fast access to getters and setters
+
+
+ Creates an instantiation delegate
+ Type that constructor creates
+ The new instantiation delegate
+
+
+
+ Creates an getter delegate for a property
+ Type that getter reads property from
+ Type of the property that gets accessed
+ The property
+ The new getter delegate
+
+
+
+ Creates an getter delegate for a field
+ Type that getter reads field from
+ Type of the field that gets accessed
+ The field
+ The new getter delegate
+
+
+
+ Creates an getter delegate for a field (with a list of possible field names)
+ Type that getter reads field/property from
+ Type of the field/property that gets accessed
+ A list of possible field names
+ The new getter delegate
+
+
+
+ Creates an setter delegate
+ Type that setter assigns property value to
+ Type of the property that gets assigned
+ The property
+ The new setter delegate
+
+
+
+ Creates an setter delegate for a field
+ Type that setter assigns field value to
+ Type of the field that gets assigned
+ The field
+ The new getter delegate
+
+
+
+ A delegate to invoke a method
+ The instance
+ The method parameters
+ The method result
+
+
+ A helper class to invoke method with delegates
+
+
+ Creates a fast invocation handler from a method
+ The method to invoke
+ Controls if boxed value object is accessed/updated directly
+ The
+
+
+ The directBoxValueAccess option controls how value types passed by reference (e.g. ref int, out my_struct) are handled in the arguments array
+ passed to the fast invocation handler.
+ Since the arguments array is an object array, any value types contained within it are actually references to a boxed value object.
+ Like any other object, there can be other references to such boxed value objects, other than the reference within the arguments array.
+ For example,
+
+ var val = 5;
+ var box = (object)val;
+ var arr = new object[] { box };
+ handler(arr); // for a method with parameter signature: ref/out/in int
+
+
+
+
+ If directBoxValueAccess is true , the boxed value object is accessed (and potentially updated) directly when the handler is called,
+ such that all references to the boxed object reflect the potentially updated value.
+ In the above example, if the method associated with the handler updates the passed (boxed) value to 10, both box and arr[0]
+ now reflect the value 10. Note that the original val is not updated, since boxing always copies the value into the new boxed value object.
+
+
+ If directBoxValueAccess is false (default), the boxed value object in the arguments array is replaced with a "reboxed" value object,
+ such that potential updates to the value are reflected only in the arguments array.
+ In the above example, if the method associated with the handler updates the passed (boxed) value to 10, only arr[0] now reflects the value 10.
+
+
+
+
+ A low level memory helper
+
+
+ Mark method for no inlining (currently only works on Mono)
+ The method/constructor to change
+
+
+ Detours a method
+ The original method/constructor
+ The replacement method/constructor
+ An error string
+
+
+
+ Writes a jump to memory
+ The memory address
+ Jump destination
+ An error string
+
+
+
+ Gets the start of a method in memory
+ The method/constructor
+ [out] Details of the exception
+ The method start address
+
+
+
+ special parameter names that can be used in prefix and postfix methods
+
+
+ Patch function helpers
+
+
+ Adds a prefix
+ The patch info
+ The owner (Harmony ID)
+ The annotation info
+
+
+
+ Removes a prefix
+ The patch info
+ The owner (Harmony ID)
+
+
+
+ Adds a postfix
+ The patch info
+ The owner (Harmony ID)
+ The annotation info
+
+
+
+ Removes a postfix
+ The patch info
+ The owner (Harmony ID)
+
+
+
+ Adds a transpiler
+ The patch info
+ The owner (Harmony ID)
+ The annotation info
+
+
+
+ Removes a transpiler
+ The patch info
+ The owner (Harmony ID)
+
+
+
+ Adds a finalizer
+ The patch info
+ The owner (Harmony ID)
+ The annotation info
+
+
+
+ Removes a finalizer
+ The patch info
+ The owner (Harmony ID)
+
+
+
+ Removes a patch method
+ The patch info
+ The patch method
+
+
+
+ Sorts patch methods by their priority rules
+ The original method
+ Patches to sort
+ Use debug mode
+ The sorted patch methods
+
+
+
+ Creates new replacement method with the latest patches and detours the original method
+ The original method
+ Information describing the patches
+ The newly created replacement method
+
+
+
+ Creates a patch sorter
+ Array of patches that will be sorted
+ Use debugging
+
+
+ Sorts internal PatchSortingWrapper collection and caches the results.
+ After first run the result is provided from the cache.
+ The original method
+ The sorted patch methods
+
+
+ Checks if the sorter was created with the same patch list and as a result can be reused to
+ get the sorted order of the patches.
+ List of patches to check against
+ true if equal
+
+
+ Removes one unresolved dependency from the least important patch.
+
+
+ Outputs all unblocked patches from the waiting list to results list
+
+
+ Adds patch to both results list and handled patches set
+ Patch to add
+
+
+ Wrapper used over the Patch object to allow faster dependency access and
+ dependency removal in case of cyclic dependencies
+
+
+ Create patch wrapper object used for sorting
+ Patch to wrap
+
+
+ Determines how patches sort
+ The other patch
+ integer to define sort order (-1, 0, 1)
+
+
+ Determines whether patches are equal
+ The other patch
+ true if equal
+
+
+ Hash function
+ A hash code
+
+
+ Bidirectionally registers Patches as after dependencies
+ List of dependencies to register
+
+
+ Bidirectionally registers Patches as before dependencies
+ List of dependencies to register
+
+
+ Bidirectionally removes Patch from after dependencies
+ Patch to remove
+
+
+ Bidirectionally removes Patch from before dependencies
+ Patch to remove
+
+
+ Specifies the type of method
+
+
+
+ This is a normal method
+
+
+ This is a getter
+
+
+ This is a setter
+
+
+ This is a constructor
+
+
+ This is a static constructor
+
+
+ Specifies the type of argument
+
+
+
+ This is a normal argument
+
+
+ This is a reference argument (ref)
+
+
+ This is an out argument (out)
+
+
+ This is a pointer argument (&)
+
+
+ Specifies the type of patch
+
+
+
+ Any patch
+
+
+ A prefix patch
+
+
+ A postfix patch
+
+
+ A transpiler
+
+
+ A finalizer
+
+
+ A reverse patch
+
+
+ Specifies the type of reverse patch
+
+
+
+ Use the unmodified original method (directly from IL)
+
+
+ Use the original as it is right now including previous patches but excluding future ones
+
+
+ Specifies the type of method call dispatching mechanics
+
+
+
+ Call the method using dynamic dispatching if method is virtual (including overriden)
+
+
+ This is the built-in form of late binding (a.k.a. dynamic binding) and is the default dispatching mechanic in C#.
+ This directly corresponds with the instruction.
+
+
+ For virtual (including overriden) methods, the instance type's most-derived/overriden implementation of the method is called.
+ For non-virtual (including static) methods, same behavior as : the exact specified method implementation is called.
+
+
+ Note: This is not a fully dynamic dispatch, since non-virtual (including static) methods are still called non-virtually.
+ A fully dynamic dispatch in C# involves using
+ the dynamic type
+ (actually a fully dynamic binding, since even the name and overload resolution happens at runtime), which does not support.
+
+
+
+
+ Call the method using static dispatching, regardless of whether method is virtual (including overriden) or non-virtual (including static)
+
+
+ a.k.a. non-virtual dispatching, early binding, or static binding.
+ This directly corresponds with the instruction.
+
+
+ For both virtual (including overriden) and non-virtual (including static) methods, the exact specified method implementation is called, without virtual/override mechanics.
+
+
+
+
+ The base class for all Harmony annotations (not meant to be used directly)
+
+
+
+ The common information for all attributes
+
+
+ Annotation to define your Harmony patch methods
+
+
+
+ An empty annotation can be used together with TargetMethod(s)
+
+
+
+ An annotation that specifies a class to patch
+ The declaring class/type
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The argument types of the method or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+ Array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+ An array of argument types to target overloads
+ Array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+ An array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The
+ An array of argument types to target overloads
+ An array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ An array of argument types to target overloads
+ An array of
+
+
+
+ Annotation to define the original method for delegate injection
+
+
+
+ An annotation that specifies a class to patch
+ The declaring class/type
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The argument types of the method or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+ Array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The
+ An array of argument types to target overloads
+ Array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The declaring class/type
+ The name of the method, property or constructor to patch
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ An array of argument types to target overloads
+ An array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The name of the method, property or constructor to patch
+ The
+
+
+
+ An annotation that specifies call dispatching mechanics for the delegate
+ The
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ The
+ An array of argument types to target overloads
+ An array of
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ An array of argument types to target overloads
+
+
+
+ An annotation that specifies a method, property or constructor to patch
+ An array of argument types to target overloads
+ An array of
+
+
+
+ Annotation to define your standin methods for reverse patching
+
+
+
+ An annotation that specifies the type of reverse patching
+ The of the reverse patch
+
+
+
+ A Harmony annotation to define that all methods in a class are to be patched
+
+
+
+ A Harmony annotation
+
+
+
+ A Harmony annotation to define patch priority
+ The priority
+
+
+
+ A Harmony annotation
+
+
+
+ A Harmony annotation to define that a patch comes before another patch
+ The array of harmony IDs of the other patches
+
+
+
+ A Harmony annotation
+
+
+ A Harmony annotation to define that a patch comes after another patch
+ The array of harmony IDs of the other patches
+
+
+
+ A Harmony annotation
+
+
+ A Harmony annotation to debug a patch (output uses to log to your Desktop)
+
+
+
+ Specifies the Prepare function in a patch class
+
+
+
+ Specifies the Cleanup function in a patch class
+
+
+
+ Specifies the TargetMethod function in a patch class
+
+
+
+ Specifies the TargetMethods function in a patch class
+
+
+
+ Specifies the Prefix function in a patch class
+
+
+
+ Specifies the Postfix function in a patch class
+
+
+
+ Specifies the Transpiler function in a patch class
+
+
+
+ Specifies the Finalizer function in a patch class
+
+
+
+ A Harmony annotation
+
+
+
+ The name of the original argument
+
+
+
+ The index of the original argument
+
+
+
+ The new name of the original argument
+
+
+
+ An annotation to declare injected arguments by name
+
+
+
+ An annotation to declare injected arguments by index
+ Zero-based index
+
+
+
+ An annotation to declare injected arguments by renaming them
+ Name of the original argument
+ New name
+
+
+
+ An annotation to declare injected arguments by index and renaming them
+ Zero-based index
+ New name
+
+
+
+ An abstract wrapper around OpCode and their operands. Used by transpilers
+
+
+
+ The opcode
+
+
+
+ The operand
+
+
+
+ All labels defined on this instruction
+
+
+
+ All exception block boundaries defined on this instruction
+
+
+
+ Creates a new CodeInstruction with a given opcode and optional operand
+ The opcode
+ The operand
+
+
+
+ Create a full copy (including labels and exception blocks) of a CodeInstruction
+ The to copy
+
+
+
+ Clones a CodeInstruction and resets its labels and exception blocks
+ A lightweight copy of this code instruction
+
+
+
+ Clones a CodeInstruction, resets labels and exception blocks and sets its opcode
+ The opcode
+ A copy of this CodeInstruction with a new opcode
+
+
+
+ Clones a CodeInstruction, resets labels and exception blocks and sets its operand
+ The operand
+ A copy of this CodeInstruction with a new operand
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The class/type where the method is declared
+ The name of the method (case sensitive)
+ Optional parameters to target a specific overload of the method
+ Optional list of types that define the generic version of the method
+ A code instruction that calls the method matching the arguments
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The target method in the form TypeFullName:MethodName , where the type name matches a form recognized by Type.GetType like Some.Namespace.Type .
+ Optional parameters to target a specific overload of the method
+ Optional list of types that define the generic version of the method
+ A code instruction that calls the method matching the arguments
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The lambda expression using the method
+
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The lambda expression using the method
+
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The lambda expression using the method
+
+
+
+
+ Creates a CodeInstruction calling a method (CALL)
+ The lambda expression using the method
+
+
+
+
+ Creates a CodeInstruction loading a field (LD[S]FLD[A])
+ The class/type where the field is defined
+ The name of the field (case sensitive)
+ Use address of field
+
+
+
+ Creates a CodeInstruction storing to a field (ST[S]FLD)
+ The class/type where the field is defined
+ The name of the field (case sensitive)
+
+
+
+ Returns a string representation of the code instruction
+ A string representation of the code instruction
+
+
+
+ Exception block types
+
+
+
+ The beginning of an exception block
+
+
+
+ The beginning of a catch block
+
+
+
+ The beginning of an except filter block
+
+
+
+ The beginning of a fault block
+
+
+
+ The beginning of a finally block
+
+
+
+ The end of an exception block
+
+
+
+ An exception block
+
+
+
+ Block type
+
+
+
+ Catch type
+
+
+
+ Creates an exception block
+ The
+ The catch type
+
+
+
+ The Harmony instance is the main entry to Harmony. After creating one with an unique identifier, it is used to patch and query the current application domain
+
+
+
+ The unique identifier
+
+
+
+ Set to true before instantiating Harmony to debug Harmony or use an environment variable to set HARMONY_DEBUG to '1' like this: cmd /C "set HARMONY_DEBUG=1 && game.exe"
+ This is for full debugging. To debug only specific patches, use the attribute
+
+
+
+ Creates a new Harmony instance
+ A unique identifier (you choose your own)
+ A Harmony instance
+
+
+
+ Searches the current assembly for Harmony annotations and uses them to create patches
+
+
+
+ Creates a empty patch processor for an original method
+ The original method/constructor
+ A new instance
+
+
+
+ Creates a patch class processor from an annotated class
+ The class/type
+ A new instance
+
+
+
+ Creates a reverse patcher for one of your stub methods
+ The original method/constructor
+ The stand-in stub method as
+ A new instance
+
+
+
+ Searches an assembly for Harmony annotations and uses them to create patches
+ The assembly
+
+
+
+ Creates patches by manually specifying the methods
+ The original method/constructor
+ An optional prefix method wrapped in a object
+ An optional postfix method wrapped in a object
+ An optional transpiler method wrapped in a object
+ An optional finalizer method wrapped in a object
+ The replacement method that was created to patch the original method
+
+
+
+ Patches a foreign method onto a stub method of yours and optionally applies transpilers during the process
+ The original method/constructor you want to duplicate
+ Your stub method as that will become the original. Needs to have the correct signature (either original or whatever your transpilers generates)
+ An optional transpiler as method that will be applied during the process
+ The replacement method that was created to patch the stub method
+
+
+
+ Unpatches methods by patching them with zero patches. Fully unpatching is not supported. Be careful, unpatching is global
+ The optional Harmony ID to restrict unpatching to a specific Harmony instance
+ This method could be static if it wasn't for the fact that unpatching creates a new replacement method that contains your harmony ID
+
+
+
+ Unpatches a method by patching it with zero patches. Fully unpatching is not supported. Be careful, unpatching is global
+ The original method/constructor
+ The
+ The optional Harmony ID to restrict unpatching to a specific Harmony instance
+
+
+
+ Unpatches a method by patching it with zero patches. Fully unpatching is not supported. Be careful, unpatching is global
+ The original method/constructor
+ The patch method as method to remove
+
+
+
+ Test for patches from a specific Harmony ID
+ The Harmony ID
+ True if patches for this ID exist
+
+
+
+ Gets patch information for a given original method
+ The original method/constructor
+ The patch information as
+
+
+
+ Gets the methods this instance has patched
+ An enumeration of original methods/constructors
+
+
+
+ Gets all patched original methods in the appdomain
+ An enumeration of patched original methods/constructors
+
+
+
+ Gets Harmony version for all active Harmony instances
+ [out] The current Harmony version
+ A dictionary containing assembly versions keyed by Harmony IDs
+
+
+
+ Under Mono, HarmonyException wraps IL compile errors with detailed information about the failure
+
+
+
+ Default serialization constructor (not implemented)
+ The info
+ The context
+
+
+
+ Get a list of IL instructions in pairs of offset+code
+ A list of key/value pairs which represent an offset and the code at that offset
+
+
+
+ Get a list of IL instructions without offsets
+ A list of
+
+
+
+ Get the error offset of the errornous IL instruction
+ The offset
+
+
+
+ Get the index of the errornous IL instruction
+ The index into the list of instructions or -1 if not found
+
+
+
+ A wrapper around a method to use it as a patch (for example a Prefix)
+
+
+
+ The original method
+
+
+
+ Class/type declaring this patch
+
+
+
+ Patch method name
+
+
+
+ Optional patch
+
+
+
+ Array of argument types of the patch method
+
+
+
+ of the patch
+
+
+
+ Install this patch before patches with these Harmony IDs
+
+
+
+ Install this patch after patches with these Harmony IDs
+
+
+
+ Reverse patch type, see
+
+
+
+ Create debug output for this patch
+
+
+
+ Whether to use (true ) or (false ) mechanics
+ for -attributed delegate
+
+
+
+ Default constructor
+
+
+
+ Creates a patch from a given method
+ The original method
+
+
+
+ Creates a patch from a given method
+ The original method
+ The patch
+ A list of harmony IDs that should come after this patch
+ A list of harmony IDs that should come before this patch
+ Set to true to generate debug output
+
+
+
+ Creates a patch from a given method
+ The patch class/type
+ The patch method name
+ The optional argument types of the patch method (for overloaded methods)
+
+
+
+ Gets the names of all internal patch info fields
+ A list of field names
+
+
+
+ Merges annotations
+ The list of to merge
+ The merged
+
+
+
+ Returns a string that represents the annotation
+ A string representation
+
+
+
+ Annotation extensions
+
+
+
+ Copies annotation information
+ The source
+ The destination
+
+
+
+ Clones an annotation
+ The to clone
+ A copied
+
+
+
+ Merges annotations
+ The master
+ The detail
+ A new, merged
+
+
+
+ Gets all annotations on a class/type
+ The class/type
+ A list of all
+
+
+
+ Gets merged annotations on a class/type
+ The class/type
+ The merged
+
+
+
+ Gets all annotations on a method
+ The method/constructor
+ A list of
+
+
+
+ Gets merged annotations on a method
+ The method/constructor
+ The merged
+
+
+
+
+ A mutable representation of an inline signature, similar to Mono.Cecil's CallSite.
+ Used by the calli instruction, can be used by transpilers
+
+
+
+
+ See
+
+
+
+ See
+
+
+
+ See
+
+
+
+ The list of all parameter types or function pointer signatures received by the call site
+
+
+
+ The return type or function pointer signature returned by the call site
+
+
+
+ Returns a string representation of the inline signature
+ A string representation of the inline signature
+
+
+
+
+ A mutable representation of a parameter type with an attached type modifier,
+ similar to Mono.Cecil's OptionalModifierType / RequiredModifierType and C#'s modopt / modreq
+
+
+
+
+ Whether this is a modopt (optional modifier type) or a modreq (required modifier type)
+
+
+
+ The modifier type attached to the parameter type
+
+
+
+ The modified parameter type
+
+
+
+ Returns a string representation of the modifier type
+ A string representation of the modifier type
+
+
+
+ Patch serialization
+
+
+
+ Control the binding of a serialized object to a type
+ Specifies the assembly name of the serialized object
+ Specifies the type name of the serialized object
+ The type of the object the formatter creates a new instance of
+
+
+
+ Serializes a patch info
+ The
+ The serialized data
+
+
+
+ Deserialize a patch info
+ The serialized data
+ A
+
+
+
+ Compare function to sort patch priorities
+ The patch
+ Zero-based index
+ The priority
+ A standard sort integer (-1, 0, 1)
+
+
+
+ Serializable patch information
+
+
+
+ Prefixes as an array of
+
+
+
+ Postfixes as an array of
+
+
+
+ Transpilers as an array of
+
+
+
+ Finalizers as an array of
+
+
+
+ Default constructor
+
+
+
+ Returns if any of the patches wants debugging turned on
+
+
+
+ Adds a prefix
+
+ The prefix method
+ An owner (Harmony ID)
+ The priority, see
+ A list of Harmony IDs for prefixes that should run after this prefix
+ A list of Harmony IDs for prefixes that should run before this prefix
+ A flag that will log the replacement method via every time this prefix is used to build the replacement, even in the future
+
+
+
+ Removes prefixes
+ The owner of the prefix or * for any prefix
+
+
+
+ Adds a postfix
+ The postfix method
+ An owner (Harmony ID)
+ The priority, see
+ A list of Harmony IDs for postfixes that should run after this postfix
+ A list of Harmony IDs for postfixes that should run before this postfix
+ A flag that will log the replacement method via every time this postfix is used to build the replacement, even in the future
+
+
+
+ Removes postfixes
+ The owner of the postfix or * for any postfix
+
+
+
+ Adds a transpiler
+ The transpiler method
+ An owner (Harmony ID)
+ The priority, see
+ A list of Harmony IDs for transpilers that should run after this transpiler
+ A list of Harmony IDs for transpilers that should run before this transpiler
+ A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future
+
+
+
+ Removes transpilers
+ The owner of the transpiler or * for any transpiler
+
+
+
+ Adds a finalizer
+ The finalizer method
+ An owner (Harmony ID)
+ The priority, see
+ A list of Harmony IDs for finalizers that should run after this finalizer
+ A list of Harmony IDs for finalizers that should run before this finalizer
+ A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future
+
+
+
+ Removes finalizers
+ The owner of the finalizer or * for any finalizer
+
+
+
+ Removes a patch using its method
+ The method of the patch to remove
+
+
+
+ A serializable patch
+
+
+
+ Zero-based index
+
+
+
+ The owner (Harmony ID)
+
+
+
+ The priority, see
+
+
+
+ Keep this patch before the patches indicated in the list of Harmony IDs
+
+
+
+ Keep this patch after the patches indicated in the list of Harmony IDs
+
+
+
+ A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future
+
+
+
+ The method of the static patch method
+
+
+
+ Creates a patch
+ The method of the patch
+ Zero-based index
+ An owner (Harmony ID)
+ The priority, see
+ A list of Harmony IDs for patches that should run after this patch
+ A list of Harmony IDs for patches that should run before this patch
+ A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future
+
+
+
+ Get the patch method or a DynamicMethod if original patch method is a patch factory
+ The original method/constructor
+ The method of the patch
+
+
+
+ Determines whether patches are equal
+ The other patch
+ true if equal
+
+
+
+ Determines how patches sort
+ The other patch
+ integer to define sort order (-1, 0, 1)
+
+
+
+ Hash function
+ A hash code
+
+
+
+ A PatchClassProcessor used to turn on a class/type into patches
+
+
+
+ Creates a patch class processor by pointing out a class. Similar to PatchAll() but without searching through all classes.
+ The Harmony instance
+ The class to process (need to have at least a [HarmonyPatch] attribute)
+
+
+
+ Applies the patches
+ A list of all created replacement methods or null if patch class is not annotated
+
+
+
+ A group of patches
+
+
+
+ A collection of prefix
+
+
+
+ A collection of postfix
+
+
+
+ A collection of transpiler
+
+
+
+ A collection of finalizer
+
+
+
+ Gets all owners (Harmony IDs) or all known patches
+ The patch owners
+
+
+
+ Creates a group of patches
+ An array of prefixes as
+ An array of postfixes as
+ An array of transpileres as
+ An array of finalizeres as
+
+
+
+ A PatchProcessor handles patches on a method/constructor
+
+
+
+ Creates an empty patch processor
+ The Harmony instance
+ The original method/constructor
+
+
+
+ Adds a prefix
+ The prefix as a
+ A for chaining calls
+
+
+
+ Adds a prefix
+ The prefix method
+ A for chaining calls
+
+
+
+ Adds a postfix
+ The postfix as a
+ A for chaining calls
+
+
+
+ Adds a postfix
+ The postfix method
+ A for chaining calls
+
+
+
+ Adds a transpiler
+ The transpiler as a
+ A for chaining calls
+
+
+
+ Adds a transpiler
+ The transpiler method
+ A for chaining calls
+
+
+
+ Adds a finalizer
+ The finalizer as a
+ A for chaining calls
+
+
+
+ Adds a finalizer
+ The finalizer method
+ A for chaining calls
+
+
+
+ Gets all patched original methods in the appdomain
+ An enumeration of patched method/constructor
+
+
+
+ Applies all registered patches
+ The generated replacement method
+
+
+
+ Unpatches patches of a given type and/or Harmony ID
+ The patch type
+ Harmony ID or * for any
+ A for chaining calls
+
+
+
+ Unpatches a specific patch
+ The method of the patch
+ A for chaining calls
+
+
+
+ Gets patch information on an original
+ The original method/constructor
+ The patch information as
+
+
+
+ Sort patch methods by their priority rules
+ The original method
+ Patches to sort
+ The sorted patch methods
+
+
+
+ Gets Harmony version for all active Harmony instances
+ [out] The current Harmony version
+ A dictionary containing assembly version keyed by Harmony ID
+
+
+
+ Creates a new empty generator to use when reading method bodies
+ A new
+
+
+
+ Creates a new generator matching the method/constructor to use when reading method bodies
+ The original method/constructor to copy method information from
+ A new
+
+
+
+ Returns the methods unmodified list of code instructions
+ The original method/constructor
+ Optionally an existing generator that will be used to create all local variables and labels contained in the result (if not specified, an internal generator is used)
+ A list containing all the original
+
+
+
+ Returns the methods unmodified list of code instructions
+ The original method/constructor
+ A new generator that now contains all local variables and labels contained in the result
+ A list containing all the original
+
+
+
+ Returns the methods current list of code instructions after all existing transpilers have been applied
+ The original method/constructor
+ Apply only the first count of transpilers
+ Optionally an existing generator that will be used to create all local variables and labels contained in the result (if not specified, an internal generator is used)
+ A list of
+
+
+
+ Returns the methods current list of code instructions after all existing transpilers have been applied
+ The original method/constructor
+ A new generator that now contains all local variables and labels contained in the result
+ Apply only the first count of transpilers
+ A list of
+
+
+
+ A low level way to read the body of a method. Used for quick searching in methods
+ The original method
+ All instructions as opcode/operand pairs
+
+
+
+ A low level way to read the body of a method. Used for quick searching in methods
+ The original method
+ An existing generator that will be used to create all local variables and labels contained in the result
+ All instructions as opcode/operand pairs
+
+
+
+ A patch priority
+
+
+
+ Patch last
+
+
+
+ Patch with very low priority
+
+
+
+ Patch with low priority
+
+
+
+ Patch with lower than normal priority
+
+
+
+ Patch with normal priority
+
+
+
+ Patch with higher than normal priority
+
+
+
+ Patch with high priority
+
+
+
+ Patch with very high priority
+
+
+
+ Patch first
+
+
+
+ A reverse patcher
+
+
+
+ Creates a reverse patcher
+ The Harmony instance
+ The original method/constructor
+ Your stand-in stub method as
+
+
+
+ Applies the patch
+ The type of patch, see
+ The generated replacement method
+
+
+
+ A collection of commonly used transpilers
+
+
+
+ A transpiler that replaces all occurrences of a given method with another one
+ The enumeration of to act on
+ Method or constructor to search for
+ Method or constructor to replace with
+ Modified enumeration of
+
+
+
+ A transpiler that alters instructions that match a predicate by calling an action
+ The enumeration of to act on
+ A predicate selecting the instructions to change
+ An action to apply to matching instructions
+ Modified enumeration of
+
+
+
+ A transpiler that logs a text at the beginning of the method
+ The instructions to act on
+ The log text
+ Modified enumeration of
+
+
+
+ A helper class for reflection related functions
+
+
+
+ Shortcut for to simplify the use of reflections and make it work for any access level
+
+
+
+ Shortcut for to simplify the use of reflections and make it work for any access level but only within the current type
+
+
+
+ Gets a type by name. Prefers a full name with namespace but falls back to the first type matching the name otherwise
+ The name
+ A type or null if not found
+
+
+
+ Gets all successfully loaded types from a given assembly
+ The assembly
+ An array of types
+
+ This calls and returns , while catching any thrown .
+ If such an exception is thrown, returns the successfully loaded types ( ,
+ filtered for non-null values).
+
+
+
+
+ Applies a function going up the type hierarchy and stops at the first non null result
+ Result type of func()
+ The class/type to start with
+ The evaluation function returning T
+ Returns the first non null result or default(T) when reaching the top level type object
+
+
+
+ Applies a function going into inner types and stops at the first non null result
+ Generic type parameter
+ The class/type to start with
+ The evaluation function returning T
+ Returns the first non null result or null with no match
+
+
+
+ Gets the reflection information for a directly declared field
+ The class/type where the field is defined
+ The name of the field
+ A field or null when type/name is null or when the field cannot be found
+
+
+
+ Gets the reflection information for a field by searching the type and all its super types
+ The class/type where the field is defined
+ The name of the field (case sensitive)
+ A field or null when type/name is null or when the field cannot be found
+
+
+
+ Gets the reflection information for a field
+ The class/type where the field is declared
+ The zero-based index of the field inside the class definition
+ A field or null when type is null or when the field cannot be found
+
+
+
+ Gets the reflection information for a directly declared property
+ The class/type where the property is declared
+ The name of the property (case sensitive)
+ A property or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for the getter method of a directly declared property
+ The class/type where the property is declared
+ The name of the property (case sensitive)
+ A method or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for the setter method of a directly declared property
+ The class/type where the property is declared
+ The name of the property (case sensitive)
+ A method or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for a property by searching the type and all its super types
+ The class/type
+ The name
+ A property or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for the getter method of a property by searching the type and all its super types
+ The class/type
+ The name
+ A method or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for the setter method of a property by searching the type and all its super types
+ The class/type
+ The name
+ A method or null when type/name is null or when the property cannot be found
+
+
+
+ Gets the reflection information for a directly declared method
+ The class/type where the method is declared
+ The name of the method (case sensitive)
+ Optional parameters to target a specific overload of the method
+ Optional list of types that define the generic version of the method
+ A method or null when type/name is null or when the method cannot be found
+
+
+
+ Gets the reflection information for a method by searching the type and all its super types
+ The class/type where the method is declared
+ The name of the method (case sensitive)
+ Optional parameters to target a specific overload of the method
+ Optional list of types that define the generic version of the method
+ A method or null when type/name is null or when the method cannot be found
+
+
+
+ Gets the reflection information for a method by searching the type and all its super types
+ The target method in the form TypeFullName:MethodName , where the type name matches a form recognized by Type.GetType like Some.Namespace.Type .
+ Optional parameters to target a specific overload of the method
+ Optional list of types that define the generic version of the method
+ A method or null when type/name is null or when the method cannot be found
+
+
+
+ Gets the names of all method that are declared in a type
+ The declaring class/type
+ A list of method names
+
+
+
+ Gets the names of all method that are declared in the type of the instance
+ An instance of the type to search in
+ A list of method names
+
+
+
+ Gets the names of all fields that are declared in a type
+ The declaring class/type
+ A list of field names
+
+
+
+ Gets the names of all fields that are declared in the type of the instance
+ An instance of the type to search in
+ A list of field names
+
+
+
+ Gets the names of all properties that are declared in a type
+ The declaring class/type
+ A list of property names
+
+
+
+ Gets the names of all properties that are declared in the type of the instance
+ An instance of the type to search in
+ A list of property names
+
+
+
+ Gets the type of any class member of
+ A member
+ The class/type of this member
+
+
+
+ Test if a class member is actually an concrete implementation
+ A member
+ True if the member is a declared
+
+
+
+ Gets the real implementation of a class member
+ A member
+ The member itself if its declared. Otherwise the member that is actually implemented in some base type
+
+
+
+ Gets the reflection information for a directly declared constructor
+ The class/type where the constructor is declared
+ Optional parameters to target a specific overload of the constructor
+ Optional parameters to only consider static constructors
+ A constructor info or null when type is null or when the constructor cannot be found
+
+
+
+ Gets the reflection information for a constructor by searching the type and all its super types
+ The class/type where the constructor is declared
+ Optional parameters to target a specific overload of the method
+ Optional parameters to only consider static constructors
+ A constructor info or null when type is null or when the method cannot be found
+
+
+
+ Gets reflection information for all declared constructors
+ The class/type where the constructors are declared
+ Optional parameters to only consider static constructors
+ A list of constructor infos
+
+
+
+ Gets reflection information for all declared methods
+ The class/type where the methods are declared
+ A list of methods
+
+
+
+ Gets reflection information for all declared properties
+ The class/type where the properties are declared
+ A list of properties
+
+
+
+ Gets reflection information for all declared fields
+ The class/type where the fields are declared
+ A list of fields
+
+
+
+ Gets the return type of a method or constructor
+ The method/constructor
+ The return type
+
+
+
+ Given a type, returns the first inner type matching a recursive search by name
+ The class/type to start searching at
+ The name of the inner type (case sensitive)
+ The inner type or null if type/name is null or if a type with that name cannot be found
+
+
+
+ Given a type, returns the first inner type matching a recursive search with a predicate
+ The class/type to start searching at
+ The predicate to search with
+ The inner type or null if type/predicate is null or if a type with that name cannot be found
+
+
+
+ Given a type, returns the first method matching a predicate
+ The class/type to start searching at
+ The predicate to search with
+ The method or null if type/predicate is null or if a type with that name cannot be found
+
+
+
+ Given a type, returns the first constructor matching a predicate
+ The class/type to start searching at
+ The predicate to search with
+ The constructor info or null if type/predicate is null or if a type with that name cannot be found
+
+
+
+ Given a type, returns the first property matching a predicate
+ The class/type to start searching at
+ The predicate to search with
+ The property or null if type/predicate is null or if a type with that name cannot be found
+
+
+
+ Returns an array containing the type of each object in the given array
+ An array of objects
+ An array of types or an empty array if parameters is null (if an object is null, the type for it will be object)
+
+
+
+ Creates an array of input parameters for a given method and a given set of potential inputs
+ The method/constructor you are planing to call
+ The possible input parameters in any order
+ An object array matching the method signature
+
+
+
+ A read/writable reference to an instance field
+ The class the field is defined in or "object" if type cannot be accessed at compile time
+ The type of the field
+ The runtime instance to access the field (leave empty for static fields)
+ An readable/assignable object representing the field
+
+
+
+ Creates an instance field reference
+ The class the field is defined in
+ The type of the field
+ The name of the field
+ A read and writable field reference delegate
+
+
+
+ Creates an instance field reference for a specific instance
+ The class the field is defined in
+ The type of the field
+ The instance
+ The name of the field
+ An readable/assignable object representing the field
+
+
+
+ Creates an instance field reference delegate for a private type
+ The type of the field
+ The class/type
+ The name of the field
+ A read and writable delegate
+
+
+
+ Creates an instance field reference delegate for a fieldinfo
+ The class the field is defined in or "object" if type cannot be accessed at compile time
+ The type of the field
+ The field of the field
+ A read and writable delegate
+
+
+
+ Creates a static field reference
+ The class the field is defined in or "object" if type cannot be accessed at compile time
+ The type of the field
+ The name of the field
+ An readable/assignable object representing the static field
+
+
+
+ Creates a static field reference
+ The type of the field
+ The class/type
+ The name of the field
+ An readable/assignable object representing the static field
+
+
+
+ Creates a static field reference
+ The class the field is defined in or "object" if type cannot be accessed at compile time
+ The type of the field
+ The field
+ An readable/assignable object representing the static field
+
+
+
+ A read/writable reference delegate to a static field
+ The type of the field
+ An readable/assignable object representing the static field
+
+
+
+ Creates a static field reference delegate
+ The type of the field
+ The field
+ A read and writable delegate
+
+
+
+ Creates a delegate to a given method
+ The delegate Type
+ The method to create a delegate from.
+
+ Only applies for instance methods. If null (default), returned delegate is an open (a.k.a. unbound) instance delegate
+ where an instance is supplied as the first argument to the delegate invocation; else, delegate is a closed (a.k.a. bound)
+ instance delegate where the delegate invocation always applies to the given .
+
+
+ Only applies for instance methods. If true (default) and is virtual, invocation of the delegate
+ calls the instance method virtually (the instance type's most-derived/overriden implementation of the method is called);
+ else, invocation of the delegate calls the exact specified (this is useful for calling base class methods)
+ Note: if false and is an interface method, an ArgumentException is thrown.
+
+ A delegate of given to given
+
+
+ Delegate invocation is more performant and more convenient to use than
+ at a one-time setup cost.
+
+
+ Works for both type of static and instance methods, both open and closed (a.k.a. unbound and bound) instance methods,
+ and both class and struct methods.
+
+
+
+
+
+ Creates a delegate for a given delegate definition, attributed with [ ]
+ The delegate Type, attributed with [ ]
+
+ Only applies for instance methods. If null (default), returned delegate is an open (a.k.a. unbound) instance delegate
+ where an instance is supplied as the first argument to the delegate invocation; else, delegate is a closed (a.k.a. bound)
+ instance delegate where the delegate invocation always applies to the given .
+
+ A delegate of given to the method specified via [ ]
+ attributes on
+
+ This calls with the method and virtualCall arguments
+ determined from the [ ] attributes on ,
+ and the given (for closed instance delegates).
+
+
+
+
+ Returns who called the current method
+ The calling method/constructor (excluding the caller)
+
+
+
+ Rethrows an exception while preserving its stack trace (throw statement typically clobbers existing stack traces)
+ The exception to rethrow
+
+
+
+ True if the current runtime is based on Mono, false otherwise (.NET)
+
+
+
+ True if the current runtime is .NET Framework, false otherwise (.NET Core or Mono, although latter isn't guaranteed)
+
+
+
+ True if the current runtime is .NET Core, false otherwise (Mono or .NET Framework)
+
+
+
+ Throws a missing member runtime exception
+ The type that is involved
+ A list of names
+
+
+
+ Gets default value for a specific type
+ The class/type
+ The default value
+
+
+
+ Creates an (possibly uninitialized) instance of a given type
+ The class/type
+ The new instance
+
+
+
+ Makes a deep copy of any object
+ The type of the instance that should be created
+ The original object
+ A copy of the original object but of type T
+
+
+
+ Makes a deep copy of any object
+ The type of the instance that should be created
+ The original object
+ [out] The copy of the original object
+ Optional value transformation function (taking a field name and src/dst instances)
+ The optional path root to start with
+
+
+
+ Makes a deep copy of any object
+ The original object
+ The type of the instance that should be created
+ Optional value transformation function (taking a field name and src/dst instances)
+ The optional path root to start with
+ The copy of the original object
+
+
+
+ Tests if a type is a struct
+ The type
+ True if the type is a struct
+
+
+
+ Tests if a type is a class
+ The type
+ True if the type is a class
+
+
+
+ Tests if a type is a value type
+ The type
+ True if the type is a value type
+
+
+
+ Tests if a type is an integer type
+ The type
+ True if the type represents some integer
+
+
+
+ Tests if a type is a floating point type
+ The type
+ True if the type represents some floating point
+
+
+
+ Tests if a type is a numerical type
+ The type
+ True if the type represents some number
+
+
+
+ Tests if a type is void
+ The type
+ True if the type is void
+
+
+
+ Test whether an instance is of a nullable type
+ Type of instance
+ An instance to test
+ True if instance is of nullable type, false if not
+
+
+
+ Tests whether a type or member is static, as defined in C#
+ The type or member
+ True if the type or member is static
+
+
+
+ Tests whether a type is static, as defined in C#
+ The type
+ True if the type is static
+
+
+
+ Tests whether a property is static, as defined in C#
+ The property
+ True if the property is static
+
+
+
+ Tests whether an event is static, as defined in C#
+ The event
+ True if the event is static
+
+
+
+ Calculates a combined hash code for an enumeration of objects
+ The objects
+ The hash code
+
+
+
+ General extensions for common cases
+
+
+
+ Joins an enumeration with a value converter and a delimiter to a string
+ The inner type of the enumeration
+ The enumeration
+ An optional value converter (from T to string)
+ An optional delimiter
+ The values joined into a string
+
+
+
+ Converts an array of types (for example methods arguments) into a human readable form
+ The array of types
+ A human readable description including brackets
+
+
+
+ A full description of a type
+ The type
+ A human readable description
+
+
+
+ A a full description of a method or a constructor without assembly details but with generics
+ The method/constructor
+ A human readable description
+
+
+
+ A helper converting parameter infos to types
+ The array of parameter infos
+ An array of types
+
+
+
+ A helper to access a value via key from a dictionary
+ The key type
+ The value type
+ The dictionary
+ The key
+ The value for the key or the default value (of T) if that key does not exist
+
+
+
+ A helper to access a value via key from a dictionary with extra casting
+ The value type
+ The dictionary
+ The key
+ The value for the key or the default value (of T) if that key does not exist or cannot be cast to T
+
+
+
+ Escapes Unicode and ASCII non printable characters
+ The string to convert
+ The string to convert
+ A string literal surrounded by
+
+
+
+ Extensions for
+
+
+
+ Shortcut for testing whether the operand is equal to a non-null value
+ The
+ The value
+ True if the operand has the same type and is equal to the value
+
+
+
+ Shortcut for testing whether the operand is equal to a non-null value
+ The
+ The value
+ True if the operand is equal to the value
+ This is an optimized version of for
+
+
+
+ Shortcut for code.opcode == opcode && code.OperandIs(operand)
+ The
+ The
+ The operand value
+ True if the opcode is equal to the given opcode and the operand has the same type and is equal to the given operand
+
+
+
+ Shortcut for code.opcode == opcode && code.OperandIs(operand)
+ The
+ The
+ The operand value
+ True if the opcode is equal to the given opcode and the operand is equal to the given operand
+ This is an optimized version of for
+
+
+
+ Tests for any form of Ldarg*
+ The
+ The (optional) index
+ True if it matches one of the variations
+
+
+
+ Tests for Ldarga/Ldarga_S
+ The
+ The (optional) index
+ True if it matches one of the variations
+
+
+
+ Tests for Starg/Starg_S
+ The
+ The (optional) index
+ True if it matches one of the variations
+
+
+
+ Tests for any form of Ldloc*
+ The
+ The optional local variable
+ True if it matches one of the variations
+
+
+
+ Tests for any form of Stloc*
+ The
+ The optional local variable
+ True if it matches one of the variations
+
+
+
+ Tests if the code instruction branches
+ The
+ The label if the instruction is a branch operation or if not
+ True if the instruction branches
+
+
+
+ Tests if the code instruction calls the method/constructor
+ The
+ The method
+ True if the instruction calls the method or constructor
+
+
+
+ Tests if the code instruction loads a constant
+ The
+ True if the instruction loads a constant
+
+
+
+ Tests if the code instruction loads an integer constant
+ The
+ The integer constant
+ True if the instruction loads the constant
+
+
+
+ Tests if the code instruction loads a floating point constant
+ The
+ The floating point constant
+ True if the instruction loads the constant
+
+
+
+ Tests if the code instruction loads an enum constant
+ The
+ The enum
+ True if the instruction loads the constant
+
+
+
+ Tests if the code instruction loads a field
+ The
+ The field
+ Set to true if the address of the field is loaded
+ True if the instruction loads the field
+
+
+
+ Tests if the code instruction stores a field
+ The
+ The field
+ True if the instruction stores this field
+
+
+
+ Adds labels to the code instruction and return it
+ The
+ One or several to add
+ The same code instruction
+
+
+ Adds labels to the code instruction and return it
+ The
+ An enumeration of
+ The same code instruction
+
+
+ Extracts all labels from the code instruction and returns them
+ The
+ A list of
+
+
+ Moves all labels from the code instruction to a different one
+ The to move the labels from
+ The to move the labels to
+ The code instruction labels were moved from (now empty)
+
+
+ Moves all labels from a different code instruction to the current one
+ The to move the labels from
+ The to move the labels to
+ The code instruction that received the labels
+
+
+ Adds ExceptionBlocks to the code instruction and return it
+ The
+ One or several to add
+ The same code instruction
+
+
+ Adds ExceptionBlocks to the code instruction and return it
+ The
+ An enumeration of
+ The same code instruction
+
+
+ Extracts all ExceptionBlocks from the code instruction and returns them
+ The
+ A list of
+
+
+ Moves all ExceptionBlocks from the code instruction to a different one
+ The to move the ExceptionBlocks from
+ The to move the ExceptionBlocks to
+ The code instruction blocks were moved from (now empty)
+
+
+ Moves all ExceptionBlocks from a different code instruction to the current one
+ The to move the ExceptionBlocks from
+ The to move the ExceptionBlocks to
+ The code instruction that received the blocks
+
+
+ General extensions for collections
+
+
+
+ A simple way to execute code for every element in a collection
+ The inner type of the collection
+ The collection
+ The action to execute
+
+
+
+ A simple way to execute code for elements in a collection matching a condition
+ The inner type of the collection
+ The collection
+ The predicate
+ The action to execute
+
+
+
+ A helper to add an item to a collection
+ The inner type of the collection
+ The collection
+ The item to add
+ The collection containing the item
+
+
+
+ A helper to add an item to an array
+ The inner type of the collection
+ The array
+ The item to add
+ The array containing the item
+
+
+
+ A helper to add items to an array
+ The inner type of the collection
+ The array
+ The items to add
+ The array containing the items
+
+
+
+ General extensions for collections
+
+
+
+ Tests a class member if it has an IL method body (external methods for example don't have a body)
+ The member to test
+ Returns true if the member has an IL body or false if not
+
+
+ A file log for debugging
+
+
+
+ Full pathname of the log file, defaults to a file called harmony.log.txt on your Desktop
+
+
+
+ The indent character. The default is tab
+
+
+
+ The current indent level
+
+
+
+ Changes the indentation level
+ The value to add to the indentation level
+
+
+
+ Log a string in a buffered way. Use this method only if you are sure that FlushBuffer will be called
+ or else logging information is incomplete in case of a crash
+ The string to log
+
+
+
+ Logs a list of string in a buffered way. Use this method only if you are sure that FlushBuffer will be called
+ or else logging information is incomplete in case of a crash
+ A list of strings to log (they will not be re-indented)
+
+
+
+ Returns the log buffer and optionally empties it
+ True to empty the buffer
+ The buffer.
+
+
+
+ Replaces the buffer with new lines
+ The lines to store
+
+
+
+ Flushes the log buffer to disk (use in combination with LogBuffered)
+
+
+
+ Log a string directly to disk. Slower method that prevents missing information in case of a crash
+ The string to log.
+
+
+
+ Resets and deletes the log
+
+
+
+ Logs some bytes as hex values
+ The pointer to some memory
+ The length of bytes to log
+
+
+
+ A helper class to retrieve reflection info for non-private methods
+
+
+
+ Given a lambda expression that calls a method, returns the method info
+ The lambda expression using the method
+ The method in the lambda expression
+
+
+
+ Given a lambda expression that calls a method, returns the method info
+ The generic type
+ The lambda expression using the method
+ The method in the lambda expression
+
+
+
+ Given a lambda expression that calls a method, returns the method info
+ The generic type
+ The generic result type
+ The lambda expression using the method
+ The method in the lambda expression
+
+
+
+ Given a lambda expression that calls a method, returns the method info
+ The lambda expression using the method
+ The method in the lambda expression
+
+
+
+ A reflection helper to read and write private elements
+ The result type defined by GetValue()
+
+
+
+ Creates a traverse instance from an existing instance
+ The existing instance
+
+
+
+ Gets/Sets the current value
+ The value to read or write
+
+
+
+ A reflection helper to read and write private elements
+
+
+
+ Creates a new traverse instance from a class/type
+ The class/type
+ A instance
+
+
+
+ Creates a new traverse instance from a class T
+ The class
+ A instance
+
+
+
+ Creates a new traverse instance from an instance
+ The object
+ A instance
+
+
+
+ Creates a new traverse instance from a named type
+ The type name, for format see
+ A instance
+
+
+
+ Creates a new and empty traverse instance
+
+
+
+ Creates a new traverse instance from a class/type
+ The class/type
+
+
+
+ Creates a new traverse instance from an instance
+ The object
+
+
+
+ Gets the current value
+ The value
+
+
+
+ Gets the current value
+ The type of the value
+ The value
+
+
+
+ Invokes the current method with arguments and returns the result
+ The method arguments
+ The value returned by the method
+
+
+
+ Invokes the current method with arguments and returns the result
+ The type of the value
+ The method arguments
+ The value returned by the method
+
+
+
+ Sets a value of the current field or property
+ The value
+ The same traverse instance
+
+
+
+ Gets the type of the current field or property
+ The type
+
+
+
+ Moves the current traverse instance to a inner type
+ The type name
+ A traverse instance
+
+
+
+ Moves the current traverse instance to a field
+ The type name
+ A traverse instance
+
+
+
+ Moves the current traverse instance to a field
+ The type of the field
+ The type name
+ A traverse instance
+
+
+
+ Gets all fields of the current type
+ A list of field names
+
+
+
+ Moves the current traverse instance to a property
+ The type name
+ Optional property index
+ A traverse instance
+
+
+
+ Moves the current traverse instance to a field
+ The type of the property
+ The type name
+ Optional property index
+ A traverse instance
+
+
+
+ Gets all properties of the current type
+ A list of property names
+
+
+
+ Moves the current traverse instance to a method
+ The name of the method
+ The arguments defining the argument types of the method overload
+ A traverse instance
+
+
+
+ Moves the current traverse instance to a method
+ The name of the method
+ The argument types of the method
+ The arguments for the method
+ A traverse instance
+
+
+
+ Gets all methods of the current type
+ A list of method names
+
+
+
+ Checks if the current traverse instance is for a field
+ True if its a field
+
+
+
+ Checks if the current traverse instance is for a property
+ True if its a property
+
+
+
+ Checks if the current traverse instance is for a method
+ True if its a method
+
+
+
+ Checks if the current traverse instance is for a type
+ True if its a type
+
+
+
+ Iterates over all fields of the current type and executes a traverse action
+ Original object
+ The action receiving a instance for each field
+
+
+
+ Iterates over all fields of the current type and executes a traverse action
+ Original object
+ Target object
+ The action receiving a pair of instances for each field pair
+
+
+
+ Iterates over all fields of the current type and executes a traverse action
+ Original object
+ Target object
+ The action receiving a dot path representing the field pair and the instances
+
+
+
+ Iterates over all properties of the current type and executes a traverse action
+ Original object
+ The action receiving a instance for each property
+
+
+
+ Iterates over all properties of the current type and executes a traverse action
+ Original object
+ Target object
+ The action receiving a pair of instances for each property pair
+
+
+
+ Iterates over all properties of the current type and executes a traverse action
+ Original object
+ Target object
+ The action receiving a dot path representing the property pair and the instances
+
+
+
+ A default field action that copies fields to fields
+
+
+
+ Returns a string that represents the current traverse
+ A string representation
+
+
+
+