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 + + 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 + + + +