Decompiled source of AngelaBoobs v2.0.0

angelaboobs.dll

Decompiled a year ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using Nessie.ATLYSS.EasySettings;
using Nessie.ATLYSS.EasySettings.UIElements;
using UnityEngine;
using UnityEngine.Events;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: IgnoresAccessChecksTo("Assembly-CSharp")]
[assembly: AssemblyCompany("angelaboobs")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+f7eedfcffe875e5868049395b47ba5cd87e5346f")]
[assembly: AssemblyProduct("angelaboobs")]
[assembly: AssemblyTitle("angelaboobs")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

		public NullableAttribute(byte P_0)
		{
			NullableFlags = new byte[1] { P_0 };
		}

		public NullableAttribute(byte[] P_0)
		{
			NullableFlags = P_0;
		}
	}
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableContextAttribute : Attribute
	{
		public readonly byte Flag;

		public NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
internal static class LCMPluginInfo
{
	public const string PLUGIN_GUID = "angelaboobs";

	public const string PLUGIN_NAME = "angelaboobs";

	public const string PLUGIN_VERSION = "1.0.0";
}
namespace angelaboobs
{
	[BepInPlugin("angelaboobs", "angelaboobs", "1.0.0")]
	public class AngelaBoobsBase : BaseUnityPlugin
	{
		public enum TexturesEnum
		{
			Bell,
			Eye,
			Eye2,
			Eye3,
			Eye4,
			Eye5,
			EyeDown,
			EyeLeft,
			EyeRight,
			EyePissed,
			Face,
			FaceOpenMouth,
			Red,
			Skirt,
			Base,
			Bottomless,
			Nude,
			Topless,
			Tail,
			Blu,
			Blue3,
			Blui2,
			BookSpine,
			BookCover,
			Glyph,
			Shadow,
			FacePic1,
			FacePic2,
			FacePic3
		}

		[HarmonyPatch(typeof(NetNPC), "Start")]
		public static class AddNetNPCPatch
		{
			[HarmonyPostfix]
			public static void NetNPCAwakePatch(NetNPC __instance)
			{
				//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
				//IL_0130: Unknown result type (might be due to invalid IL or missing references)
				//IL_013c: Unknown result type (might be due to invalid IL or missing references)
				//IL_018d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0199: Unknown result type (might be due to invalid IL or missing references)
				try
				{
					if (!((object)__instance).ToString().Contains("_npc_Angela"))
					{
						return;
					}
					Log.LogInfo((object)"Angela located");
					AngelaSliderController = ((Component)__instance).gameObject.AddComponent<AngelaSliderController>();
					eyeController = ((Component)((Component)__instance).transform.Find("_visual")).GetComponent<TextureChangeAnimEvent>();
					ApplyEyeTexturesToEyeController();
					DialogTrigger component = ((Component)((Component)__instance).transform.Find("_dialogTrigger")).GetComponent<DialogTrigger>();
					DialogBranch[] dialogBranches = component._scriptDialogData._dialogBranches;
					foreach (DialogBranch val in dialogBranches)
					{
						Dialog[] dialogs = val.dialogs;
						foreach (Dialog val2 in dialogs)
						{
							DialogList.Add(val2);
							if (((Object)val2.facepic).name == "facepic_angela01")
							{
								facepic1Sprite = Sprite.Create(Textures[26], val2.facepic.rect, val2.facepic.pivot, val2.facepic.pixelsPerUnit, 0u);
								val2.facepic = facepic1Sprite;
							}
							else if (((Object)val2.facepic).name == "facepic_angela02")
							{
								facepic2Sprite = Sprite.Create(Textures[27], val2.facepic.rect, val2.facepic.pivot, val2.facepic.pixelsPerUnit, 0u);
								val2.facepic = facepic2Sprite;
							}
							else if (((Object)val2.facepic).name == "facepic_angela03")
							{
								facepic3Sprite = Sprite.Create(Textures[28], val2.facepic.rect, val2.facepic.pivot, val2.facepic.pixelsPerUnit, 0u);
								val2.facepic = facepic3Sprite;
							}
						}
					}
					Transform val3 = ((Component)__instance).transform.Find("_visual").Find("angela_mesh");
					SkinnedMeshRenderer component2 = ((Component)val3.Find("angela_boobs")).GetComponent<SkinnedMeshRenderer>();
					component2.sharedMesh = _newBoobs;
					SkinnedMeshRenderer component3 = ((Component)val3.Find("angela_base")).GetComponent<SkinnedMeshRenderer>();
					component3.sharedMesh = _newBody;
					SkinnedMeshRenderer component4 = ((Component)val3.Find("angela_robeSkirt")).GetComponent<SkinnedMeshRenderer>();
					component4.sharedMesh = _newSkirt;
					SkinnedMeshRenderer component5 = ((Component)val3.Find("angela_arms")).GetComponent<SkinnedMeshRenderer>();
					SkinnedMeshRenderer component6 = ((Component)val3.Find("angela_ears")).GetComponent<SkinnedMeshRenderer>();
					SkinnedMeshRenderer component7 = ((Component)val3.Find("angela_eyes")).GetComponent<SkinnedMeshRenderer>();
					SkinnedMeshRenderer component8 = ((Component)val3.Find("angela_feet")).GetComponent<SkinnedMeshRenderer>();
					SkinnedMeshRenderer component9 = ((Component)val3.Find("angela_hairTuft")).GetComponent<SkinnedMeshRenderer>();
					SkinnedMeshRenderer component10 = ((Component)val3.Find("angela_horns")).GetComponent<SkinnedMeshRenderer>();
					SkinnedMeshRenderer component11 = ((Component)val3.Find("angela_necklace")).GetComponent<SkinnedMeshRenderer>();
					SkinnedMeshRenderer component12 = ((Component)val3.Find("angela_tail")).GetComponent<SkinnedMeshRenderer>();
					MeshRenderer component13 = ((Component)val3.Find("Armature_character").Find("masterBone").Find("Quad")
						.Find("Quad_01")).GetComponent<MeshRenderer>();
					Transform val4 = val3.Find("Armature_character").Find("masterBone").Find("hipCtrl")
						.Find("hip")
						.Find("lowBody")
						.Find("midBody")
						.Find("torso")
						.Find("shoulder.l")
						.GetChild(0)
						.GetChild(0)
						.GetChild(0)
						.GetChild(0)
						.Find("bookProp_01");
					MeshRenderer component14 = ((Component)val4.Find("prop_book_L")).GetComponent<MeshRenderer>();
					MeshRenderer component15 = ((Component)val4.Find("prop_book_R")).GetComponent<MeshRenderer>();
					MeshRenderer component16 = ((Component)((Component)__instance).transform.Find("_visual").Find("_shadowProjection").GetChild(0)).GetComponent<MeshRenderer>();
					DynamicBone boobBoneL = __instance._jiggleBones[2];
					DynamicBone boobBoneR = __instance._jiggleBones[3];
					AngelaSliderController.boobs = component2;
					AngelaSliderController.torso = component3;
					AngelaSliderController.skirt = component4;
					AngelaSliderController.arms = component5;
					AngelaSliderController.ears = component6;
					AngelaSliderController.eyes = component7;
					AngelaSliderController.feet = component8;
					AngelaSliderController.hairTuft = component9;
					AngelaSliderController.horns = component10;
					AngelaSliderController.necklace = component11;
					AngelaSliderController.tail = component12;
					AngelaSliderController.glyph = component13;
					AngelaSliderController.bookL = component14;
					AngelaSliderController.bookR = component15;
					AngelaSliderController.shadow = component16;
					AngelaSliderController.boobBoneL = boobBoneL;
					AngelaSliderController.boobBoneR = boobBoneR;
					AngelaSliderController.ApplySettings();
					Log.LogInfo((object)"Angela body patched!");
				}
				catch (Exception ex)
				{
					Log.LogError((object)ex);
				}
			}
		}

		[HarmonyPatch(typeof(VisualManager), "Apply_FilteringMode")]
		public static class ChangeFilteringModePatch
		{
			[HarmonyPostfix]
			public static void FilteringModePatch(FilterMode _filterMode)
			{
				//IL_000f: Unknown result type (might be due to invalid IL or missing references)
				Texture2D[] textures = Textures;
				foreach (Texture2D val in textures)
				{
					((Texture)val).filterMode = _filterMode;
					((Texture)val).anisoLevel = 16;
				}
			}
		}

		internal static ManualLogSource Log = null;

		private static Mesh _newBoobs;

		private static Mesh _newBody;

		private static Mesh _newSkirt;

		public static Sprite facepic1Sprite;

		public static Sprite facepic2Sprite;

		public static Sprite facepic3Sprite;

		private string texturePath;

		public static Dictionary<string, string> textureDictionary = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
		{
			{ "bell", "angelaBellTex.png" },
			{ "eye", "angelaEyeTex.png" },
			{ "eye2", "angelaEyeTex2.png" },
			{ "eye3", "angelaEyeTex3.png" },
			{ "eye4", "angelaEyeTex4.png" },
			{ "eye5", "angelaEyeTex_5.png" },
			{ "eyedown", "angelaEyeTex_down.png" },
			{ "eyeleft", "angelaEyeTex_L.png" },
			{ "eyeright", "angelaEyeTex_R.png" },
			{ "eyepissed", "angelaEyeTex_pissed.png" },
			{ "face", "angelaFaceTex.png" },
			{ "faceopenmouth", "angelaFaceTex_openMouth.png" },
			{ "red", "angelaRed.png" },
			{ "skirt", "angelaTex03.png" },
			{ "base", "angelaTex_01_base.png" },
			{ "bottomless", "angelaTex_01_bottomless.png" },
			{ "nude", "angelaTex_01_nude.png" },
			{ "topless", "angelaTex_01_topless.png" },
			{ "tail", "angelaTex_02.png" },
			{ "blu", "angelaTex_blu.png" },
			{ "blue3", "blue3.png" },
			{ "blui2", "blui2.png" },
			{ "bookspine", "book_spineTex.png" },
			{ "bookcover", "bookCoverTex1.png" },
			{ "glyph", "tomeGlyph.png" },
			{ "shadow", "shadow.png" },
			{ "facepic1", "facepic_angela01.png" },
			{ "facepic2", "facepic_angela02.png" },
			{ "facepic3", "facepic_angela03.png" }
		};

		public static readonly Texture2D[] Textures = (Texture2D[])(object)new Texture2D[textureDictionary.Count];

		public List<string> textureFolderNames = new List<string>();

		public int selectedTexture;

		internal static ConfigEntry<int> textureSelector;

		internal static ConfigEntry<float> nippleInnie;

		internal static ConfigEntry<float> nippleSize;

		internal static ConfigEntry<float> boobSmall;

		internal static ConfigEntry<float> boobLarge;

		internal static ConfigEntry<float> nippleGone;

		internal static ConfigEntry<bool> topless;

		internal static ConfigEntry<bool> bottomless;

		internal static ConfigEntry<bool> nippleInnieWhenClothed;

		internal static ConfigEntry<bool> nippleGoneWhenClothed;

		internal static ConfigEntry<float> assLarge;

		internal static ConfigEntry<float> thighsThick;

		private static AtlyssDropdown textureDropdown;

		public static AngelaSliderController AngelaSliderController;

		public static TextureChangeAnimEvent eyeController;

		internal static List<Dialog> DialogList = new List<Dialog>();

		private void Awake()
		{
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_0082: Expected O, but got Unknown
			//IL_008e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Expected O, but got Unknown
			new Harmony("ry.angelaboobs").PatchAll();
			Log = ((BaseUnityPlugin)this).Logger;
			texturePath = Path.Combine(Paths.ConfigPath, "NPCNSFWModFiles", "Angela");
			if (Utility.IsNullOrWhiteSpace(texturePath))
			{
				texturePath = Path.Combine(((BaseUnityPlugin)this).Info.Location, "config", "NPCNSFWModFiles", "Angela");
			}
			InitConfig();
			Settings.OnInitialized.AddListener(new UnityAction(AddSettings));
			Settings.OnApplySettings.AddListener((UnityAction)delegate
			{
				textureSelector.Value = selectedTexture;
				((BaseUnityPlugin)this).Config.Save();
				LoadTexturesIntoVariables();
				if ((Object)(object)AngelaSliderController != (Object)null)
				{
					AngelaSliderController.ApplySettings();
				}
				if ((Object)(object)eyeController != (Object)null)
				{
					ApplyEyeTexturesToEyeController();
				}
			});
			try
			{
				DirectoryInfo[] directories = new DirectoryInfo(texturePath).GetDirectories();
				for (int i = 0; i < directories.Length; i++)
				{
					Log.LogInfo((object)("Loaded " + directories[i].Name + " texture group"));
					textureFolderNames.Add(directories[i].Name);
				}
				if (selectedTexture > directories.Length - 1)
				{
					selectedTexture = directories.Length - 1;
				}
				LoadTexturesIntoVariables();
			}
			catch (Exception ex)
			{
				Log.LogError((object)("Unable to find textures in path " + texturePath + ". Continuing."));
				Log.LogError((object)ex.ToString());
			}
			try
			{
				AssetBundle val = AssetBundle.LoadFromFile(((BaseUnityPlugin)this).Info.Location.Replace("angelaboobs.dll", "angelaboobs.unity3d"));
				_newBoobs = val.LoadAsset<Mesh>("angela_boobs");
				_newBody = val.LoadAsset<Mesh>("angela_base");
				_newSkirt = val.LoadAsset<Mesh>("angela_robeSkirt");
			}
			catch (Exception ex2)
			{
				Log.LogError((object)("Unable to find angelaboobs.unity3d in " + ((BaseUnityPlugin)this).Info.Location + ". Patcher will not run correctly."));
				Log.LogError((object)ex2.ToString());
			}
			Log.LogInfo((object)"Plugin angelaboobs version 1.0.0 is loaded!");
		}

		private Texture2D LoadTexture(string fullPath, string objname)
		{
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Expected O, but got Unknown
			byte[] array = File.ReadAllBytes(fullPath);
			Texture2D val = new Texture2D(128, 128, (TextureFormat)5, false)
			{
				name = objname,
				anisoLevel = 16,
				filterMode = (FilterMode)0,
				mipMapBias = 0f
			};
			ImageConversion.LoadImage(val, array, false);
			return val;
		}

		private static void ApplyEyeTexturesToEyeController()
		{
			eyeController._textureStructs[0]._texture = (Texture)(object)Textures[1];
			eyeController._textureStructs[1]._texture = (Texture)(object)Textures[7];
			eyeController._textureStructs[2]._texture = (Texture)(object)Textures[8];
			eyeController._textureStructs[3]._texture = (Texture)(object)Textures[6];
			eyeController._textureStructs[4]._texture = (Texture)(object)Textures[3];
			eyeController._textureStructs[5]._texture = (Texture)(object)Textures[2];
			eyeController._textureStructs[6]._texture = (Texture)(object)Textures[9];
			eyeController._textureStructs[7]._texture = (Texture)(object)Textures[4];
			eyeController._textureStructs[8]._texture = (Texture)(object)Textures[5];
		}

		private void LoadTexturesIntoVariables()
		{
			Log.LogInfo((object)"Loading textures...");
			for (int i = 0; i < Textures.Length; i++)
			{
				TexturesEnum texturesEnum = (TexturesEnum)i;
				Textures[i] = LoadTextureOrDefault(texturesEnum.ToString());
			}
			Log.LogInfo((object)"Loaded textures");
		}

		private Texture2D LoadTextureOrDefault(string textureType)
		{
			Log.LogInfo((object)("Loading texture " + textureDictionary[textureType]));
			string text = Path.Combine(texturePath, textureFolderNames[selectedTexture], textureDictionary[textureType]);
			FileInfo fileInfo = new FileInfo(text);
			return fileInfo.Exists ? LoadTexture(text, textureDictionary[textureType]) : LoadTexture(Path.Combine(texturePath, "Default", textureDictionary[textureType]), textureDictionary[textureType]);
		}

		private void InitConfig()
		{
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0010: Expected O, but got Unknown
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Expected O, but got Unknown
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Expected O, but got Unknown
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0065: Expected O, but got Unknown
			//IL_0082: Unknown result type (might be due to invalid IL or missing references)
			//IL_0089: Expected O, but got Unknown
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Expected O, but got Unknown
			//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c1: Expected O, but got Unknown
			//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d3: Expected O, but got Unknown
			//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f9: Expected O, but got Unknown
			//IL_0104: Unknown result type (might be due to invalid IL or missing references)
			//IL_010b: Expected O, but got Unknown
			//IL_012a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0131: Expected O, but got Unknown
			//IL_013c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0143: Expected O, but got Unknown
			//IL_0166: Unknown result type (might be due to invalid IL or missing references)
			//IL_016d: Expected O, but got Unknown
			//IL_0178: Unknown result type (might be due to invalid IL or missing references)
			//IL_017f: Expected O, but got Unknown
			//IL_01a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a9: Expected O, but got Unknown
			//IL_01b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bb: Expected O, but got Unknown
			//IL_01de: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e5: Expected O, but got Unknown
			//IL_01f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f7: Expected O, but got Unknown
			//IL_021a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0221: Expected O, but got Unknown
			//IL_022c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0233: Expected O, but got Unknown
			//IL_0256: Unknown result type (might be due to invalid IL or missing references)
			//IL_025d: Expected O, but got Unknown
			//IL_0268: Unknown result type (might be due to invalid IL or missing references)
			//IL_026f: Expected O, but got Unknown
			//IL_0292: Unknown result type (might be due to invalid IL or missing references)
			//IL_0299: Expected O, but got Unknown
			//IL_02a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ab: Expected O, but got Unknown
			ConfigDefinition val = new ConfigDefinition("AngelaBoobs", "TextureSelection");
			ConfigDescription val2 = new ConfigDescription("TextureSelection", (AcceptableValueBase)null, Array.Empty<object>());
			textureSelector = ((BaseUnityPlugin)this).Config.Bind<int>(val, 0, val2);
			selectedTexture = textureSelector.Value;
			ConfigDefinition val3 = new ConfigDefinition("AngelaBoobs", "Topless");
			ConfigDescription val4 = new ConfigDescription("Topless", (AcceptableValueBase)null, Array.Empty<object>());
			topless = ((BaseUnityPlugin)this).Config.Bind<bool>(val3, false, val4);
			ConfigDefinition val5 = new ConfigDefinition("AngelaBoobs", "Bottomless");
			ConfigDescription val6 = new ConfigDescription("Bottomless", (AcceptableValueBase)null, Array.Empty<object>());
			bottomless = ((BaseUnityPlugin)this).Config.Bind<bool>(val5, false, val6);
			ConfigDefinition val7 = new ConfigDefinition("AngelaBoobs", "NippleInnieWhenClothed");
			ConfigDescription val8 = new ConfigDescription("Nipples flat when clothed", (AcceptableValueBase)null, Array.Empty<object>());
			nippleInnieWhenClothed = ((BaseUnityPlugin)this).Config.Bind<bool>(val7, true, val8);
			ConfigDefinition val9 = new ConfigDefinition("AngelaBoobs", "NippleGoneWhenClothed");
			ConfigDescription val10 = new ConfigDescription("Nipples gone when clothed", (AcceptableValueBase)null, Array.Empty<object>());
			nippleGoneWhenClothed = ((BaseUnityPlugin)this).Config.Bind<bool>(val9, false, val10);
			ConfigDefinition val11 = new ConfigDefinition("AngelaBoobs", "NippleInnie");
			ConfigDescription val12 = new ConfigDescription("Flat nipple tips", (AcceptableValueBase)null, Array.Empty<object>());
			nippleInnie = ((BaseUnityPlugin)this).Config.Bind<float>(val11, 0f, val12);
			ConfigDefinition val13 = new ConfigDefinition("AngelaBoobs", "NippleSize");
			ConfigDescription val14 = new ConfigDescription("Nipple size", (AcceptableValueBase)null, Array.Empty<object>());
			nippleSize = ((BaseUnityPlugin)this).Config.Bind<float>(val13, 0f, val14);
			ConfigDefinition val15 = new ConfigDefinition("AngelaBoobs", "BreastSmall");
			ConfigDescription val16 = new ConfigDescription("Smaller breasts", (AcceptableValueBase)null, Array.Empty<object>());
			boobSmall = ((BaseUnityPlugin)this).Config.Bind<float>(val15, 0f, val16);
			ConfigDefinition val17 = new ConfigDefinition("AngelaBoobs", "BreastLarge");
			ConfigDescription val18 = new ConfigDescription("Larger breasts", (AcceptableValueBase)null, Array.Empty<object>());
			boobLarge = ((BaseUnityPlugin)this).Config.Bind<float>(val17, 0f, val18);
			ConfigDefinition val19 = new ConfigDefinition("AngelaBoobs", "NippleGone");
			ConfigDescription val20 = new ConfigDescription("Make nipples go away", (AcceptableValueBase)null, Array.Empty<object>());
			nippleGone = ((BaseUnityPlugin)this).Config.Bind<float>(val19, 0f, val20);
			ConfigDefinition val21 = new ConfigDefinition("AngelaBoobs", "AssLarge");
			ConfigDescription val22 = new ConfigDescription("Make ass bigger", (AcceptableValueBase)null, Array.Empty<object>());
			assLarge = ((BaseUnityPlugin)this).Config.Bind<float>(val21, 0f, val22);
			ConfigDefinition val23 = new ConfigDefinition("AngelaBoobs", "ThighsThick");
			ConfigDescription val24 = new ConfigDescription("Make thighs thicker", (AcceptableValueBase)null, Array.Empty<object>());
			thighsThick = ((BaseUnityPlugin)this).Config.Bind<float>(val23, 0f, val24);
		}

		private void AddSettings()
		{
			SettingsTab modTab = Settings.ModTab;
			modTab.AddHeader("Angela Appearance Mod");
			textureDropdown = modTab.AddDropdown("Texture", textureFolderNames, selectedTexture);
			textureDropdown.OnValueChanged.AddListener((UnityAction<int>)delegate(int x)
			{
				selectedTexture = x;
			});
			modTab.AddToggle("Topless", topless);
			modTab.AddToggle("Bottomless", bottomless);
			modTab.AddSlider("Larger Breasts", boobLarge, false);
			modTab.AddSlider("Smaller Breasts", boobSmall, false);
			modTab.AddSlider("Nipple Size", nippleSize, false);
			modTab.AddSlider("Nipple Innie", nippleInnie, false);
			modTab.AddSlider("Larger Ass", assLarge, false);
			modTab.AddSlider("Thicker Thighs", thighsThick, false);
			modTab.AddToggle("Nipples flat when clothed", nippleInnieWhenClothed);
			modTab.AddToggle("Nipples gone when clothed", nippleGoneWhenClothed);
		}
	}
	public class AngelaSliderController : MonoBehaviour
	{
		public float nippleInnie;

		public float nippleSize;

		public float boobSmall;

		public float boobLarge;

		public float nippleGone;

		public float boobSag;

		public float assSize;

		public float thighsThick;

		public SkinnedMeshRenderer boobs;

		public SkinnedMeshRenderer torso;

		public SkinnedMeshRenderer skirt;

		public SkinnedMeshRenderer eyes;

		public SkinnedMeshRenderer feet;

		public SkinnedMeshRenderer hairTuft;

		public SkinnedMeshRenderer horns;

		public SkinnedMeshRenderer necklace;

		public SkinnedMeshRenderer arms;

		public SkinnedMeshRenderer ears;

		public SkinnedMeshRenderer tail;

		public MeshRenderer glyph;

		public MeshRenderer bookL;

		public MeshRenderer bookR;

		public MeshRenderer shadow;

		public DynamicBone boobBoneL;

		public DynamicBone boobBoneR;

		public void ApplySettings()
		{
			//IL_0861: Unknown result type (might be due to invalid IL or missing references)
			//IL_086b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0892: Unknown result type (might be due to invalid IL or missing references)
			//IL_089c: Unknown result type (might be due to invalid IL or missing references)
			//IL_08c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_08cd: Unknown result type (might be due to invalid IL or missing references)
			nippleGone = ((AngelaBoobsBase.nippleGoneWhenClothed.Value && !AngelaBoobsBase.topless.Value) ? 100f : (AngelaBoobsBase.nippleGone.Value * 100f));
			nippleInnie = ((AngelaBoobsBase.nippleInnieWhenClothed.Value && !AngelaBoobsBase.topless.Value) ? 100f : (AngelaBoobsBase.nippleInnie.Value * 100f));
			boobSmall = AngelaBoobsBase.boobSmall.Value * 100f;
			boobLarge = AngelaBoobsBase.boobLarge.Value * 100f;
			nippleSize = AngelaBoobsBase.nippleSize.Value * 100f;
			boobSag = (AngelaBoobsBase.topless.Value ? (100f - boobSmall + boobLarge / 2f) : 0f);
			assSize = AngelaBoobsBase.assLarge.Value * 100f;
			thighsThick = AngelaBoobsBase.thighsThick.Value * 100f;
			boobs.SetBlendShapeWeight(boobs.sharedMesh.GetBlendShapeIndex("key_nippleInnie"), nippleInnie);
			boobs.SetBlendShapeWeight(boobs.sharedMesh.GetBlendShapeIndex("key_boobSmall"), boobSmall);
			boobs.SetBlendShapeWeight(boobs.sharedMesh.GetBlendShapeIndex("key_boobSize"), boobLarge);
			boobs.SetBlendShapeWeight(boobs.sharedMesh.GetBlendShapeIndex("key_nippleSize"), nippleSize);
			boobs.SetBlendShapeWeight(boobs.sharedMesh.GetBlendShapeIndex("key_nippleGone"), nippleGone);
			boobs.SetBlendShapeWeight(boobs.sharedMesh.GetBlendShapeIndex("key_boobSag"), boobSag);
			torso.SetBlendShapeWeight(torso.sharedMesh.GetBlendShapeIndex("key_assSize"), assSize);
			torso.SetBlendShapeWeight(torso.sharedMesh.GetBlendShapeIndex("key_thighSize"), thighsThick);
			skirt.SetBlendShapeWeight(skirt.sharedMesh.GetBlendShapeIndex("key_thighSize"), thighsThick);
			if (AngelaBoobsBase.topless.Value)
			{
				if (AngelaBoobsBase.bottomless.Value)
				{
					((Renderer)boobs).material.mainTexture = (Texture)(object)AngelaBoobsBase.Textures[16];
					((Renderer)torso).materials[0].mainTexture = (Texture)(object)AngelaBoobsBase.Textures[16];
					((Renderer)arms).materials[0].mainTexture = (Texture)(object)AngelaBoobsBase.Textures[16];
					((Renderer)hairTuft).material.mainTexture = (Texture)(object)AngelaBoobsBase.Textures[16];
				}
				else
				{
					((Renderer)boobs).material.mainTexture = (Texture)(object)AngelaBoobsBase.Textures[17];
					((Renderer)torso).materials[0].mainTexture = (Texture)(object)AngelaBoobsBase.Textures[17];
					((Renderer)arms).materials[0].mainTexture = (Texture)(object)AngelaBoobsBase.Textures[17];
					((Renderer)hairTuft).material.mainTexture = (Texture)(object)AngelaBoobsBase.Textures[17];
				}
			}
			else if (AngelaBoobsBase.bottomless.Value)
			{
				((Renderer)boobs).material.mainTexture = (Texture)(object)AngelaBoobsBase.Textures[15];
				((Renderer)torso).materials[0].mainTexture = (Texture)(object)AngelaBoobsBase.Textures[15];
				((Renderer)arms).materials[0].mainTexture = (Texture)(object)AngelaBoobsBase.Textures[15];
				((Renderer)hairTuft).material.mainTexture = (Texture)(object)AngelaBoobsBase.Textures[15];
			}
			else
			{
				((Renderer)boobs).material.mainTexture = (Texture)(object)AngelaBoobsBase.Textures[14];
				((Renderer)torso).materials[0].mainTexture = (Texture)(object)AngelaBoobsBase.Textures[14];
				((Renderer)arms).materials[0].mainTexture = (Texture)(object)AngelaBoobsBase.Textures[14];
				((Renderer)hairTuft).material.mainTexture = (Texture)(object)AngelaBoobsBase.Textures[14];
			}
			((Renderer)torso).materials[1].mainTexture = (Texture)(object)AngelaBoobsBase.Textures[10];
			((Renderer)skirt).material.mainTexture = (Texture)(AngelaBoobsBase.bottomless.Value ? ((object)Texture2D.blackTexture) : ((object)AngelaBoobsBase.Textures[13]));
			((Renderer)arms).materials[1].mainTexture = (Texture)(object)AngelaBoobsBase.Textures[20];
			((Renderer)ears).materials[0].mainTexture = (Texture)(object)AngelaBoobsBase.Textures[18];
			((Renderer)ears).materials[1].mainTexture = (Texture)(object)AngelaBoobsBase.Textures[0];
			switch (((Object)((Renderer)eyes).material.mainTexture).name)
			{
			case "angelaEyeTex.png":
				((Renderer)eyes).material.mainTexture = (Texture)(object)AngelaBoobsBase.Textures[1];
				break;
			case "angelaEyeTex2.png":
				((Renderer)eyes).material.mainTexture = (Texture)(object)AngelaBoobsBase.Textures[2];
				break;
			case "angelaEyeTex3.png":
				((Renderer)eyes).material.mainTexture = (Texture)(object)AngelaBoobsBase.Textures[3];
				break;
			case "angelaEyeTex4.png":
				((Renderer)eyes).material.mainTexture = (Texture)(object)AngelaBoobsBase.Textures[4];
				break;
			case "angelaEyeTex_5.png":
				((Renderer)eyes).material.mainTexture = (Texture)(object)AngelaBoobsBase.Textures[5];
				break;
			case "angelaEyeTex_down.png":
				((Renderer)eyes).material.mainTexture = (Texture)(object)AngelaBoobsBase.Textures[6];
				break;
			case "angelaEyeTex_L.png":
				((Renderer)eyes).material.mainTexture = (Texture)(object)AngelaBoobsBase.Textures[7];
				break;
			case "angelaEyeTex_R.png":
				((Renderer)eyes).material.mainTexture = (Texture)(object)AngelaBoobsBase.Textures[8];
				break;
			case "angelaEyeTex_pissed.png":
				((Renderer)eyes).material.mainTexture = (Texture)(object)AngelaBoobsBase.Textures[9];
				break;
			}
			((Renderer)eyes).materials[1].mainTexture = (Texture)(object)AngelaBoobsBase.Textures[12];
			((Renderer)feet).materials[0].mainTexture = (Texture)(object)AngelaBoobsBase.Textures[21];
			((Renderer)feet).materials[1].mainTexture = (Texture)(object)AngelaBoobsBase.Textures[21];
			((Renderer)horns).material.mainTexture = (Texture)(object)AngelaBoobsBase.Textures[20];
			((Renderer)necklace).materials[0].mainTexture = (Texture)(object)AngelaBoobsBase.Textures[19];
			((Renderer)necklace).materials[1].mainTexture = (Texture)(object)AngelaBoobsBase.Textures[0];
			((Renderer)tail).materials[0].mainTexture = (Texture)(object)AngelaBoobsBase.Textures[18];
			((Renderer)tail).materials[1].mainTexture = (Texture)(object)AngelaBoobsBase.Textures[20];
			((Renderer)glyph).material.mainTexture = (Texture)(object)AngelaBoobsBase.Textures[24];
			((Renderer)bookL).materials[0].mainTexture = (Texture)(object)AngelaBoobsBase.Textures[22];
			((Renderer)bookL).materials[1].mainTexture = (Texture)(object)AngelaBoobsBase.Textures[23];
			((Renderer)bookR).materials[0].mainTexture = (Texture)(object)AngelaBoobsBase.Textures[22];
			((Renderer)bookR).materials[1].mainTexture = (Texture)(object)AngelaBoobsBase.Textures[23];
			((Renderer)shadow).material.mainTexture = (Texture)(object)AngelaBoobsBase.Textures[25];
			AngelaBoobsBase.facepic1Sprite = Sprite.Create(AngelaBoobsBase.Textures[26], AngelaBoobsBase.facepic1Sprite.rect, AngelaBoobsBase.facepic1Sprite.pivot, AngelaBoobsBase.facepic1Sprite.pixelsPerUnit, 0u);
			AngelaBoobsBase.facepic2Sprite = Sprite.Create(AngelaBoobsBase.Textures[27], AngelaBoobsBase.facepic2Sprite.rect, AngelaBoobsBase.facepic2Sprite.pivot, AngelaBoobsBase.facepic2Sprite.pixelsPerUnit, 0u);
			AngelaBoobsBase.facepic3Sprite = Sprite.Create(AngelaBoobsBase.Textures[28], AngelaBoobsBase.facepic3Sprite.rect, AngelaBoobsBase.facepic3Sprite.pivot, AngelaBoobsBase.facepic3Sprite.pixelsPerUnit, 0u);
			for (int i = 0; i < AngelaBoobsBase.DialogList.Count; i++)
			{
				if (((Object)AngelaBoobsBase.DialogList[i].facepic.texture).name == "facepic_angela01")
				{
					AngelaBoobsBase.DialogList[i].facepic = AngelaBoobsBase.facepic1Sprite;
				}
				else if (((Object)AngelaBoobsBase.DialogList[i].facepic.texture).name == "facepic_angela02")
				{
					AngelaBoobsBase.DialogList[i].facepic = AngelaBoobsBase.facepic2Sprite;
				}
				else if (((Object)AngelaBoobsBase.DialogList[i].facepic.texture).name == "facepic_angela03")
				{
					AngelaBoobsBase.DialogList[i].facepic = AngelaBoobsBase.facepic3Sprite;
				}
			}
			if (boobSmall > 0f && boobSmall > 50f)
			{
				_ = boobSmall;
				_ = 80f;
			}
		}
	}
}
namespace System.Runtime.CompilerServices
{
	[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
	internal sealed class IgnoresAccessChecksToAttribute : Attribute
	{
		public IgnoresAccessChecksToAttribute(string assemblyName)
		{
		}
	}
}