Decompiled source of MonkArmor v0.2.2

plugins\MonkArmor.dll

Decompiled a month ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using HarmonyLib;
using Jotunn;
using Jotunn.Entities;
using Jotunn.Managers;
using Jotunn.Utils;
using MonkArmor;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("JotunnModExample")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("JotunnModExample")]
[assembly: AssemblyCopyright("Copyright ©  2021")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("e3243d22-4307-4008-ba36-9f326008cde5")]
[assembly: AssemblyFileVersion("0.0.1.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.6.2", FrameworkDisplayName = ".NET Framework 4.6.2")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.0.1.0")]
public class SetEffect_MonkArmor : SE_Stats
{
	public override void ModifyAttack(SkillType skill, ref HitData hitData)
	{
		//IL_0000: Unknown result type (might be due to invalid IL or missing references)
		//IL_0003: Invalid comparison between Unknown and I4
		if ((int)skill == 11)
		{
			hitData.m_damage.m_damage += ((Character)Player.m_localPlayer).GetSkills().GetSkillLevel((SkillType)11) * global::MonkArmor.MonkArmor.MonkSetDamageSkillConfig.Value;
			HitData obj = hitData;
			obj.m_pushForce += ((Character)Player.m_localPlayer).GetSkills().GetSkillLevel((SkillType)11) * global::MonkArmor.MonkArmor.MonkSetPushForceConfig.Value;
		}
	}
}
namespace MonkArmor;

[BepInPlugin("org.bepinex.plugins.bid.monkarmor", "MonkArmor", "0.2.2")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
[NetworkCompatibility(/*Could not decode attribute arguments.*/)]
internal class MonkArmor : BaseUnityPlugin
{
	public const string PluginGUID = "org.bepinex.plugins.bid.monkarmor";

	public const string PluginName = "MonkArmor";

	public const string PluginVersion = "0.2.2";

	public static ConfigEntry<float> MonkSetDamageSkillConfig;

	public static ConfigEntry<float> MonkSetPushForceConfig;

	private readonly Harmony harmony = new Harmony("org.bepinex.plugins.bid.monkarmor");

	private void Awake()
	{
		//IL_008b: Unknown result type (might be due to invalid IL or missing references)
		AssetBundle val = AssetUtils.LoadAssetBundleFromResources("monkarmor");
		if ((Object)(object)val == (Object)null)
		{
			MonoBehaviour.print((object)"Error loading assetbundle monkarmor");
			return;
		}
		CreateConfigValues();
		AddStatusEffects();
		AddCustomItemConversions();
		AddItemsWithConfigs();
		try
		{
			AddItems(val);
			AddCreatures(val);
			AddPieces(val);
		}
		catch (Exception arg)
		{
			((BaseUnityPlugin)this).Logger.LogWarning((object)$"Exception caught while adding custom creatures: {arg}");
		}
		finally
		{
			val.Unload(false);
		}
		PrefabManager.OnVanillaPrefabsAvailable += AddClonedItems;
		AddRecipes();
		new Harmony("org.bepinex.plugins.bid.monkarmor").PatchAll();
	}

	private void OnDestroy()
	{
		harmony.UnpatchSelf();
	}

	private void CreateConfigValues()
	{
		//IL_002f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0034: Unknown result type (might be due to invalid IL or missing references)
		//IL_003c: Expected O, but got Unknown
		//IL_003c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0046: Expected O, but got Unknown
		//IL_006e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0073: Unknown result type (might be due to invalid IL or missing references)
		//IL_007b: Expected O, but got Unknown
		//IL_007b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0085: Expected O, but got Unknown
		((BaseUnityPlugin)this).Config.SaveOnConfigSet = true;
		MonkSetDamageSkillConfig = ((BaseUnityPlugin)this).Config.Bind<float>("Server config", "MonkSetEffectDamageModifier", 1f, new ConfigDescription("MonkSetEffect spirit damage + (unarmed skill * config value)", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
		{
			IsAdminOnly = true
		} }));
		MonkSetPushForceConfig = ((BaseUnityPlugin)this).Config.Bind<float>("Server config", "MonkSetEffectPushbackModifier", 1f, new ConfigDescription("MonkSetEffect pushback force + (unarmed skill * config value)", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes
		{
			IsAdminOnly = true
		} }));
		SynchronizationManager.OnConfigurationSynchronized += delegate(object obj, ConfigurationSynchronizationEventArgs attr)
		{
			if (attr.InitialSynchronization)
			{
				Logger.LogMessage((object)"Initial Config sync event received");
			}
			else
			{
				Logger.LogMessage((object)"Config sync event received");
			}
		};
	}

	private void AddStatusEffects()
	{
	}

	private void AddCustomItemConversions()
	{
	}

	private void AddItemsWithConfigs()
	{
	}

	private void AddClonedItems()
	{
		PrefabManager.OnVanillaPrefabsAvailable -= AddClonedItems;
	}

	private void AddItems(AssetBundle christianityAssetBundle)
	{
		//IL_000e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0014: Expected O, but got Unknown
		//IL_00f0: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f7: Expected O, but got Unknown
		//IL_0189: Unknown result type (might be due to invalid IL or missing references)
		//IL_0190: Expected O, but got Unknown
		//IL_01d9: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e0: Expected O, but got Unknown
		//IL_028a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0290: Expected O, but got Unknown
		//IL_02d0: Unknown result type (might be due to invalid IL or missing references)
		//IL_02d7: Expected O, but got Unknown
		//IL_0320: Unknown result type (might be due to invalid IL or missing references)
		//IL_0327: Expected O, but got Unknown
		//IL_03d1: Unknown result type (might be due to invalid IL or missing references)
		//IL_03d7: Expected O, but got Unknown
		//IL_0417: Unknown result type (might be due to invalid IL or missing references)
		//IL_041e: Expected O, but got Unknown
		//IL_0467: Unknown result type (might be due to invalid IL or missing references)
		//IL_046e: Expected O, but got Unknown
		//IL_0518: Unknown result type (might be due to invalid IL or missing references)
		//IL_051e: Expected O, but got Unknown
		//IL_055e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0565: Expected O, but got Unknown
		//IL_05ae: Unknown result type (might be due to invalid IL or missing references)
		//IL_05b5: Expected O, but got Unknown
		//IL_065f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0665: Expected O, but got Unknown
		//IL_06a5: Unknown result type (might be due to invalid IL or missing references)
		//IL_06ac: Expected O, but got Unknown
		//IL_06f5: Unknown result type (might be due to invalid IL or missing references)
		//IL_06fc: Expected O, but got Unknown
		//IL_07a5: Unknown result type (might be due to invalid IL or missing references)
		//IL_07ab: Expected O, but got Unknown
		//IL_07eb: Unknown result type (might be due to invalid IL or missing references)
		//IL_07f2: Expected O, but got Unknown
		//IL_083b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0842: Expected O, but got Unknown
		//IL_0869: Unknown result type (might be due to invalid IL or missing references)
		//IL_0870: Expected O, but got Unknown
		//IL_090a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0911: Expected O, but got Unknown
		//IL_0938: Unknown result type (might be due to invalid IL or missing references)
		//IL_093f: Expected O, but got Unknown
		//IL_09c3: Unknown result type (might be due to invalid IL or missing references)
		//IL_09ca: Expected O, but got Unknown
		GameObject val = christianityAssetBundle.LoadAsset<GameObject>("MonkRobe");
		CustomItem val2 = new CustomItem(val, true);
		ItemManager.Instance.AddItem(val2);
		Recipe obj = ScriptableObject.CreateInstance<Recipe>();
		((Object)obj).name = "MonkRobe";
		obj.m_item = val.GetComponent<ItemDrop>();
		obj.m_craftingStation = Mock<CraftingStation>.Create("piece_workbench");
		Requirement val3 = MockRequirement.Create("LinenThread", 10, true);
		val3.m_amountPerLevel = 10;
		Requirement val4 = MockRequirement.Create("Coins", 200, true);
		val4.m_amountPerLevel = 200;
		MockRequirement.Create("Ruby", 2, true).m_amountPerLevel = 2;
		Requirement val5 = MockRequirement.Create("AmberPearl", 2, true);
		val5.m_amountPerLevel = 2;
		Requirement val6 = MockRequirement.Create("FineWood", 1, true);
		val6.m_amountPerLevel = 1;
		List<Requirement> list = new List<Requirement> { val3, val4, val5, val6 };
		obj.m_resources = list.ToArray();
		CustomRecipe val7 = new CustomRecipe(obj, true, true);
		ItemManager.Instance.AddRecipe(val7);
		ItemManager.Instance.GetRecipe("MonkRobe");
		MonoBehaviour.print((object)"monk robe item added");
		FileInfo fileInfo = new FileInfo(Assembly.GetExecutingAssembly().Location);
		GameObject val8 = christianityAssetBundle.LoadAsset<GameObject>("MonkRobeAlter");
		val8.GetComponent<ItemDrop>().m_itemData.m_shared.m_name = "$item_monk_robedoubleaxe";
		string text = fileInfo.DirectoryName + "/MonkRobeSpriteAxe.png";
		val8.GetComponent<ItemDrop>().m_itemData.m_shared.m_icons[0] = AssetUtils.LoadSpriteFromFile(text);
		CustomItem val9 = new CustomItem(val8, true);
		ItemManager.Instance.AddItem(val9);
		Recipe obj2 = ScriptableObject.CreateInstance<Recipe>();
		((Object)obj2).name = "MonkRobeDoubleAxe";
		obj2.m_item = val8.GetComponent<ItemDrop>();
		obj2.m_craftingStation = Mock<CraftingStation>.Create("piece_workbench");
		obj2.m_resources = list.ToArray();
		CustomRecipe val10 = new CustomRecipe(obj2, true, true);
		ItemManager.Instance.AddRecipe(val10);
		MonoBehaviour.print((object)"monk robe double axe item added");
		GameObject val11 = PrefabManager.Instance.CreateClonedPrefab("MonkRobeSword", val8);
		val11.GetComponent<ItemDrop>().m_itemData.m_shared.m_name = "$item_monk_robesword";
		text = fileInfo.DirectoryName + "/MonkRobeSpriteSword.png";
		val11.GetComponent<ItemDrop>().m_itemData.m_shared.m_icons[0] = AssetUtils.LoadSpriteFromFile(text);
		text = fileInfo.DirectoryName + "/sword.png";
		Material[] array = (Material[])(object)new Material[1]
		{
			new Material(((Renderer)((Component)val11.transform.GetChild(0)).GetComponentInChildren<SkinnedMeshRenderer>()).sharedMaterial)
		};
		array[0].EnableKeyword("_EMISSION");
		array[0].SetTexture("_EmissionMap", (Texture)(object)AssetUtils.LoadTexture(text, true));
		((Renderer)((Component)val11.transform.GetChild(0)).GetComponentInChildren<SkinnedMeshRenderer>()).sharedMaterials = array;
		CustomItem val12 = new CustomItem(val11, true);
		ItemManager.Instance.AddItem(val12);
		Recipe obj3 = ScriptableObject.CreateInstance<Recipe>();
		((Object)obj3).name = "MonkRobeSword";
		obj3.m_item = val11.GetComponent<ItemDrop>();
		obj3.m_craftingStation = Mock<CraftingStation>.Create("piece_workbench");
		obj3.m_resources = list.ToArray();
		CustomRecipe val13 = new CustomRecipe(obj3, true, true);
		ItemManager.Instance.AddRecipe(val13);
		MonoBehaviour.print((object)"monk robe sword item added");
		GameObject val14 = PrefabManager.Instance.CreateClonedPrefab("MonkRobeBow", val8);
		val14.GetComponent<ItemDrop>().m_itemData.m_shared.m_name = "$item_monk_robebow";
		text = fileInfo.DirectoryName + "/MonkRobeSpriteBow.png";
		val14.GetComponent<ItemDrop>().m_itemData.m_shared.m_icons[0] = AssetUtils.LoadSpriteFromFile(text);
		text = fileInfo.DirectoryName + "/bow.png";
		array = (Material[])(object)new Material[1]
		{
			new Material(((Renderer)((Component)val14.transform.GetChild(0)).GetComponentInChildren<SkinnedMeshRenderer>()).sharedMaterial)
		};
		array[0].EnableKeyword("_EMISSION");
		array[0].SetTexture("_EmissionMap", (Texture)(object)AssetUtils.LoadTexture(text, true));
		((Renderer)((Component)val14.transform.GetChild(0)).GetComponentInChildren<SkinnedMeshRenderer>()).sharedMaterials = array;
		CustomItem val15 = new CustomItem(val14, true);
		ItemManager.Instance.AddItem(val15);
		Recipe obj4 = ScriptableObject.CreateInstance<Recipe>();
		((Object)obj4).name = "MonkRobeBow";
		obj4.m_item = val14.GetComponent<ItemDrop>();
		obj4.m_craftingStation = Mock<CraftingStation>.Create("piece_workbench");
		obj4.m_resources = list.ToArray();
		CustomRecipe val16 = new CustomRecipe(obj4, true, true);
		ItemManager.Instance.AddRecipe(val16);
		MonoBehaviour.print((object)"monk robe bow item added");
		GameObject val17 = PrefabManager.Instance.CreateClonedPrefab("MonkRobeHelmet", val8);
		val17.GetComponent<ItemDrop>().m_itemData.m_shared.m_name = "$item_monk_robehelmet";
		text = fileInfo.DirectoryName + "/MonkRobeSpriteHelmet.png";
		val17.GetComponent<ItemDrop>().m_itemData.m_shared.m_icons[0] = AssetUtils.LoadSpriteFromFile(text);
		text = fileInfo.DirectoryName + "/helmet.png";
		array = (Material[])(object)new Material[1]
		{
			new Material(((Renderer)((Component)val17.transform.GetChild(0)).GetComponentInChildren<SkinnedMeshRenderer>()).sharedMaterial)
		};
		array[0].EnableKeyword("_EMISSION");
		array[0].SetTexture("_EmissionMap", (Texture)(object)AssetUtils.LoadTexture(text, true));
		((Renderer)((Component)val17.transform.GetChild(0)).GetComponentInChildren<SkinnedMeshRenderer>()).sharedMaterials = array;
		CustomItem val18 = new CustomItem(val17, true);
		ItemManager.Instance.AddItem(val18);
		Recipe obj5 = ScriptableObject.CreateInstance<Recipe>();
		((Object)obj5).name = "MonkRobeHelmet";
		obj5.m_item = val17.GetComponent<ItemDrop>();
		obj5.m_craftingStation = Mock<CraftingStation>.Create("piece_workbench");
		obj5.m_resources = list.ToArray();
		CustomRecipe val19 = new CustomRecipe(obj5, true, true);
		ItemManager.Instance.AddRecipe(val19);
		MonoBehaviour.print((object)"monk robe helmet item added");
		GameObject val20 = PrefabManager.Instance.CreateClonedPrefab("MonkRobeShield", val8);
		val20.GetComponent<ItemDrop>().m_itemData.m_shared.m_name = "$item_monk_robeshield";
		text = fileInfo.DirectoryName + "/MonkRobeSpriteShield.png";
		val20.GetComponent<ItemDrop>().m_itemData.m_shared.m_icons[0] = AssetUtils.LoadSpriteFromFile(text);
		text = fileInfo.DirectoryName + "/shield.png";
		array = (Material[])(object)new Material[1]
		{
			new Material(((Renderer)((Component)val20.transform.GetChild(0)).GetComponentInChildren<SkinnedMeshRenderer>()).sharedMaterial)
		};
		array[0].EnableKeyword("_EMISSION");
		array[0].SetTexture("_EmissionMap", (Texture)(object)AssetUtils.LoadTexture(text, true));
		((Renderer)((Component)val20.transform.GetChild(0)).GetComponentInChildren<SkinnedMeshRenderer>()).sharedMaterials = array;
		CustomItem val21 = new CustomItem(val20, true);
		ItemManager.Instance.AddItem(val21);
		Recipe obj6 = ScriptableObject.CreateInstance<Recipe>();
		((Object)obj6).name = "MonkRobeShield";
		obj6.m_item = val20.GetComponent<ItemDrop>();
		obj6.m_craftingStation = Mock<CraftingStation>.Create("piece_workbench");
		obj6.m_resources = list.ToArray();
		CustomRecipe val22 = new CustomRecipe(obj6, true, true);
		ItemManager.Instance.AddRecipe(val22);
		MonoBehaviour.print((object)"monk robe shield item added");
		GameObject val23 = PrefabManager.Instance.CreateClonedPrefab("MonkRobeViking", val8);
		val23.GetComponent<ItemDrop>().m_itemData.m_shared.m_name = "$item_monk_robeviking";
		text = fileInfo.DirectoryName + "/MonkRobeSpriteViking.png";
		val20.GetComponent<ItemDrop>().m_itemData.m_shared.m_icons[0] = AssetUtils.LoadSpriteFromFile(text);
		text = fileInfo.DirectoryName + "/viking.png";
		array = (Material[])(object)new Material[1]
		{
			new Material(((Renderer)((Component)val23.transform.GetChild(0)).GetComponentInChildren<SkinnedMeshRenderer>()).sharedMaterial)
		};
		array[0].EnableKeyword("_EMISSION");
		array[0].SetTexture("_EmissionMap", (Texture)(object)AssetUtils.LoadTexture(text, true));
		((Renderer)((Component)val23.transform.GetChild(0)).GetComponentInChildren<SkinnedMeshRenderer>()).sharedMaterials = array;
		CustomItem val24 = new CustomItem(val23, true);
		ItemManager.Instance.AddItem(val24);
		Recipe obj7 = ScriptableObject.CreateInstance<Recipe>();
		((Object)obj7).name = "MonkRobeViking";
		obj7.m_item = val23.GetComponent<ItemDrop>();
		obj7.m_craftingStation = Mock<CraftingStation>.Create("piece_workbench");
		obj7.m_resources = list.ToArray();
		CustomRecipe val25 = new CustomRecipe(obj7, true, true);
		ItemManager.Instance.AddRecipe(val25);
		MonoBehaviour.print((object)"monk robe viking item added");
		GameObject val26 = christianityAssetBundle.LoadAsset<GameObject>("MonkPants");
		CustomItem val27 = new CustomItem(val26, true);
		ItemManager.Instance.AddItem(val27);
		Recipe obj8 = ScriptableObject.CreateInstance<Recipe>();
		((Object)obj8).name = "MonkPants";
		obj8.m_item = val26.GetComponent<ItemDrop>();
		obj8.m_craftingStation = Mock<CraftingStation>.Create("piece_workbench");
		Requirement val28 = MockRequirement.Create("DeerHide", 5, true);
		val28.m_amountPerLevel = 5;
		Requirement val29 = MockRequirement.Create("Silver", 2, true);
		val29.m_amountPerLevel = 2;
		list = new List<Requirement> { val3, val4, val28, val29 };
		obj8.m_resources = list.ToArray();
		val7 = new CustomRecipe(obj8, true, true);
		ItemManager.Instance.AddRecipe(val7);
		MonoBehaviour.print((object)"monk pants item added");
		GameObject val30 = christianityAssetBundle.LoadAsset<GameObject>("MonkHood");
		CustomItem val31 = new CustomItem(val30, true);
		ItemManager.Instance.AddItem(val31);
		Recipe obj9 = ScriptableObject.CreateInstance<Recipe>();
		((Object)obj9).name = "MonkHood";
		obj9.m_item = val30.GetComponent<ItemDrop>();
		obj9.m_craftingStation = Mock<CraftingStation>.Create("piece_workbench");
		Requirement val32 = MockRequirement.Create("LoxPelt", 2, true);
		val32.m_amountPerLevel = 2;
		list = new List<Requirement> { val3, val4, val32, val29 };
		obj9.m_resources = list.ToArray();
		val7 = new CustomRecipe(obj9, true, true);
		ItemManager.Instance.AddRecipe(val7);
		MonoBehaviour.print((object)"monk hood item added");
	}

	private void AddCreatures(AssetBundle christianityAssetBundle)
	{
	}

	private void AddPieces(AssetBundle christianityAssetBundle)
	{
	}

	private void AddRecipes()
	{
	}

	public static void debug(string text, Vector3 pos)
	{
	}
}