Decompiled source of TheVikingParty v4.2.0

VikingParty.dll

Decompiled 2 days ago
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Configuration;
using Jotunn;
using Jotunn.Configs;
using Jotunn.Entities;
using Jotunn.Managers;
using Jotunn.Utils;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("VikingParty")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("VikingParty")]
[assembly: AssemblyCopyright("Copyright ©  2024")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("8c55a8c8-7d45-46b1-9ea1-8c147968a0ca")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace VikingParty;

[BepInPlugin("TheRonTron.VikingParty", "The Viking Party", "4.2.0")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
internal class VikingParty : BaseUnityPlugin
{
	private AssetBundle VikingAB;

	public ConfigEntry<int> Cost;

	public ConfigEntry<int> Bros;

	public void Awake()
	{
		//IL_0084: Unknown result type (might be due to invalid IL or missing references)
		//IL_008a: Expected O, but got Unknown
		//IL_038b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0395: Expected O, but got Unknown
		//IL_03ac: Unknown result type (might be due to invalid IL or missing references)
		//IL_03b2: Expected O, but got Unknown
		//IL_03da: Unknown result type (might be due to invalid IL or missing references)
		//IL_03e4: Expected O, but got Unknown
		GenerateConfig();
		Logger.ShowDate = true;
		Game.isModded = true;
		Logger.LogInfo((object)("Embedded resources: " + string.Join(",", typeof(VikingParty).Assembly.GetManifestResourceNames())));
		VikingAB = AssetUtils.LoadAssetBundleFromResources("vikingparty", typeof(VikingParty).Assembly);
		GameObject VikingsGO = VikingAB.LoadAsset<GameObject>("Viking");
		CreatureConfig val = new CreatureConfig();
		val.AddConsumable("Mushroom");
		val.AddConsumable("NeckTailGrilled");
		val.AddConsumable("Raspberry");
		val.AddConsumable("CookedMeat");
		val.AddConsumable("Honey");
		val.AddConsumable("CookedDeerMeat");
		val.AddConsumable("Blueberries");
		val.AddConsumable("BoarJerky");
		val.AddConsumable("QueensJam");
		val.AddConsumable("MinceMeatSauce");
		val.AddConsumable("MushroomYellow");
		val.AddConsumable("DeerStew");
		val.AddConsumable("Carrot");
		val.AddConsumable("CarrotSoup");
		val.AddConsumable("ShocklateSmoothie");
		val.AddConsumable("FishCooked");
		val.AddConsumable("Sausages");
		val.AddConsumable("SerpentMeatCooked");
		val.AddConsumable("BlackSoup");
		val.AddConsumable("SerpentStew");
		val.AddConsumable("TurnipStew");
		val.AddConsumable("Eyescream");
		val.AddConsumable("CookedWolfMeat");
		val.AddConsumable("Onion");
		val.AddConsumable("WolfJerky");
		val.AddConsumable("OnionSoup");
		val.AddConsumable("WolfMeatSkewer");
		val.AddConsumable("Cloudberry");
		val.AddConsumable("Bread");
		val.AddConsumable("BloodPudding");
		val.AddConsumable("FishWraps");
		val.AddConsumable("CookedLoxMeat");
		val.AddConsumable("LoxPie");
		val.AddConsumable("MushroomJotunPuffs");
		val.AddConsumable("YggdrasilPorridge");
		val.AddConsumable("MushroomMagecap");
		val.AddConsumable("SeekerAspic");
		val.AddConsumable("MushroomOmelette");
		val.AddConsumable("MagicallyStuffedShroom");
		val.AddConsumable("CookedEgg");
		val.AddConsumable("FishAndBread");
		val.AddConsumable("CookedChickenMeat");
		val.AddConsumable("HoneyGlazedChicken");
		val.AddConsumable("CookedHareMeat");
		val.AddConsumable("MisthareSupreme");
		val.AddConsumable("CookedBugMeat");
		val.AddConsumable("MeatPlatter");
		val.AddConsumable("Salad");
		val.AddConsumable("MushroomSmokePuff");
		val.AddConsumable("Fiddleheadfern");
		val.AddConsumable("Vineberry");
		val.AddConsumable("CookedAsksvinMeat");
		val.AddConsumable("CookedVoltureMeat");
		val.AddConsumable("CookedBoneMawSerpentMeat");
		val.AddConsumable("FierySvinstew");
		val.AddConsumable("MashedMeat");
		val.AddConsumable("PiquantPie");
		val.AddConsumable("SpicyMarmalade");
		val.AddConsumable("ScorchingMedley");
		val.AddConsumable("RoastedCrustPie");
		val.AddConsumable("SizzlingBerryBroth");
		val.AddConsumable("SparklingShroomshake");
		val.AddConsumable("MarinatedGreens");
		CreatureManager.Instance.AddCreature(new CustomCreature(VikingsGO, true, val));
		GameObject VikingSummon = VikingAB.LoadAsset<GameObject>("Viking_spawn");
		ItemConfig val2 = new ItemConfig();
		VikingSummon.GetComponent<SpawnAbility>().m_maxSpawned = Bros.Value;
		ItemManager.Instance.AddItem(new CustomItem(VikingSummon, true, val2));
		VikingAB.Unload(false);
		PrefabManager.OnPrefabsRegistered += delegate
		{
			//IL_060d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0612: Unknown result type (might be due to invalid IL or missing references)
			//IL_0627: Unknown result type (might be due to invalid IL or missing references)
			//IL_062e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0635: Unknown result type (might be due to invalid IL or missing references)
			//IL_063c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0644: Expected O, but got Unknown
			//IL_0644: Unknown result type (might be due to invalid IL or missing references)
			//IL_064a: Expected O, but got Unknown
			//IL_065a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0664: Expected O, but got Unknown
			//IL_0684: Unknown result type (might be due to invalid IL or missing references)
			//IL_068b: Expected O, but got Unknown
			//IL_069c: Unknown result type (might be due to invalid IL or missing references)
			//IL_06a6: Expected O, but got Unknown
			//IL_087f: Unknown result type (might be due to invalid IL or missing references)
			//IL_09b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_09ba: Expected O, but got Unknown
			//IL_09c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_09cd: Expected O, but got Unknown
			//IL_09cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_09d4: Expected O, but got Unknown
			//IL_09e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_09ef: Expected O, but got Unknown
			//IL_0a0f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a16: Expected O, but got Unknown
			//IL_0a27: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a31: Expected O, but got Unknown
			//IL_0c89: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c90: Expected O, but got Unknown
			//IL_0c9c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ca3: Expected O, but got Unknown
			//IL_0d07: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e3c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e43: Expected O, but got Unknown
			//IL_0e4f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e56: Expected O, but got Unknown
			//IL_1017: Unknown result type (might be due to invalid IL or missing references)
			//IL_101e: Expected O, but got Unknown
			//IL_102a: Unknown result type (might be due to invalid IL or missing references)
			//IL_1031: Expected O, but got Unknown
			//IL_1095: Unknown result type (might be due to invalid IL or missing references)
			//IL_1292: Unknown result type (might be due to invalid IL or missing references)
			//IL_1297: Unknown result type (might be due to invalid IL or missing references)
			//IL_12ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_12b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_12bc: Expected O, but got Unknown
			//IL_12bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_12c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_12d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_12dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_12e6: Expected O, but got Unknown
			//IL_12e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_12eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_1300: Unknown result type (might be due to invalid IL or missing references)
			//IL_1307: Unknown result type (might be due to invalid IL or missing references)
			//IL_1310: Expected O, but got Unknown
			//IL_1420: Unknown result type (might be due to invalid IL or missing references)
			//IL_1427: Expected O, but got Unknown
			//IL_1433: Unknown result type (might be due to invalid IL or missing references)
			//IL_143a: Expected O, but got Unknown
			//IL_14f4: Unknown result type (might be due to invalid IL or missing references)
			PrefabManager.Instance.GetPrefab("SwordBronze").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackInterval = 0f;
			PrefabManager.Instance.GetPrefab("MaceBronze").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackInterval = 0f;
			PrefabManager.Instance.GetPrefab("AxeBronze").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackInterval = 0f;
			PrefabManager.Instance.GetPrefab("AxeBronze").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackRange = 1.8f;
			PrefabManager.Instance.GetPrefab("SpearBronze").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackInterval = 0f;
			PrefabManager.Instance.GetPrefab("SpearBronze").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackRange = 1.5f;
			PrefabManager.Instance.GetPrefab("SwordMistwalker").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackInterval = 0f;
			PrefabManager.Instance.GetPrefab("SwordMistwalker").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackRange = 2.3f;
			PrefabManager.Instance.GetPrefab("AxeJotunBane").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackInterval = 0f;
			PrefabManager.Instance.GetPrefab("AxeJotunBane").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackRange = 1.8f;
			PrefabManager.Instance.GetPrefab("BattleaxeSkullSplittur").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackInterval = 0f;
			PrefabManager.Instance.GetPrefab("BattleaxeSkullSplittur").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackRange = 2.1f;
			PrefabManager.Instance.GetPrefab("SledgeDemolisher").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackInterval = 0f;
			PrefabManager.Instance.GetPrefab("SledgeDemolisher").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackRange = 1.6f;
			PrefabManager.Instance.GetPrefab("SwordDyrnwyn").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackInterval = 0f;
			PrefabManager.Instance.GetPrefab("SwordNiedhoggLightning").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackInterval = 0f;
			PrefabManager.Instance.GetPrefab("SwordNiedhoggLightning").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackRange = 2.3f;
			PrefabManager.Instance.GetPrefab("SwordNiedhoggNature").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackInterval = 0f;
			PrefabManager.Instance.GetPrefab("SwordNiedhoggNature").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackRange = 2.3f;
			PrefabManager.Instance.GetPrefab("MaceEldnerLightning").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackInterval = 0f;
			PrefabManager.Instance.GetPrefab("MaceEldnerLightning").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackRange = 2.1f;
			PrefabManager.Instance.GetPrefab("MaceEldnerNature").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackInterval = 0f;
			PrefabManager.Instance.GetPrefab("AxeBerzerkrLightning").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackInterval = 0f;
			PrefabManager.Instance.GetPrefab("AxeBerzerkrLightning").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackRange = 1.8f;
			PrefabManager.Instance.GetPrefab("SpearSplitner_Lightning").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackInterval = 0f;
			PrefabManager.Instance.GetPrefab("SpearSplitner_Lightning").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackRange = 1.5f;
			PrefabManager.Instance.GetPrefab("SpearSplitner_Nature").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackInterval = 0f;
			PrefabManager.Instance.GetPrefab("SpearSplitner_Nature").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackRange = 1.5f;
			PrefabManager.Instance.GetPrefab("THSwordSlayerBlood").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackInterval = 0f;
			PrefabManager.Instance.GetPrefab("THSwordSlayerBlood").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackRange = 2.2f;
			Renderer componentInChildren = PrefabManager.Instance.GetPrefab("fx_Viking_pet").GetComponentInChildren<Renderer>();
			componentInChildren.material = Cache.GetPrefab<Material>("love");
			GameObject prefab = PrefabManager.Instance.GetPrefab("fx_summon_Viking_spawn");
			Renderer[] componentsInChildren = prefab.GetComponentsInChildren<Renderer>();
			foreach (Renderer val3 in componentsInChildren)
			{
				if (((Object)((Component)val3).gameObject).name == "Particle System")
				{
					Renderer componentInChildren2 = ((Component)val3).GetComponentInChildren<Renderer>();
					componentInChildren2.materials = (Material[])(object)new Material[2]
					{
						Cache.GetPrefab<Material>("Default-Particle"),
						Cache.GetPrefab<Material>("waystone_Trail")
					};
				}
				if (((Object)((Component)val3).gameObject).name == "Black_suck")
				{
					Renderer componentInChildren3 = ((Component)val3).GetComponentInChildren<Renderer>();
					componentInChildren3.material = Cache.GetPrefab<Material>("teleport_suck");
				}
				if (((Object)((Component)val3).gameObject).name == "blue flames")
				{
					Renderer componentInChildren4 = ((Component)val3).GetComponentInChildren<Renderer>();
					componentInChildren4.material = Cache.GetPrefab<Material>("portal_flame");
				}
				if (((Object)((Component)val3).gameObject).name == "suck particles")
				{
					Renderer componentInChildren5 = ((Component)val3).GetComponentInChildren<Renderer>();
					componentInChildren5.material = Cache.GetPrefab<Material>("portal_sparcs");
				}
			}
			EffectData val4 = new EffectData
			{
				m_prefab = PrefabManager.Instance.GetPrefab("sfx_MeadBurp"),
				m_enabled = true,
				m_variant = -1,
				m_attach = true,
				m_inheritParentRotation = true
			};
			ItemConfig val5 = new ItemConfig();
			ItemManager.Instance.AddItem(new CustomItem("BlueLinenCape", "CapeLinen", val5));
			PrefabManager.Instance.GetPrefab("BlueLinenCape").GetComponent<ItemDrop>().m_itemData.m_variant = 1;
			ItemConfig val6 = new ItemConfig();
			ItemManager.Instance.AddItem(new CustomItem("SpinAtgeirBronze", "AtgeirBronze", val6));
			PrefabManager.Instance.GetPrefab("SpinAtgeirBronze").GetComponent<ItemDrop>().m_itemData.m_shared.m_attack = PrefabManager.Instance.GetPrefab("SpinAtgeirBronze").GetComponent<ItemDrop>().m_itemData.m_shared.m_secondaryAttack;
			PrefabManager.Instance.GetPrefab("SpinAtgeirBronze").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackInterval = 0f;
			PrefabManager.Instance.GetPrefab("SpinAtgeirBronze").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackRange = 2.6f;
			VikingsGO.GetComponent<Humanoid>().m_defaultItems = (GameObject[])(object)new GameObject[8]
			{
				PrefabManager.Instance.GetPrefab("HelmetBronze"),
				PrefabManager.Instance.GetPrefab("ArmorBronzeChest"),
				PrefabManager.Instance.GetPrefab("ArmorBronzeLegs"),
				PrefabManager.Instance.GetPrefab("BlueLinenCape"),
				PrefabManager.Instance.GetPrefab("BeltStrength"),
				PrefabManager.Instance.GetPrefab("ShieldBronzeBuckler"),
				PrefabManager.Instance.GetPrefab("Tankard"),
				PrefabManager.Instance.GetPrefab("MeadTasty")
			};
			VikingsGO.GetComponent<Humanoid>().m_randomWeapon = (GameObject[])(object)new GameObject[5]
			{
				PrefabManager.Instance.GetPrefab("SwordBronze"),
				PrefabManager.Instance.GetPrefab("AxeBronze"),
				PrefabManager.Instance.GetPrefab("MaceBronze"),
				PrefabManager.Instance.GetPrefab("SpearBronze"),
				PrefabManager.Instance.GetPrefab("SpinAtgeirBronze")
			};
			SharedData shared = PrefabManager.Instance.GetPrefab("Tankard").GetComponent<ItemDrop>().m_itemData.m_shared;
			Attack secondaryAttack = shared.m_secondaryAttack;
			secondaryAttack.m_attackType = (AttackType)2;
			secondaryAttack.m_attackAnimation = "emote_drink";
			secondaryAttack.m_hitTerrain = false;
			secondaryAttack.m_attackStamina = 0f;
			secondaryAttack.m_attackEitr = Cost.Value;
			secondaryAttack.m_speedFactor = 0.3f;
			secondaryAttack.m_speedFactorRotation = 0.3f;
			secondaryAttack.m_attackHitNoise = 10f;
			secondaryAttack.m_attackRange = 0f;
			secondaryAttack.m_attackHeight = 0f;
			secondaryAttack.m_attackProjectile = VikingSummon;
			secondaryAttack.m_projectileVel = 0f;
			secondaryAttack.m_projectileVelMin = 0f;
			secondaryAttack.m_projectileAccuracy = 1f;
			secondaryAttack.m_projectileAccuracyMin = 1f;
			secondaryAttack.m_startEffect.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { val4 };
			secondaryAttack.m_triggerEffect.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { val4 };
			secondaryAttack.m_trailStartEffect.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { val4 };
			shared.m_equipDuration = 0f;
			shared.m_aiAttackRange = 24f;
			shared.m_aiAttackRangeMin = 4f;
			shared.m_aiAttackInterval = 20f;
			shared.m_aiMinHealthPercentage = 0.69f;
			CreatureConfig val7 = new CreatureConfig();
			CustomCreature val8 = new CustomCreature("VikingElite", "Viking", val7);
			ItemConfig val9 = new ItemConfig();
			ItemManager.Instance.AddItem(new CustomItem("BlackLinenCape", "CapeLinen", val9));
			PrefabManager.Instance.GetPrefab("BlackLinenCape").GetComponent<ItemDrop>().m_itemData.m_variant = 5;
			ItemConfig val10 = new ItemConfig();
			ItemManager.Instance.AddItem(new CustomItem("SpinAtgeirHimminAfl", "AtgeirHimminAfl", val10));
			PrefabManager.Instance.GetPrefab("SpinAtgeirHimminAfl").GetComponent<ItemDrop>().m_itemData.m_shared.m_attack = PrefabManager.Instance.GetPrefab("SpinAtgeirHimminAfl").GetComponent<ItemDrop>().m_itemData.m_shared.m_secondaryAttack;
			PrefabManager.Instance.GetPrefab("SpinAtgeirHimminAfl").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackInterval = 0f;
			PrefabManager.Instance.GetPrefab("SpinAtgeirHimminAfl").GetComponent<ItemDrop>().m_itemData.m_shared.m_aiAttackRange = 2.6f;
			Humanoid component = val8.Prefab.GetComponent<Humanoid>();
			((Character)component).m_name = "Elite Viking Warrior";
			component.m_defaultItems = (GameObject[])(object)new GameObject[7]
			{
				PrefabManager.Instance.GetPrefab("HelmetFlametal"),
				PrefabManager.Instance.GetPrefab("ArmorFlametalChest"),
				PrefabManager.Instance.GetPrefab("ArmorFlametalLegs"),
				PrefabManager.Instance.GetPrefab("BlackLinenCape"),
				PrefabManager.Instance.GetPrefab("ShieldFlametal"),
				PrefabManager.Instance.GetPrefab("TankardAnniversary"),
				PrefabManager.Instance.GetPrefab("MeadTasty")
			};
			component.m_randomWeapon = (GameObject[])(object)new GameObject[14]
			{
				PrefabManager.Instance.GetPrefab("SwordDyrnwyn"),
				PrefabManager.Instance.GetPrefab("SwordNiedhoggLightning"),
				PrefabManager.Instance.GetPrefab("SwordNiedhoggNature"),
				PrefabManager.Instance.GetPrefab("MaceEldnerLightning"),
				PrefabManager.Instance.GetPrefab("MaceEldnerNature"),
				PrefabManager.Instance.GetPrefab("AxeBerzerkrLightning"),
				PrefabManager.Instance.GetPrefab("SpearSplitner_Lightning"),
				PrefabManager.Instance.GetPrefab("SpearSplitner_Nature"),
				PrefabManager.Instance.GetPrefab("THSwordSlayerBlood"),
				PrefabManager.Instance.GetPrefab("SwordMistwalker"),
				PrefabManager.Instance.GetPrefab("AxeJotunBane"),
				PrefabManager.Instance.GetPrefab("BattleaxeSkullSplittur"),
				PrefabManager.Instance.GetPrefab("SledgeDemolisher"),
				PrefabManager.Instance.GetPrefab("SpinAtgeirHimminAfl")
			};
			CreatureManager.Instance.AddCreature(val8);
			ItemConfig val11 = new ItemConfig();
			CustomItem val12 = new CustomItem("VikingElite_spawn", "Viking_spawn", val11);
			ItemManager.Instance.AddItem(val12);
			SpawnAbility component2 = val12.ItemPrefab.GetComponent<SpawnAbility>();
			component2.m_spawnPrefab.SetValue(PrefabManager.Instance.GetPrefab("VikingElite"), 0);
			SharedData shared2 = PrefabManager.Instance.GetPrefab("TankardAnniversary").GetComponentInChildren<ItemDrop>().m_itemData.m_shared;
			Attack secondaryAttack2 = shared2.m_secondaryAttack;
			secondaryAttack2.m_attackType = (AttackType)2;
			secondaryAttack2.m_attackAnimation = "emote_drink";
			secondaryAttack2.m_hitTerrain = false;
			secondaryAttack2.m_attackStamina = 0f;
			secondaryAttack2.m_attackEitr = Cost.Value;
			secondaryAttack2.m_speedFactor = 0.3f;
			secondaryAttack2.m_speedFactorRotation = 0.3f;
			secondaryAttack2.m_attackHitNoise = 10f;
			secondaryAttack2.m_attackRange = 0f;
			secondaryAttack2.m_attackHeight = 0f;
			secondaryAttack2.m_attackProjectile = val12.ItemPrefab;
			secondaryAttack2.m_projectileVel = 0f;
			secondaryAttack2.m_projectileVelMin = 0f;
			secondaryAttack2.m_projectileAccuracy = 1f;
			secondaryAttack2.m_projectileAccuracyMin = 1f;
			secondaryAttack2.m_startEffect.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { val4 };
			secondaryAttack2.m_triggerEffect.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { val4 };
			secondaryAttack2.m_trailStartEffect.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { val4 };
			shared2.m_equipDuration = 0f;
			shared2.m_aiAttackRange = 24f;
			shared2.m_aiAttackRangeMin = 4f;
			shared2.m_aiAttackInterval = 20f;
			shared2.m_aiMinHealthPercentage = 0.69f;
			CreatureConfig val13 = new CreatureConfig();
			CustomCreature val14 = new CustomCreature("OdinViking", "VikingElite", val13);
			Humanoid component3 = val14.Prefab.GetComponent<Humanoid>();
			((Character)component3).m_name = "Odin's Elite Viking";
			component3.m_defaultItems = (GameObject[])(object)new GameObject[7]
			{
				PrefabManager.Instance.GetPrefab("HelmetOdin"),
				PrefabManager.Instance.GetPrefab("ArmorFlametalChest"),
				PrefabManager.Instance.GetPrefab("ArmorFlametalLegs"),
				PrefabManager.Instance.GetPrefab("CapeOdin"),
				PrefabManager.Instance.GetPrefab("ShieldFlametal"),
				PrefabManager.Instance.GetPrefab("TankardOdin"),
				PrefabManager.Instance.GetPrefab("MeadTasty")
			};
			component3.m_randomWeapon = (GameObject[])(object)new GameObject[14]
			{
				PrefabManager.Instance.GetPrefab("SwordDyrnwyn"),
				PrefabManager.Instance.GetPrefab("SwordNiedhoggLightning"),
				PrefabManager.Instance.GetPrefab("SwordNiedhoggNature"),
				PrefabManager.Instance.GetPrefab("MaceEldnerLightning"),
				PrefabManager.Instance.GetPrefab("MaceEldnerNature"),
				PrefabManager.Instance.GetPrefab("AxeBerzerkrLightning"),
				PrefabManager.Instance.GetPrefab("SpearSplitner_Lightning"),
				PrefabManager.Instance.GetPrefab("SpearSplitner_Nature"),
				PrefabManager.Instance.GetPrefab("THSwordSlayerBlood"),
				PrefabManager.Instance.GetPrefab("SwordMistwalker"),
				PrefabManager.Instance.GetPrefab("AxeJotunBane"),
				PrefabManager.Instance.GetPrefab("BattleaxeSkullSplittur"),
				PrefabManager.Instance.GetPrefab("SledgeDemolisher"),
				PrefabManager.Instance.GetPrefab("SpinAtgeirHimminAfl")
			};
			CreatureManager.Instance.AddCreature(val14);
			ItemConfig val15 = new ItemConfig();
			CustomItem val16 = new CustomItem("OdinViking_spawn", "VikingElite_spawn", val15);
			ItemManager.Instance.AddItem(val16);
			SpawnAbility component4 = val16.ItemPrefab.GetComponent<SpawnAbility>();
			component4.m_spawnPrefab.SetValue(PrefabManager.Instance.GetPrefab("OdinViking"), 0);
			SharedData shared3 = PrefabManager.Instance.GetPrefab("TankardOdin").GetComponentInChildren<ItemDrop>().m_itemData.m_shared;
			Attack secondaryAttack3 = shared3.m_secondaryAttack;
			secondaryAttack3.m_attackType = (AttackType)2;
			secondaryAttack3.m_attackAnimation = "emote_drink";
			secondaryAttack3.m_hitTerrain = false;
			secondaryAttack3.m_attackStamina = 0f;
			secondaryAttack3.m_attackEitr = Cost.Value;
			secondaryAttack3.m_speedFactor = 0.3f;
			secondaryAttack3.m_speedFactorRotation = 0.3f;
			secondaryAttack3.m_attackHitNoise = 10f;
			secondaryAttack3.m_attackRange = 0f;
			secondaryAttack3.m_attackHeight = 0f;
			secondaryAttack3.m_attackProjectile = val16.ItemPrefab;
			secondaryAttack3.m_projectileVel = 0f;
			secondaryAttack3.m_projectileVelMin = 0f;
			secondaryAttack3.m_projectileAccuracy = 1f;
			secondaryAttack3.m_projectileAccuracyMin = 1f;
			secondaryAttack3.m_startEffect.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { val4 };
			secondaryAttack3.m_triggerEffect.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { val4 };
			secondaryAttack3.m_trailStartEffect.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { val4 };
			shared3.m_equipDuration = 0f;
			shared3.m_aiAttackRange = 24f;
			shared3.m_aiAttackRangeMin = 4f;
			shared3.m_aiAttackInterval = 20f;
			shared3.m_aiMinHealthPercentage = 0.69f;
			MonsterAI component5 = PrefabManager.Instance.GetPrefab("Dverger").GetComponent<MonsterAI>();
			component5.m_consumeItems = new List<ItemDrop>
			{
				PrefabManager.Instance.GetPrefab("Sausages").GetComponent<ItemDrop>(),
				PrefabManager.Instance.GetPrefab("MeadTasty").GetComponent<ItemDrop>()
			};
			component5.m_consumeSearchRange = 10f;
			MonsterAI component6 = PrefabManager.Instance.GetPrefab("DvergerMage").GetComponent<MonsterAI>();
			component6.m_consumeItems = new List<ItemDrop>
			{
				PrefabManager.Instance.GetPrefab("Sausages").GetComponent<ItemDrop>(),
				PrefabManager.Instance.GetPrefab("MeadTasty").GetComponent<ItemDrop>()
			};
			component6.m_consumeSearchRange = 14f;
			EffectData val17 = new EffectData
			{
				m_prefab = PrefabManager.Instance.GetPrefab("fx_creature_tamed"),
				m_enabled = true,
				m_variant = -1
			};
			EffectData val18 = new EffectData
			{
				m_prefab = PrefabManager.Instance.GetPrefab("vfx_creature_soothed"),
				m_enabled = true,
				m_variant = 0
			};
			EffectData val19 = new EffectData
			{
				m_prefab = PrefabManager.Instance.GetPrefab("fx_Viking_pet"),
				m_enabled = true,
				m_variant = 0
			};
			PrefabManager.Instance.GetPrefab("Dverger").AddComponent<Tameable>();
			Tameable component7 = PrefabManager.Instance.GetPrefab("Dverger").GetComponent<Tameable>();
			component7.m_unsummonDistance = 150f;
			component7.m_unsummonOnOwnerLogoutSeconds = 120f;
			component7.m_tamedEffect.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { val17 };
			component7.m_sootheEffect.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { val18 };
			component7.m_petEffect.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { val19 };
			PrefabManager.Instance.GetPrefab("DvergerMage").AddComponent<Tameable>();
			Tameable component8 = PrefabManager.Instance.GetPrefab("DvergerMage").GetComponent<Tameable>();
			component8.m_unsummonDistance = 150f;
			component8.m_unsummonOnOwnerLogoutSeconds = 120f;
			component8.m_tamedEffect.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { val17 };
			component8.m_sootheEffect.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { val18 };
			component8.m_petEffect.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { val19 };
			ItemConfig val20 = new ItemConfig();
			CustomItem val21 = new CustomItem("Dvergr_spawn", "Viking_spawn", val20);
			ItemManager.Instance.AddItem(val21);
			SpawnAbility component9 = val21.ItemPrefab.GetComponent<SpawnAbility>();
			component9.m_spawnPrefab = (GameObject[])(object)new GameObject[5]
			{
				PrefabManager.Instance.GetPrefab("Dverger"),
				PrefabManager.Instance.GetPrefab("Dverger"),
				PrefabManager.Instance.GetPrefab("Dverger"),
				PrefabManager.Instance.GetPrefab("Dverger"),
				PrefabManager.Instance.GetPrefab("DvergerMage")
			};
			SharedData shared4 = PrefabManager.Instance.GetPrefab("Tankard_dvergr").GetComponentInChildren<ItemDrop>().m_itemData.m_shared;
			Attack secondaryAttack4 = shared4.m_secondaryAttack;
			shared4.m_equipDuration = 0f;
			secondaryAttack4.m_attackType = (AttackType)2;
			secondaryAttack4.m_attackAnimation = "emote_drink";
			secondaryAttack4.m_hitTerrain = false;
			secondaryAttack4.m_attackStamina = 0f;
			secondaryAttack4.m_attackEitr = Cost.Value;
			secondaryAttack4.m_speedFactor = 0.3f;
			secondaryAttack4.m_speedFactorRotation = 0.3f;
			secondaryAttack4.m_attackHitNoise = 10f;
			secondaryAttack4.m_attackRange = 0f;
			secondaryAttack4.m_attackHeight = 0f;
			secondaryAttack4.m_attackProjectile = PrefabManager.Instance.GetPrefab("Dvergr_spawn");
			secondaryAttack4.m_projectileVel = 0f;
			secondaryAttack4.m_projectileVelMin = 0f;
			secondaryAttack4.m_projectileAccuracy = 1f;
			secondaryAttack4.m_projectileAccuracyMin = 1f;
			secondaryAttack4.m_startEffect.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { val4 };
			secondaryAttack4.m_triggerEffect.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { val4 };
			secondaryAttack4.m_trailStartEffect.m_effectPrefabs = (EffectData[])(object)new EffectData[1] { val4 };
		};
	}

	public void GenerateConfig()
	{
		//IL_003a: Unknown result type (might be due to invalid IL or missing references)
		//IL_003f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0048: Expected O, but got Unknown
		//IL_0048: Unknown result type (might be due to invalid IL or missing references)
		//IL_0052: Expected O, but got Unknown
		//IL_0082: Unknown result type (might be due to invalid IL or missing references)
		//IL_0087: Unknown result type (might be due to invalid IL or missing references)
		//IL_0090: Expected O, but got Unknown
		//IL_0090: Unknown result type (might be due to invalid IL or missing references)
		//IL_009a: Expected O, but got Unknown
		((BaseUnityPlugin)this).Config.SaveOnConfigSet = true;
		Cost = ((BaseUnityPlugin)this).Config.Bind<int>("Party Time!", "Cost of Invitations", 100, new ConfigDescription("Designates Cost of Invites", (AcceptableValueBase)null, new object[2]
		{
			new AcceptableValueRange<int>(0, 100),
			(object)new ConfigurationManagerAttributes
			{
				IsAdminOnly = true
			}
		}));
		Bros = ((BaseUnityPlugin)this).Config.Bind<int>("Party Time!", "Available Invitations", 1, new ConfigDescription("Designates Number of Available Invites", (AcceptableValueBase)null, new object[2]
		{
			new AcceptableValueRange<int>(1, 100),
			(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");
			}
		};
	}
}