Decompiled source of GoldenCoastPlusRevived v1.0.1

GoldenCoastPlusRevived.dll

Decompiled 2 weeks ago
using System;
using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Globalization;
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using EntityStates;
using EntityStates.GolemMonster;
using EntityStates.Missions.Goldshores;
using EntityStates.TitanMonster;
using GoldenCoastPlusRevived.Buffs;
using GoldenCoastPlusRevived.Items;
using GoldenCoastPlusRevived.Properties;
using IL.RoR2;
using Microsoft.CodeAnalysis;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using On.EntityStates.Missions.Goldshores;
using On.EntityStates.TitanMonster;
using On.RoR2;
using R2API;
using RoR2;
using RoR2.Projectile;
using UnityEngine;
using UnityEngine.Experimental.Rendering;
using UnityEngine.Networking;
using UnityEngine.SceneManagement;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = "")]
[assembly: AssemblyCompany("GoldenCoastPlusRevived")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("GoldenCoastPlusRevived")]
[assembly: AssemblyTitle("GoldenCoastPlusRevived")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
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;
		}
	}
}
namespace GoldenCoastPlusRevived
{
	public class GCPAssets
	{
		public static GameObject GoldenKnurlPrefab;

		public static GameObject GoldenKnurlFollowerPrefab;

		public static GameObject BigSwordPrefab;

		public static GameObject LaserEyePrefab;

		public static Sprite GoldenKnurlIcon;

		public static Sprite BigSwordIcon;

		public static Sprite LaserEyeIcon;

		public static Sprite LaserEyeReadyIcon;

		public static Sprite TitanGoldArmorBrokenIcon;

		public static Sprite AffixGoldIcon;

		public static Sprite hiddenGoldBuffIcon;

		public static void RegisterAssets()
		{
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_016c: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0226: Unknown result type (might be due to invalid IL or missing references)
			//IL_023c: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_03bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e0: Unknown result type (might be due to invalid IL or missing references)
			ItemDisplayRuleSet itemDisplayRuleSet = ((Component)Resources.Load<GameObject>("Prefabs/CharacterBodies/CommandoBody").GetComponent<ModelLocator>().modelTransform).GetComponent<CharacterModel>().itemDisplayRuleSet;
			Material material = Object.Instantiate<Material>(Resources.Load<GameObject>("Prefabs/CharacterBodies/TitanGoldBody").GetComponentInChildren<CharacterModel>().baseRendererInfos[19].defaultMaterial);
			Material val = Object.Instantiate<Material>(Resources.Load<GameObject>("Prefabs/pickupmodels/PickupDiamond").GetComponentInChildren<Renderer>().material);
			val.color = Color.red;
			Material val2 = Object.Instantiate<Material>(Resources.Load<GameObject>("Prefabs/CharacterBodies/TitanGoldBody").GetComponentInChildren<CharacterModel>().baseRendererInfos[8].defaultMaterial);
			Material[] materials = (Material[])(object)new Material[2] { val, val2 };
			GoldenKnurlPrefab = PrefabAPI.InstantiateClone(Resources.Load<GameObject>("Prefabs/pickupmodels/PickupKnurl"), "PickupGoldenKnurl", false);
			Renderer[] componentsInChildren = GoldenKnurlPrefab.GetComponentsInChildren<Renderer>();
			Renderer[] array = componentsInChildren;
			foreach (Renderer val3 in array)
			{
				val3.material = material;
			}
			GoldenKnurlFollowerPrefab = PrefabAPI.InstantiateClone(itemDisplayRuleSet.FindDisplayRuleGroup((Object)(object)Resources.Load<ItemDef>("itemdefs/Knurl")).rules[0].followerPrefab, "GoldenKnurlFollowerPrefab", false);
			((Component)GoldenKnurlFollowerPrefab.transform.Find("mdlKnurl")).gameObject.SetActive(false);
			((Component)GoldenKnurlFollowerPrefab.transform.Find("KnurlPebbleParticles")).gameObject.SetActive(false);
			GameObject val4 = PrefabAPI.InstantiateClone(((Component)itemDisplayRuleSet.FindDisplayRuleGroup((Object)(object)Resources.Load<ItemDef>("itemdefs/Knurl")).rules[0].followerPrefab.transform.Find("mdlKnurl")).gameObject, "GoldenKnurlFollowerModel", false);
			Renderer component = val4.GetComponent<Renderer>();
			component.material = material;
			val4.transform.parent = GoldenKnurlFollowerPrefab.transform;
			GoldenKnurlFollowerPrefab.transform.Find("GoldenKnurlFollowerModel").localPosition = GoldenKnurlFollowerPrefab.transform.Find("mdlKnurl").localPosition;
			GoldenKnurlFollowerPrefab.transform.Find("GoldenKnurlFollowerModel").localEulerAngles = GoldenKnurlFollowerPrefab.transform.Find("mdlKnurl").localEulerAngles;
			GameObject val5 = PrefabAPI.InstantiateClone(((Component)itemDisplayRuleSet.FindDisplayRuleGroup((Object)(object)Resources.Load<ItemDef>("itemdefs/Knurl")).rules[0].followerPrefab.transform.Find("KnurlPebbleParticles")).gameObject, "GoldenKnurlFollowerPebbles", false);
			Renderer component2 = val5.GetComponent<Renderer>();
			component2.material = material;
			val5.transform.parent = GoldenKnurlFollowerPrefab.transform;
			GoldenKnurlFollowerPrefab.transform.Find("GoldenKnurlFollowerPebbles").localPosition = GoldenKnurlFollowerPrefab.transform.Find("KnurlPebbleParticles").localPosition;
			GoldenKnurlFollowerPrefab.transform.Find("GoldenKnurlFollowerPebbles").localEulerAngles = GoldenKnurlFollowerPrefab.transform.Find("KnurlPebbleParticles").localEulerAngles;
			GoldenKnurlIcon = RegisterIcons(GCPResources.Golden_Knurl);
			BigSwordPrefab = PrefabAPI.InstantiateClone(((Component)Resources.Load<GameObject>("prefabs/characterbodies/TitanGoldBody").GetComponent<ModelLocator>().modelTransform.Find("TitanArmature").Find("ROOT").Find("base")
				.Find("stomach")
				.Find("chest")
				.Find("upper_arm.r")
				.Find("lower_arm.r")
				.Find("hand.r")
				.Find("RightFist")).gameObject, "PickupBigSword", false);
			Transform val6 = BigSwordPrefab.transform.Find("Sword");
			((Component)val6).transform.localPosition = new Vector3(4f, -5.5f, 0f);
			((Component)val6).transform.localEulerAngles = new Vector3(135f, 270f, 0f);
			BigSwordIcon = RegisterIcons(GCPResources.Titanic_Greatsword);
			LaserEyePrefab = PrefabAPI.InstantiateClone(Resources.Load<GameObject>("Prefabs/pickupmodels/PickupMeteor"), "PickupLaserEye", false);
			Renderer componentInChildren = LaserEyePrefab.GetComponentInChildren<Renderer>();
			componentInChildren.materials = materials;
			LaserEyeIcon = RegisterIcons(GCPResources.Guardian_s_Eye);
			LaserEyeReadyIcon = Object.Instantiate<Sprite>(LegacyResourcesAPI.Load<BuffDef>("BuffDefs/MercExpose").iconSprite);
			TitanGoldArmorBrokenIcon = Object.Instantiate<Sprite>(LegacyResourcesAPI.Load<BuffDef>("BuffDefs/Pulverized").iconSprite);
			AffixGoldIcon = RegisterIcons(GCPResources.Gold_Elite_Icon);
			hiddenGoldBuffIcon = RegisterIcons(GCPResources.Aurelionite_s_Blessing);
		}

		public static Sprite RegisterIcons(byte[] resourceBytes)
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0013: Expected O, but got Unknown
			//IL_0035: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			Texture2D val = new Texture2D(128, 128, (DefaultFormat)4, (TextureCreationFlags)0);
			ImageConversion.LoadImage(val, resourceBytes, false);
			return Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), new Vector2(1f, 1f));
		}
	}
	[BepInPlugin("com.Phreel.GoldenCoastPlusRevived", "GoldenCoastPlusRevived", "1.0.1")]
	public class GoldenCoastPlusPlugin : BaseUnityPlugin
	{
		public static ItemDef goldenKnurlDef;

		public static ItemDef bigSwordDef;

		public static ItemDef laserEyeDef;

		public static ItemDef hiddenGoldBuffItemDef;

		internal static List<ItemDef> newItemList = new List<ItemDef>();

		public static BuffDef laserEyeChargeDef;

		public static BuffDef titanGoldArmorBrokenDef;

		public static BuffDef affixGoldDef;

		public static BuffDef hiddenGoldBuffDef;

		public static ConfigEntry<bool> FightChanges { get; set; }

		public static ConfigEntry<bool> EnableSword { get; set; }

		public static ConfigEntry<float> SwordDamage { get; set; }

		public static ConfigEntry<float> SwordChance { get; set; }

		public static ConfigEntry<bool> EnableKnurl { get; set; }

		public static ConfigEntry<float> KnurlHealth { get; set; }

		public static ConfigEntry<float> KnurlRegen { get; set; }

		public static ConfigEntry<float> KnurlArmor { get; set; }

		public static ConfigEntry<bool> EnableEye { get; set; }

		public static ConfigEntry<float> EyeDamage { get; set; }

		public static ConfigEntry<int> EyeStacksRequired { get; set; }

		public static ConfigEntry<bool> SeedChanges { get; set; }

		public static ConfigEntry<int> TitanGoldMultiplier { get; set; }

		public static ConfigEntry<bool> EnableGoldElites { get; set; }

		public void Awake()
		{
			ConfigInit();
			GCPAssets.RegisterAssets();
			if (EnableGoldElites.Value)
			{
				affixGoldDef = new AffixGold().AddBuff();
				GoldElites();
			}
			if (EnableSword.Value)
			{
				bigSwordDef = new BigSword().AddItem();
			}
			if (EnableKnurl.Value)
			{
				goldenKnurlDef = new GoldenKnurl().AddItem();
			}
			if (EnableEye.Value)
			{
				laserEyeDef = new LaserEye().AddItem();
				laserEyeChargeDef = new LaserEyeCharge().AddBuff();
			}
			if (SeedChanges.Value)
			{
				LanguageAPI.Add("ITEM_TITANGOLDDURINGTP_DESC", "Summon <style=cIsDamage>Aurelionite</style> during the teleporter event. It has <style=cIsDamage>100%</style> <style=cStack>(+100% per stack)</style> <style=cIsDamage>damage</style> and <style=cIsHealing>100%</style> <style=cStack>(+100% per stack)</style> <style=cIsHealing>health</style>");
			}
			if (FightChanges.Value)
			{
				titanGoldArmorBrokenDef = new TitanGoldArmorBroken().AddBuff();
				hiddenGoldBuffItemDef = new HiddenGoldBuffItem().AddItem();
				hiddenGoldBuffDef = new HiddenGoldBuff().AddBuff();
				CharacterBody component = Resources.Load<GameObject>("prefabs/characterbodies/TitanGoldBody").GetComponent<CharacterBody>();
				component.baseMaxHealth *= 2f;
				CharacterBody component2 = Resources.Load<GameObject>("prefabs/characterbodies/TitanGoldBody").GetComponent<CharacterBody>();
				component2.levelMaxHealth *= 2f;
			}
			Hook();
		}

		private void ConfigInit()
		{
			FightChanges = ((BaseUnityPlugin)this).Config.Bind<bool>("Aurelionite Fight Changes", "Enable Fight Changes", true, "Should the changes to Aurelionite's fight be enabled?");
			EnableSword = ((BaseUnityPlugin)this).Config.Bind<bool>("Titanic Greatsword", "Enable Titanic Greatsword", true, "Should Titanic Greatsword be enabled?");
			SwordDamage = ((BaseUnityPlugin)this).Config.Bind<float>("Titanic Greatsword", "Titanic Greatsword Damage", 12.5f, "Adjust Titanic Greatsword's damage coefficient, as a decimal.");
			SwordChance = ((BaseUnityPlugin)this).Config.Bind<float>("Titanic Greatsword", "Titanic Greatsword Chance", 5f, "Adjust Titanic Greatsword's chance to proc, as a percentage.");
			EnableKnurl = ((BaseUnityPlugin)this).Config.Bind<bool>("Golden Knurl", "Enable Golden Knurl", true, "Should Golden Knurl be enabled?");
			KnurlHealth = ((BaseUnityPlugin)this).Config.Bind<float>("Golden Knurl", "Golden Knurl Health", 0.1f, "Adjust how much max health Golden Knurl grants, as a decimal.");
			KnurlRegen = ((BaseUnityPlugin)this).Config.Bind<float>("Golden Knurl", "Golden Knurl Regen", 2.4f, "Adjust how much regen Golden Knurl grants.");
			KnurlArmor = ((BaseUnityPlugin)this).Config.Bind<float>("Golden Knurl", "Golden Knurl Armor", 20f, "Adjust how much armor Golden Knurl grants.");
			EnableEye = ((BaseUnityPlugin)this).Config.Bind<bool>("Guardians Eye", "Enable Guardians Eye", true, "Should Guardian's Eye be enabled?");
			EyeDamage = ((BaseUnityPlugin)this).Config.Bind<float>("Guardians Eye", "Guardians Eye Damage", 25f, "Adjust how much damage Guardian's Eye does, as a decimal.");
			EyeStacksRequired = ((BaseUnityPlugin)this).Config.Bind<int>("Guardians Eye", "Guardians Eye Stacks Required", 10, "Adjust how many stacks are required for Guardian's Eye to trigger.");
			SeedChanges = ((BaseUnityPlugin)this).Config.Bind<bool>("Halcyon Seed Changes", "Enable Halcyon Seed Changes", true, "Should the changes to Halcyon Seed be enabled?");
			TitanGoldMultiplier = ((BaseUnityPlugin)this).Config.Bind<int>("Halcyon Seed Changes", "Teleporter Aurelionite Buff Multiplier", 3, "Adjust how much Aurelionite's damage and health are buffed.");
			EnableGoldElites = ((BaseUnityPlugin)this).Config.Bind<bool>("Gold Elites", "Enable Gold Elites", true, "Should Gold Elites be enabled?");
		}

		private void GoldElites()
		{
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Expected O, but got Unknown
			EquipmentDef val = Resources.Load<EquipmentDef>("equipmentdefs/AffixGold");
			val.passiveBuffDef = affixGoldDef;
			val.pickupModelPrefab = Resources.Load<GameObject>("prefabs/pickupmodels/PickupAffixGreen");
			val.pickupIconSprite = Resources.Load<Sprite>("textures/itemicons/texAffixGreenIcon");
			val.passiveBuffDef.eliteDef.shaderEliteRampIndex = 7;
			EliteDef val2 = Resources.Load<EliteDef>("elitedefs/Gold");
			val2.damageBoostCoefficient = 4f;
			val2.healthBoostCoefficient = 11f;
			EliteTierDef val3 = new EliteTierDef();
			val3.costMultiplier = 3f * CombatDirector.baseEliteCostMultiplier;
			val3.eliteTypes = (EliteDef[])(object)new EliteDef[1] { Resources.Load<EliteDef>("elitedefs/Gold") };
			val3.isAvailable = (EliteRules rules) => (Object)(object)SceneCatalog.GetSceneDefForCurrentScene() == (Object)(object)Resources.Load<SceneDef>("scenedefs/goldshores");
			EliteTierDef val4 = val3;
			EliteAPI.AddCustomEliteTier(val4);
			LanguageAPI.Add("ELITE_MODIFIER_GOLD", "Gold {0}");
		}

		private void Hook()
		{
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Expected O, but got Unknown
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Expected O, but got Unknown
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Expected O, but got Unknown
			//IL_0065: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Expected O, but got Unknown
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0095: Expected O, but got Unknown
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Expected O, but got Unknown
			//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d0: Expected O, but got Unknown
			//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e2: Expected O, but got Unknown
			//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f4: Expected O, but got Unknown
			//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0106: Expected O, but got Unknown
			//IL_010e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0118: Expected O, but got Unknown
			//IL_0120: Unknown result type (might be due to invalid IL or missing references)
			//IL_012a: Expected O, but got Unknown
			//IL_0157: Unknown result type (might be due to invalid IL or missing references)
			//IL_0161: Expected O, but got Unknown
			//IL_018e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0198: Expected O, but got Unknown
			if (SeedChanges.Value)
			{
				GoldTitanManager.TryStartChannelingTitansServer += new Manipulator(GoldTitanManager_TryStartChannelingTitansServer);
				GoldTitanManager.CalcTitanPowerAndBestTeam += new Manipulator(GoldTitanManager_CalcTitanPowerAndBestTeam);
			}
			PickupDropletController.CreatePickupDroplet_PickupIndex_Vector3_Vector3 += new hook_CreatePickupDroplet_PickupIndex_Vector3_Vector3(PickupDropletController_CreatePickupDroplet_PickupIndex_Vector3_Vector3);
			if (EnableKnurl.Value)
			{
				RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(GoldenKnurlStatChanges);
			}
			if (EnableGoldElites.Value)
			{
				DeathRewards.OnKilledServer += new hook_OnKilledServer(DeathRewards_OnKilledServer);
			}
			if (FightChanges.Value)
			{
				GoldshoresMissionController.Awake += new hook_Awake(GoldshoresMissionController_Start);
				GoldshoresBossfight.OnEnter += new hook_OnEnter(GoldshoresBossfight_OnEnter);
				GoldshoresBossfight.OnExit += new hook_OnExit(GoldshoresBossfight_OnExit);
				GoldshoresBossfight.ServerFixedUpdate += new hook_ServerFixedUpdate(GoldshoresBossfight_ServerFixedUpdate);
				HealthComponent.TakeDamage += new hook_TakeDamage(HealthComponent_TakeDamage);
				FireGoldFist.PlacePredictedAttack += new hook_PlacePredictedAttack(FireGoldFist_PlacePredictedAttack);
				CharacterMaster.GiveMoney += new hook_GiveMoney(CharacterMaster_GiveMoney);
			}
			if (EnableEye.Value || FightChanges.Value)
			{
				CharacterBody.OnInventoryChanged += new hook_OnInventoryChanged(CharacterBody_OnInventoryChanged);
			}
			if (EnableSword.Value || EnableGoldElites.Value)
			{
				GlobalEventManager.OnHitEnemy += new hook_OnHitEnemy(GlobalEventManager_OnHitEnemy);
			}
		}

		private void CharacterMaster_GiveMoney(orig_GiveMoney orig, CharacterMaster self, uint amount)
		{
			if (Object.op_Implicit((Object)(object)self.bodyInstanceObject))
			{
				amount += (uint)((int)(amount / 10) * self.bodyInstanceObject.GetComponent<CharacterBody>().GetBuffCount(hiddenGoldBuffDef));
			}
			orig.Invoke(self, amount);
		}

		private void FireGoldFist_PlacePredictedAttack(orig_PlacePredictedAttack orig, FireGoldFist self)
		{
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Unknown result type (might be due to invalid IL or missing references)
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			//IL_007f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0088: Unknown result type (might be due to invalid IL or missing references)
			//IL_008a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Unknown result type (might be due to invalid IL or missing references)
			//IL_009c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0175: Unknown result type (might be due to invalid IL or missing references)
			//IL_017a: Unknown result type (might be due to invalid IL or missing references)
			//IL_017f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0184: Unknown result type (might be due to invalid IL or missing references)
			//IL_0187: Unknown result type (might be due to invalid IL or missing references)
			//IL_018c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0193: Unknown result type (might be due to invalid IL or missing references)
			//IL_019b: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01da: Unknown result type (might be due to invalid IL or missing references)
			//IL_00da: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0200: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fc: Unknown result type (might be due to invalid IL or missing references)
			if (FireGoldFist.fistCount == 998)
			{
				float num = Random.Range(0f, 360f);
				RaycastHit val3 = default(RaycastHit);
				for (int i = 0; i < 4; i++)
				{
					int num2 = 0;
					for (int j = 0; j < 6; j++)
					{
						Vector3 val = Quaternion.Euler(0f, num + 90f * (float)i, 0f) * Vector3.forward;
						Vector3 val2 = ((FireFist)self).predictedTargetPosition + val * FireGoldFist.distanceBetweenFists * (float)j;
						float num3 = 60f;
						if (Physics.Raycast(new Ray(val2 + Vector3.up * (num3 / 2f), Vector3.down), ref val3, num3, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask), (QueryTriggerInteraction)1))
						{
							val2 = ((RaycastHit)(ref val3)).point;
						}
						((FireFist)self).PlaceSingleDelayBlast(val2, FireGoldFist.delayBetweenFists * (float)num2);
						num2++;
					}
				}
			}
			else if (FireGoldFist.fistCount == 999)
			{
				float num4 = Random.Range(0f, 360f);
				RaycastHit val6 = default(RaycastHit);
				for (int k = 0; k < 8; k++)
				{
					int num5 = 0;
					for (int l = 0; l < 6; l++)
					{
						Vector3 val4 = Quaternion.Euler(0f, num4 + 45f * (float)k, 0f) * Vector3.forward;
						Vector3 val5 = ((FireFist)self).predictedTargetPosition + val4 * FireGoldFist.distanceBetweenFists * (float)l;
						float num6 = 60f;
						if (Physics.Raycast(new Ray(val5 + Vector3.up * (num6 / 2f), Vector3.down), ref val6, num6, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.world)).mask), (QueryTriggerInteraction)1))
						{
							val5 = ((RaycastHit)(ref val6)).point;
						}
						((FireFist)self).PlaceSingleDelayBlast(val5, FireGoldFist.delayBetweenFists * (float)num5);
						num5++;
					}
				}
			}
			else
			{
				orig.Invoke(self);
			}
		}

		private void GoldshoresBossfight_OnExit(orig_OnExit orig, GoldshoresBossfight self)
		{
			FireGoldFist.fistCount = 6;
			FireGoldMegaLaser.projectileFireFrequency = 8f;
			RechargeRocks.rockControllerPrefab.GetComponent<TitanRockController>().fireInterval = 1f;
			orig.Invoke(self);
		}

		private void HealthComponent_TakeDamage(orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo)
		{
			if (self.body.HasBuff(titanGoldArmorBrokenDef))
			{
				damageInfo.damage *= 1.5f;
			}
			orig.Invoke(self, damageInfo);
		}

		private void GoldshoresBossfight_ServerFixedUpdate(orig_ServerFixedUpdate orig, GoldshoresBossfight self)
		{
			//IL_0073: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Expected O, but got Unknown
			//IL_0332: Unknown result type (might be due to invalid IL or missing references)
			//IL_033c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0341: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_009f: Invalid comparison between Unknown and I4
			//IL_0212: Unknown result type (might be due to invalid IL or missing references)
			if (((EntityState)self).fixedAge >= GoldshoresBossfight.transitionDuration)
			{
				self.missionController.ExitTransitionIntoBossfight();
				if (!self.hasSpawnedBoss)
				{
					self.SpawnBoss();
				}
				else if (self.scriptedCombatEncounter.combatSquad.readOnlyMembersList.Count == 0)
				{
					((EntityState)self).outer.SetNextState((EntityState)new Exit());
					foreach (CharacterMaster readOnlyInstances in CharacterMaster.readOnlyInstancesList)
					{
						if ((int)readOnlyInstances.teamIndex == 1)
						{
							readOnlyInstances.inventory.GiveItem(hiddenGoldBuffItemDef, 2 - self.serverCycleCount);
						}
					}
					if (self.serverCycleCount < 2)
					{
						Chat.AddMessage("<style=cShrine>The Guardian blesses you...</style>");
					}
					return;
				}
			}
			if (!Object.op_Implicit((Object)(object)self.scriptedCombatEncounter))
			{
				return;
			}
			if (!self.bossImmunity)
			{
				if (((FixedTimeStamp)(ref self.bossInvulnerabilityStartTime)).hasPassed)
				{
					bool flag = (double)self.scriptedCombatEncounter.combatSquad.readOnlyMembersList[0].bodyInstanceObject.GetComponent<HealthComponent>().combinedHealthFraction <= 0.666666666666 && self.serverCycleCount == 0;
					if ((double)self.scriptedCombatEncounter.combatSquad.readOnlyMembersList[0].bodyInstanceObject.GetComponent<HealthComponent>().combinedHealthFraction <= 0.333333333333 && self.serverCycleCount == 1)
					{
						self.ExtinguishBeacons();
						self.SetBossImmunity(true);
						self.scriptedCombatEncounter.combatSquad.readOnlyMembersList[0].bodyInstanceObject.GetComponent<CharacterBody>().inventory.GiveItem(Items.AlienHead.itemIndex, 1);
						TitanRockController component = RechargeRocks.rockControllerPrefab.GetComponent<TitanRockController>();
						component.fireInterval /= 2f;
						FireGoldFist.fistCount = 999;
						self.serverCycleCount++;
					}
					else if (flag)
					{
						self.ExtinguishBeacons();
						self.SetBossImmunity(true);
						FireGoldFist.fistCount = 998;
						FireGoldMegaLaser.projectileFireFrequency *= 1.25f;
						TitanRockController component2 = RechargeRocks.rockControllerPrefab.GetComponent<TitanRockController>();
						component2.fireInterval /= 2f;
						self.serverCycleCount++;
					}
				}
			}
			else if (self.missionController.beaconsActive >= self.missionController.beaconsToSpawnOnMap)
			{
				self.SetBossImmunity(false);
				if (self.serverCycleCount > 0)
				{
					self.scriptedCombatEncounter.combatSquad.readOnlyMembersList[0].bodyInstanceObject.GetComponent<CharacterBody>().AddTimedBuff(titanGoldArmorBrokenDef, 10f);
				}
				self.bossInvulnerabilityStartTime = FixedTimeStamp.now + GoldshoresBossfight.shieldRemovalDuration;
			}
		}

		private void GoldshoresBossfight_OnEnter(orig_OnEnter orig, GoldshoresBossfight self)
		{
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			orig.Invoke(self);
			GoldshoresBossfight.shieldRemovalDuration = 20f;
			self.bossInvulnerabilityStartTime = FixedTimeStamp.now + GoldshoresBossfight.shieldRemovalDuration;
		}

		private void GoldshoresMissionController_Start(orig_Awake orig, GoldshoresMissionController self)
		{
			self.beaconsToSpawnOnMap = 4;
			orig.Invoke(self);
		}

		private void GoldTitanManager_CalcTitanPowerAndBestTeam(ILContext il)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_010b: Unknown result type (might be due to invalid IL or missing references)
			ILCursor val = new ILCursor(il);
			ILCursor val2 = val;
			val2.GotoNext(new Func<Instruction, bool>[6]
			{
				(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, 2),
				(Instruction x) => ILPatternMatchingExt.MatchLdsfld(x, "RoR2.GoldTitanManager", "goldTitanItemIndex"),
				(Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 1),
				(Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 1),
				(Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, "RoR2.Util", "GetItemCountForTeam"),
				(Instruction x) => ILPatternMatchingExt.MatchStloc(x, 3)
			});
			val.Index += 5;
			val.Emit(OpCodes.Ldc_I4, TitanGoldMultiplier.Value);
			val.Emit(OpCodes.Mul);
		}

		private void SceneDirector_Start(orig_Start orig, SceneDirector self)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			Scene activeScene = SceneManager.GetActiveScene();
			if (((Scene)(ref activeScene)).name == "goldshores")
			{
			}
			orig.Invoke(self);
		}

		private void DeathRewards_OnKilledServer(orig_OnKilledServer orig, DeathRewards self, DamageReport damageReport)
		{
			if (self.characterBody.HasBuff(affixGoldDef))
			{
				self.goldReward *= 5;
			}
			orig.Invoke(self, damageReport);
		}

		private void CharacterBody_OnInventoryChanged(orig_OnInventoryChanged orig, CharacterBody self)
		{
			orig.Invoke(self);
			if (NetworkServer.active)
			{
				if (EnableEye.Value)
				{
					self.AddItemBehavior<LaserEyeBehavior>(self.inventory.GetItemCount(laserEyeDef));
				}
				if (FightChanges.Value)
				{
					self.AddItemBehavior<HiddenGoldBuffBehavior>(self.inventory.GetItemCount(hiddenGoldBuffItemDef));
				}
			}
		}

		private void GlobalEventManager_OnHitEnemy(orig_OnHitEnemy orig, GlobalEventManager self, DamageInfo damageInfo, GameObject victim)
		{
			//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0196: Unknown result type (might be due to invalid IL or missing references)
			//IL_019b: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0206: Unknown result type (might be due to invalid IL or missing references)
			//IL_0208: Unknown result type (might be due to invalid IL or missing references)
			//IL_0248: Unknown result type (might be due to invalid IL or missing references)
			//IL_025a: Unknown result type (might be due to invalid IL or missing references)
			//IL_025c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0263: Unknown result type (might be due to invalid IL or missing references)
			if (Object.op_Implicit((Object)(object)damageInfo.attacker))
			{
				CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>();
				CharacterBody val = (Object.op_Implicit((Object)(object)victim) ? victim.GetComponent<CharacterBody>() : null);
				if (Object.op_Implicit((Object)(object)component))
				{
					CharacterMaster master = component.master;
					if (Object.op_Implicit((Object)(object)master))
					{
						if (EnableGoldElites.Value && component.HasBuff(affixGoldDef))
						{
							CharacterMaster master2 = val.master;
							master2.money -= ((val.master.money < (uint)damageInfo.damage) ? val.master.money : ((uint)damageInfo.damage));
							master.GiveMoney((uint)(2f * Run.instance.difficultyCoefficient));
							EffectManager.SimpleImpactEffect(Resources.Load<GameObject>("Prefabs/Effects/ImpactEffects/CoinImpact"), damageInfo.position, Vector3.up, true);
						}
						if (EnableSword.Value)
						{
							int itemCount = component.inventory.GetItemCount(bigSwordDef);
							if (itemCount > 0 && Util.CheckRoll(SwordChance.Value * damageInfo.procCoefficient, component.master) && !((ProcChainMask)(ref damageInfo.procChainMask)).HasProc((ProcType)2))
							{
								float damage = Util.OnHitProcDamage(damageInfo.damage, component.damage, SwordDamage.Value * (float)itemCount);
								ProcChainMask procChainMask = damageInfo.procChainMask;
								((ProcChainMask)(ref procChainMask)).AddProc((ProcType)2);
								RaycastHit val2 = default(RaycastHit);
								Physics.Raycast(damageInfo.position, Vector3.down, ref val2, float.PositiveInfinity, LayerMask.GetMask(new string[1] { "World" }));
								FireProjectileInfo val3 = default(FireProjectileInfo);
								val3.projectilePrefab = Resources.Load<GameObject>("Prefabs/Projectiles/TitanGoldPreFistProjectile");
								val3.position = ((RaycastHit)(ref val2)).point;
								val3.rotation = Quaternion.identity;
								val3.procChainMask = procChainMask;
								val3.target = victim;
								val3.owner = ((Component)component).gameObject;
								val3.damage = damage;
								val3.crit = damageInfo.crit;
								val3.force = 10000f;
								val3.damageColorIndex = (DamageColorIndex)3;
								((FireProjectileInfo)(ref val3)).fuseOverride = 0.5f;
								FireProjectileInfo val4 = val3;
								ProjectileManager.instance.FireProjectile(val4);
							}
						}
					}
				}
			}
			orig.Invoke(self, damageInfo, victim);
		}

		private void GoldenKnurlStatChanges(CharacterBody sender, StatHookEventArgs args)
		{
			if (Object.op_Implicit((Object)(object)sender.master) && Object.op_Implicit((Object)(object)sender.master.inventory))
			{
				int itemCount = sender.inventory.GetItemCount(goldenKnurlDef);
				if (itemCount > 0)
				{
					args.armorAdd += KnurlArmor.Value * (float)itemCount;
					args.baseRegenAdd += KnurlRegen.Value * (float)itemCount;
					args.healthMultAdd += KnurlHealth.Value * (float)itemCount;
				}
			}
		}

		private void PickupDropletController_CreatePickupDroplet_PickupIndex_Vector3_Vector3(orig_CreatePickupDroplet_PickupIndex_Vector3_Vector3 orig, PickupIndex pickupIndex, Vector3 position, Vector3 velocity)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			//IL_0065: Unknown result type (might be due to invalid IL or missing references)
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
			if (pickupIndex == PickupCatalog.FindPickupIndex(Items.TitanGoldDuringTP.itemIndex))
			{
				Random random = new Random();
				switch (random.Next(0, newItemList.Count + 1))
				{
				case 0:
					pickupIndex = PickupCatalog.FindPickupIndex(Items.TitanGoldDuringTP.itemIndex);
					break;
				case 1:
					pickupIndex = PickupCatalog.FindPickupIndex(newItemList[0].itemIndex);
					break;
				case 2:
					pickupIndex = PickupCatalog.FindPickupIndex(newItemList[1].itemIndex);
					break;
				case 3:
					pickupIndex = PickupCatalog.FindPickupIndex(newItemList[2].itemIndex);
					break;
				}
			}
			orig.Invoke(pickupIndex, position, velocity);
		}

		private void GoldTitanManager_TryStartChannelingTitansServer(ILContext il)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			ILCursor val = new ILCursor(il);
			ILCursor val2 = val;
			val2.GotoNext(new Func<Instruction, bool>[5]
			{
				(Instruction x) => ILPatternMatchingExt.MatchLdloc(x, 1),
				(Instruction x) => ILPatternMatchingExt.MatchConvR4(x),
				(Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 0.5f),
				(Instruction x) => ILPatternMatchingExt.MatchCall<Mathf>(x, "Pow"),
				(Instruction x) => ILPatternMatchingExt.MatchMul(x)
			});
			val.Index += 2;
			val.Next.Operand = 1f;
		}
	}
}
namespace GoldenCoastPlusRevived.Properties
{
	[GeneratedCode("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
	[DebuggerNonUserCode]
	[CompilerGenerated]
	internal class GCPResources
	{
		private static ResourceManager resourceMan;

		private static CultureInfo resourceCulture;

		[EditorBrowsable(EditorBrowsableState.Advanced)]
		internal static ResourceManager ResourceManager
		{
			get
			{
				if (resourceMan == null)
				{
					ResourceManager resourceManager = new ResourceManager("GoldenCoastPlusRevived.GCPResources", typeof(GCPResources).Assembly);
					resourceMan = resourceManager;
				}
				return resourceMan;
			}
		}

		[EditorBrowsable(EditorBrowsableState.Advanced)]
		internal static CultureInfo Culture
		{
			get
			{
				return resourceCulture;
			}
			set
			{
				resourceCulture = value;
			}
		}

		internal static byte[] Aurelionite_s_Blessing
		{
			get
			{
				object @object = ResourceManager.GetObject("Aurelionite_s_Blessing", resourceCulture);
				return (byte[])@object;
			}
		}

		internal static byte[] Gold_Elite_Icon
		{
			get
			{
				object @object = ResourceManager.GetObject("Gold_Elite_Icon", resourceCulture);
				return (byte[])@object;
			}
		}

		internal static byte[] Golden_Knurl
		{
			get
			{
				object @object = ResourceManager.GetObject("Golden_Knurl", resourceCulture);
				return (byte[])@object;
			}
		}

		internal static byte[] Guardian_s_Eye
		{
			get
			{
				object @object = ResourceManager.GetObject("Guardian_s_Eye", resourceCulture);
				return (byte[])@object;
			}
		}

		internal static byte[] Titanic_Greatsword
		{
			get
			{
				object @object = ResourceManager.GetObject("Titanic_Greatsword", resourceCulture);
				return (byte[])@object;
			}
		}

		internal GCPResources()
		{
		}
	}
}
namespace GoldenCoastPlusRevived.Items
{
	internal class BigSword : ItemBase
	{
		internal override string name => "Titanic Greatsword";

		internal override string pickup => "Chance on hit to summon the sword of a long-imprisoned guardian.";

		internal override string description => "<style=cIsDamage>5%</style> chance on hit to summon <style=cIsDamage>Aurelionite's sword</style> to strike an enemy from underneath for <style=cIsDamage>1250%</style> <style=cStack>(+1250% per stack)</style> TOTAL damage.";

		internal override string lore => "The sword. The mark of a champion, fighting to protect. Perhaps, some day, the only thing between it and annihilation. A tool to defend.\n\nBut, also, the tool of a conqueror. One that is designed with the sole purpose to draw blood. Nothing more. In which way it is used is up to the wielder.";

		internal override string token => "BigSword";

		internal override GameObject modelPrefab => GCPAssets.BigSwordPrefab;

		internal override Sprite iconSprite => GCPAssets.BigSwordIcon;

		internal override ItemTier Tier => (ItemTier)4;

		internal override ItemTag[] ItemTags => (ItemTag[])(object)new ItemTag[2]
		{
			(ItemTag)11,
			(ItemTag)15
		};

		internal override bool hidden => false;

		internal override ItemDisplayRuleDict AddItemDisplays()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_0086: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0092: Expected O, but got Unknown
			//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0100: Unknown result type (might be due to invalid IL or missing references)
			//IL_0116: Unknown result type (might be due to invalid IL or missing references)
			//IL_011b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0124: Unknown result type (might be due to invalid IL or missing references)
			//IL_0125: Unknown result type (might be due to invalid IL or missing references)
			//IL_014d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0156: Unknown result type (might be due to invalid IL or missing references)
			//IL_0184: Unknown result type (might be due to invalid IL or missing references)
			//IL_0189: Unknown result type (might be due to invalid IL or missing references)
			//IL_019f: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0228: Unknown result type (might be due to invalid IL or missing references)
			//IL_022d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0243: Unknown result type (might be due to invalid IL or missing references)
			//IL_0248: Unknown result type (might be due to invalid IL or missing references)
			//IL_025e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0263: Unknown result type (might be due to invalid IL or missing references)
			//IL_026c: Unknown result type (might be due to invalid IL or missing references)
			//IL_026d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0295: Unknown result type (might be due to invalid IL or missing references)
			//IL_029e: Unknown result type (might be due to invalid IL or missing references)
			//IL_02cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_0302: Unknown result type (might be due to invalid IL or missing references)
			//IL_0307: Unknown result type (might be due to invalid IL or missing references)
			//IL_0310: Unknown result type (might be due to invalid IL or missing references)
			//IL_0311: Unknown result type (might be due to invalid IL or missing references)
			//IL_0339: Unknown result type (might be due to invalid IL or missing references)
			//IL_0342: Unknown result type (might be due to invalid IL or missing references)
			//IL_0370: Unknown result type (might be due to invalid IL or missing references)
			//IL_0375: Unknown result type (might be due to invalid IL or missing references)
			//IL_038b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0390: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_03dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0414: Unknown result type (might be due to invalid IL or missing references)
			//IL_0419: Unknown result type (might be due to invalid IL or missing references)
			//IL_042f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0434: Unknown result type (might be due to invalid IL or missing references)
			//IL_044a: Unknown result type (might be due to invalid IL or missing references)
			//IL_044f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0458: Unknown result type (might be due to invalid IL or missing references)
			//IL_0459: Unknown result type (might be due to invalid IL or missing references)
			//IL_0481: Unknown result type (might be due to invalid IL or missing references)
			//IL_048a: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_04bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_04fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_04fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0525: Unknown result type (might be due to invalid IL or missing references)
			//IL_052e: Unknown result type (might be due to invalid IL or missing references)
			//IL_055c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0561: Unknown result type (might be due to invalid IL or missing references)
			//IL_0577: Unknown result type (might be due to invalid IL or missing references)
			//IL_057c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0592: Unknown result type (might be due to invalid IL or missing references)
			//IL_0597: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_05c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_05d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0600: Unknown result type (might be due to invalid IL or missing references)
			//IL_0605: Unknown result type (might be due to invalid IL or missing references)
			//IL_061b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0620: Unknown result type (might be due to invalid IL or missing references)
			//IL_0636: Unknown result type (might be due to invalid IL or missing references)
			//IL_063b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0644: Unknown result type (might be due to invalid IL or missing references)
			//IL_0645: Unknown result type (might be due to invalid IL or missing references)
			//IL_066d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0676: Unknown result type (might be due to invalid IL or missing references)
			//IL_06a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_06a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_06bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_06c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_06da: Unknown result type (might be due to invalid IL or missing references)
			//IL_06df: Unknown result type (might be due to invalid IL or missing references)
			//IL_06e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_06e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0711: Unknown result type (might be due to invalid IL or missing references)
			//IL_071a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0748: Unknown result type (might be due to invalid IL or missing references)
			//IL_074d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0763: Unknown result type (might be due to invalid IL or missing references)
			//IL_0768: Unknown result type (might be due to invalid IL or missing references)
			//IL_077e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0783: Unknown result type (might be due to invalid IL or missing references)
			//IL_078c: Unknown result type (might be due to invalid IL or missing references)
			//IL_078d: Unknown result type (might be due to invalid IL or missing references)
			ItemDisplayRule[] array = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num = 0;
			ItemDisplayRule val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.BigSwordPrefab;
			val.childName = "Chest";
			val.localPos = new Vector3(-0.0329f, 0.2482f, -0.1994f);
			val.localAngles = new Vector3(351.7756f, 182.8893f, 176.6553f);
			val.localScale = new Vector3(0.075f, 0.075f, 0.075f);
			array[num] = val;
			ItemDisplayRuleDict val2 = new ItemDisplayRuleDict(array);
			ItemDisplayRuleDict val3 = val2;
			string text = "mdlHuntress";
			ItemDisplayRule[] array2 = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num2 = 0;
			val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.BigSwordPrefab;
			val.childName = "Chest";
			val.localPos = new Vector3(0.0638f, 0.0313f, -0.1337f);
			val.localAngles = new Vector3(10.1805f, 136.4797f, 157.9499f);
			val.localScale = new Vector3(0.075f, 0.075f, 0.075f);
			array2[num2] = val;
			val3.Add(text, array2);
			ItemDisplayRuleDict val4 = val2;
			string text2 = "mdlToolbot";
			ItemDisplayRule[] array3 = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num3 = 0;
			val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.BigSwordPrefab;
			val.childName = "HandR";
			val.localPos = new Vector3(0.4984f, -0.1438f, 6.4378f);
			val.localAngles = new Vector3(7.4983f, 274.1188f, 226.3156f);
			val.localScale = new Vector3(1.125f, 1.125f, 1.125f);
			array3[num3] = val;
			val4.Add(text2, array3);
			ItemDisplayRuleDict val5 = val2;
			string text3 = "mdlEngi";
			ItemDisplayRule[] array4 = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num4 = 0;
			val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.BigSwordPrefab;
			val.childName = "Chest";
			val.localPos = new Vector3(0.079f, 0.2449f, -0.3275f);
			val.localAngles = new Vector3(341.1019f, 177.318f, 142.7579f);
			val.localScale = new Vector3(0.1125f, 0.1125f, 0.1125f);
			array4[num4] = val;
			val5.Add(text3, array4);
			ItemDisplayRuleDict val6 = val2;
			string text4 = "mdlEngiTurret";
			ItemDisplayRule[] array5 = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num5 = 0;
			val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.BigSwordPrefab;
			val.childName = "Head";
			val.localPos = new Vector3(0.035f, 0.7881f, 1.4463f);
			val.localAngles = new Vector3(90f, 34.5601f, 0f);
			val.localScale = new Vector3(0.2022f, 0.2022f, 0.2022f);
			array5[num5] = val;
			val6.Add(text4, array5);
			ItemDisplayRuleDict val7 = val2;
			string text5 = "mdlMage";
			ItemDisplayRule[] array6 = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num6 = 0;
			val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.BigSwordPrefab;
			val.childName = "Chest";
			val.localPos = new Vector3(-0.0209f, -0.0058f, -0.358f);
			val.localAngles = new Vector3(353.1851f, 177.0113f, 165.1478f);
			val.localScale = new Vector3(0.0938f, 0.0938f, 0.0938f);
			array6[num6] = val;
			val7.Add(text5, array6);
			ItemDisplayRuleDict val8 = val2;
			string text6 = "mdlMerc";
			ItemDisplayRule[] array7 = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num7 = 0;
			val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.BigSwordPrefab;
			val.childName = "HandR";
			val.localPos = new Vector3(-0.5364f, 0.2649f, -0.1585f);
			val.localAngles = new Vector3(2.8962f, 342.4381f, 46.5564f);
			val.localScale = new Vector3(0.0966f, 0.0966f, 0.1345f);
			array7[num7] = val;
			val8.Add(text6, array7);
			ItemDisplayRuleDict val9 = val2;
			string text7 = "mdlTreebot";
			ItemDisplayRule[] array8 = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num8 = 0;
			val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.BigSwordPrefab;
			val.childName = "FootFrontR";
			val.localPos = new Vector3(0.0274f, -0.5904f, 0.0166f);
			val.localAngles = new Vector3(1.1992f, 143.2164f, 139.9014f);
			val.localScale = new Vector3(0.095f, 0.095f, 0.095f);
			array8[num8] = val;
			val9.Add(text7, array8);
			ItemDisplayRuleDict val10 = val2;
			string text8 = "mdlLoader";
			ItemDisplayRule[] array9 = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num9 = 0;
			val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.BigSwordPrefab;
			val.childName = "Chest";
			val.localPos = new Vector3(0.0869f, 0.0385f, -0.3257f);
			val.localAngles = new Vector3(358.9687f, 156.1434f, 135.99f);
			val.localScale = new Vector3(0.1125f, 0.1125f, 0.1125f);
			array9[num9] = val;
			val10.Add(text8, array9);
			ItemDisplayRuleDict val11 = val2;
			string text9 = "mdlCroco";
			ItemDisplayRule[] array10 = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num10 = 0;
			val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.BigSwordPrefab;
			val.childName = "Head";
			val.localPos = new Vector3(-5.2534f, 3.3026f, -0.8387f);
			val.localAngles = new Vector3(356.6106f, 355.6419f, 44.4464f);
			val.localScale = new Vector3(0.75f, 0.75f, 0.75f);
			array10[num10] = val;
			val11.Add(text9, array10);
			ItemDisplayRuleDict val12 = val2;
			string text10 = "mdlCaptain";
			ItemDisplayRule[] array11 = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num11 = 0;
			val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.BigSwordPrefab;
			val.childName = "HandR";
			val.localPos = new Vector3(0.1117f, 0.0118f, -0.6402f);
			val.localAngles = new Vector3(353.923f, 81.0515f, 224.7833f);
			val.localScale = new Vector3(0.1169f, 0.1169f, 0.1169f);
			array11[num11] = val;
			val12.Add(text10, array11);
			ItemDisplayRuleDict val13 = val2;
			string text11 = "mdlBandit2";
			ItemDisplayRule[] array12 = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num12 = 0;
			val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.BigSwordPrefab;
			val.childName = "MuzzleShotgun";
			val.localPos = new Vector3(-0.0305f, -0.0199f, 0.2406f);
			val.localAngles = new Vector3(8.2793f, 270.418f, 229.606f);
			val.localScale = new Vector3(0.0397f, 0.0397f, 0.0397f);
			array12[num12] = val;
			val13.Add(text11, array12);
			return val2;
		}
	}
	internal class GoldenKnurl : ItemBase
	{
		internal override string name => "Golden Knurl";

		internal override string pickup => "Boosts health, regeneration, and armor.";

		internal override string description => "<style=cIsHealing>Increase maximum health</style> by <style=cIsHealing>+10%</style> <style=cStack>(+10% per stack)</style>, <style=cIsHealing>base health regen</style> by <style=cIsHealing>+2.4 hp/s</style> <style=cStack>(+2.4 hp/s per stack)</style>, and <style=cIsUtility>armor</style> by <style=cIsUtility>+20</style> <style=cStack>(+20 per stack)</style>.";

		internal override string lore => "A well-tested design. One that's proven powerful, yet gentle. That which can coexist with this planet's creatures, but defend them when need be.\n\nA construction of gold. Something unique. Something distinct. Something iconic. One to stand out, and be remembered both by friend and foe.\n\nA guardian. A creature who can defend this Heaven. One day, we will no longer be here for these creatures. But this one will. One to ensure their survival, when we can not.";

		internal override string token => "GoldenKnurl";

		internal override GameObject modelPrefab => GCPAssets.GoldenKnurlPrefab;

		internal override Sprite iconSprite => GCPAssets.GoldenKnurlIcon;

		internal override ItemTier Tier => (ItemTier)4;

		internal override ItemTag[] ItemTags => (ItemTag[])(object)new ItemTag[2]
		{
			(ItemTag)11,
			(ItemTag)15
		};

		internal override bool hidden => false;

		internal override ItemDisplayRuleDict AddItemDisplays()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_0086: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0092: Expected O, but got Unknown
			//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0100: Unknown result type (might be due to invalid IL or missing references)
			//IL_0116: Unknown result type (might be due to invalid IL or missing references)
			//IL_011b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0124: Unknown result type (might be due to invalid IL or missing references)
			//IL_0125: Unknown result type (might be due to invalid IL or missing references)
			//IL_014d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0156: Unknown result type (might be due to invalid IL or missing references)
			//IL_0184: Unknown result type (might be due to invalid IL or missing references)
			//IL_0189: Unknown result type (might be due to invalid IL or missing references)
			//IL_019f: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0228: Unknown result type (might be due to invalid IL or missing references)
			//IL_022d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0243: Unknown result type (might be due to invalid IL or missing references)
			//IL_0248: Unknown result type (might be due to invalid IL or missing references)
			//IL_025e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0263: Unknown result type (might be due to invalid IL or missing references)
			//IL_026c: Unknown result type (might be due to invalid IL or missing references)
			//IL_026d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0295: Unknown result type (might be due to invalid IL or missing references)
			//IL_029e: Unknown result type (might be due to invalid IL or missing references)
			//IL_02cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_0302: Unknown result type (might be due to invalid IL or missing references)
			//IL_0307: Unknown result type (might be due to invalid IL or missing references)
			//IL_0310: Unknown result type (might be due to invalid IL or missing references)
			//IL_0311: Unknown result type (might be due to invalid IL or missing references)
			//IL_0339: Unknown result type (might be due to invalid IL or missing references)
			//IL_0342: Unknown result type (might be due to invalid IL or missing references)
			//IL_0370: Unknown result type (might be due to invalid IL or missing references)
			//IL_0375: Unknown result type (might be due to invalid IL or missing references)
			//IL_038b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0390: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_03dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0414: Unknown result type (might be due to invalid IL or missing references)
			//IL_0419: Unknown result type (might be due to invalid IL or missing references)
			//IL_042f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0434: Unknown result type (might be due to invalid IL or missing references)
			//IL_044a: Unknown result type (might be due to invalid IL or missing references)
			//IL_044f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0458: Unknown result type (might be due to invalid IL or missing references)
			//IL_0459: Unknown result type (might be due to invalid IL or missing references)
			//IL_0481: Unknown result type (might be due to invalid IL or missing references)
			//IL_048a: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_04bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_04fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_04fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0525: Unknown result type (might be due to invalid IL or missing references)
			//IL_052e: Unknown result type (might be due to invalid IL or missing references)
			//IL_055c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0561: Unknown result type (might be due to invalid IL or missing references)
			//IL_0577: Unknown result type (might be due to invalid IL or missing references)
			//IL_057c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0592: Unknown result type (might be due to invalid IL or missing references)
			//IL_0597: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_05c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_05d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0600: Unknown result type (might be due to invalid IL or missing references)
			//IL_0605: Unknown result type (might be due to invalid IL or missing references)
			//IL_061b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0620: Unknown result type (might be due to invalid IL or missing references)
			//IL_0636: Unknown result type (might be due to invalid IL or missing references)
			//IL_063b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0644: Unknown result type (might be due to invalid IL or missing references)
			//IL_0645: Unknown result type (might be due to invalid IL or missing references)
			//IL_066d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0676: Unknown result type (might be due to invalid IL or missing references)
			//IL_06a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_06a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_06bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_06c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_06da: Unknown result type (might be due to invalid IL or missing references)
			//IL_06df: Unknown result type (might be due to invalid IL or missing references)
			//IL_06e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_06e9: Unknown result type (might be due to invalid IL or missing references)
			ItemDisplayRule[] array = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num = 0;
			ItemDisplayRule val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.GoldenKnurlFollowerPrefab;
			val.childName = "Chest";
			val.localPos = new Vector3(0.344f, 0.425f, -0.053f);
			val.localAngles = new Vector3(276.5326f, 108.8338f, 239.9354f);
			val.localScale = new Vector3(0.16f, 0.16f, 0.16f);
			array[num] = val;
			ItemDisplayRuleDict val2 = new ItemDisplayRuleDict(array);
			ItemDisplayRuleDict val3 = val2;
			string text = "mdlHuntress";
			ItemDisplayRule[] array2 = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num2 = 0;
			val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.GoldenKnurlFollowerPrefab;
			val.childName = "Chest";
			val.localPos = new Vector3(0.17f, 0.316f, 0.138f);
			val.localAngles = new Vector3(280.0211f, 150.599f, 218.2666f);
			val.localScale = new Vector3(0.11f, 0.11f, 0.11f);
			array2[num2] = val;
			val3.Add(text, array2);
			ItemDisplayRuleDict val4 = val2;
			string text2 = "mdlToolbot";
			ItemDisplayRule[] array3 = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num3 = 0;
			val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.GoldenKnurlFollowerPrefab;
			val.childName = "UpperArmR";
			val.localPos = new Vector3(0.32f, 0.09f, -0.03f);
			val.localAngles = new Vector3(85.4049f, -0.0001f, -0.0001f);
			val.localScale = new Vector3(1.01f, 1.01f, 1.01f);
			array3[num3] = val;
			val4.Add(text2, array3);
			ItemDisplayRuleDict val5 = val2;
			string text3 = "mdlEngi";
			ItemDisplayRule[] array4 = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num4 = 0;
			val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.GoldenKnurlFollowerPrefab;
			val.childName = "Chest";
			val.localPos = new Vector3(0.386f, 0.425f, -0.053f);
			val.localAngles = new Vector3(276.5326f, 108.8338f, 239.9354f);
			val.localScale = new Vector3(0.16f, 0.16f, 0.16f);
			array4[num4] = val;
			val5.Add(text3, array4);
			ItemDisplayRuleDict val6 = val2;
			string text4 = "mdlMage";
			ItemDisplayRule[] array5 = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num5 = 0;
			val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.GoldenKnurlFollowerPrefab;
			val.childName = "Chest";
			val.localPos = new Vector3(0.225f, 0.307f, 0.004f);
			val.localAngles = new Vector3(279.6995f, 13.3832f, 338.7414f);
			val.localScale = new Vector3(0.086f, 0.086f, 0.086f);
			array5[num5] = val;
			val6.Add(text4, array5);
			ItemDisplayRuleDict val7 = val2;
			string text5 = "mdlMerc";
			ItemDisplayRule[] array6 = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num6 = 0;
			val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.GoldenKnurlFollowerPrefab;
			val.childName = "Chest";
			val.localPos = new Vector3(0.343f, 0.253f, -0.054f);
			val.localAngles = new Vector3(276.8653f, 259.4112f, 89.62f);
			val.localScale = new Vector3(0.11f, 0.11f, 0.11f);
			array6[num6] = val;
			val7.Add(text5, array6);
			ItemDisplayRuleDict val8 = val2;
			string text6 = "mdlTreebot";
			ItemDisplayRule[] array7 = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num7 = 0;
			val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.GoldenKnurlFollowerPrefab;
			val.childName = "FlowerBase";
			val.localPos = new Vector3(-0.5f, 0f, -0.023f);
			val.localAngles = new Vector3(0f, 0f, 0f);
			val.localScale = new Vector3(0.11f, 0.11f, 0.11f);
			array7[num7] = val;
			val8.Add(text6, array7);
			ItemDisplayRuleDict val9 = val2;
			string text7 = "mdlLoader";
			ItemDisplayRule[] array8 = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num8 = 0;
			val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.GoldenKnurlFollowerPrefab;
			val.childName = "MechUpperArmR";
			val.localPos = new Vector3(-0.095f, 0.066f, -0.071f);
			val.localAngles = new Vector3(48.8601f, 224.1132f, 52.647f);
			val.localScale = new Vector3(0.11f, 0.11f, 0.11f);
			array8[num8] = val;
			val9.Add(text7, array8);
			ItemDisplayRuleDict val10 = val2;
			string text8 = "mdlCroco";
			ItemDisplayRule[] array9 = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num9 = 0;
			val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.GoldenKnurlFollowerPrefab;
			val.childName = "UpperArmR";
			val.localPos = new Vector3(1.82f, 1.78f, 0.11f);
			val.localAngles = new Vector3(284.9999f, 90.0006f, 284.9994f);
			val.localScale = new Vector3(1.01f, 1.01f, 1.01f);
			array9[num9] = val;
			val10.Add(text8, array9);
			ItemDisplayRuleDict val11 = val2;
			string text9 = "mdlCaptain";
			ItemDisplayRule[] array10 = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num10 = 0;
			val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.GoldenKnurlFollowerPrefab;
			val.childName = "Chest";
			val.localPos = new Vector3(0.405f, 0.404f, -0.042f);
			val.localAngles = new Vector3(276.8653f, 259.4112f, 89.62f);
			val.localScale = new Vector3(0.11f, 0.11f, 0.11f);
			array10[num10] = val;
			val11.Add(text9, array10);
			ItemDisplayRuleDict val12 = val2;
			string text10 = "mdlBandit2";
			ItemDisplayRule[] array11 = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num11 = 0;
			val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.GoldenKnurlFollowerPrefab;
			val.childName = "Chest";
			val.localPos = new Vector3(0.228f, 0.383f, -0.109f);
			val.localAngles = new Vector3(276.5326f, 108.8338f, 239.9354f);
			val.localScale = new Vector3(0.086f, 0.086f, 0.086f);
			array11[num11] = val;
			val12.Add(text10, array11);
			return val2;
		}
	}
	public class HiddenGoldBuffBehavior : ItemBehavior
	{
		private void FixedUpdate()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			base.body.SetBuffCount(GoldenCoastPlusPlugin.hiddenGoldBuffDef.buffIndex, base.stack);
		}
	}
	internal class HiddenGoldBuffItem : ItemBase
	{
		internal override string name => "Aurelionite's Blessing";

		internal override string pickup => "The Guardian of the Golden Coast has blessed you.";

		internal override string description => "Gain <style=cShrine>10%</style> <style=cStack>(+10% per stack)</style> <style=cShrine>more gold</style>.";

		internal override string lore => "";

		internal override string token => "HiddenGoldBuffItem";

		internal override GameObject modelPrefab => null;

		internal override Sprite iconSprite => GCPAssets.hiddenGoldBuffIcon;

		internal override ItemTier Tier => (ItemTier)5;

		internal override ItemTag[] ItemTags => (ItemTag[])(object)new ItemTag[2]
		{
			(ItemTag)11,
			(ItemTag)15
		};

		internal override bool hidden => true;
	}
	internal abstract class ItemBase
	{
		internal abstract string name { get; }

		internal abstract string pickup { get; }

		internal abstract string description { get; }

		internal abstract string lore { get; }

		internal abstract string token { get; }

		internal abstract GameObject modelPrefab { get; }

		internal abstract Sprite iconSprite { get; }

		internal abstract ItemTier Tier { get; }

		internal virtual ItemTag[] ItemTags { get; set; } = (ItemTag[])(object)new ItemTag[0];


		internal abstract bool hidden { get; }

		internal ItemDef AddItem()
		{
			//IL_011e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0123: Unknown result type (might be due to invalid IL or missing references)
			//IL_0159: Unknown result type (might be due to invalid IL or missing references)
			//IL_0163: Expected O, but got Unknown
			LanguageAPI.Add(token.ToUpper() + "_NAME", name);
			LanguageAPI.Add(token.ToUpper() + "_PICKUP", pickup);
			LanguageAPI.Add(token.ToUpper() + "_DESC", description);
			LanguageAPI.Add(token.ToUpper() + "_LORE", lore);
			ItemDef val = ScriptableObject.CreateInstance<ItemDef>();
			((Object)val).name = token;
			val.nameToken = token.ToUpper() + "_NAME";
			val.pickupToken = token.ToUpper() + "_PICKUP";
			val.descriptionToken = token.ToUpper() + "_DESC";
			val.loreToken = token.ToUpper() + "_LORE";
			val.pickupModelPrefab = modelPrefab;
			val.pickupIconSprite = iconSprite;
			val.deprecatedTier = Tier;
			if (ItemTags.Length != 0)
			{
				val.tags = ItemTags;
			}
			val.hidden = hidden;
			ItemDisplayRuleDict val2 = AddItemDisplays();
			ItemAPI.Add(new CustomItem(val, val2));
			if (!hidden)
			{
				GoldenCoastPlusPlugin.newItemList.Add(val);
			}
			return val;
		}

		internal virtual ItemDisplayRuleDict AddItemDisplays()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Expected O, but got Unknown
			return new ItemDisplayRuleDict(Array.Empty<ItemDisplayRule>());
		}
	}
	internal class LaserEye : ItemBase
	{
		internal override string name => "Guardian's Eye";

		internal override string pickup => "Collecting gold will charge up a powerful laser.";

		internal override string description => "<style=cShrine>Collecting gold</style> will charge up a <style=cDeath>powerful laser</style> and grant a <style=cIsUtility>stacking buff</style>. At ten stacks of this buff, the <style=cDeath>laser</style> will fire at all enemies within 30 meters, dealing <style=cIsDamage>2500%</style> <style=cStack>(+2500% per stack)</style> BASE damage.";

		internal override string lore => "The ability to see. Designs such as this have no need to taste. They do not feel, nor smell, nor hear that which surrounds them. They have no need.\n\n...\n\nA sad existence. Forced to follow orders. Nothing more than a servant. No feelings.\n\nPerhaps one exception. One day, this guardian will have no one to take orders from. Will have new challenges to overcome, and new decisions to make. A proper protector for this planet.";

		internal override string token => "LaserEye";

		internal override GameObject modelPrefab => GCPAssets.LaserEyePrefab;

		internal override Sprite iconSprite => GCPAssets.LaserEyeIcon;

		internal override ItemTier Tier => (ItemTier)4;

		internal override ItemTag[] ItemTags => (ItemTag[])(object)new ItemTag[2]
		{
			(ItemTag)11,
			(ItemTag)15
		};

		internal override bool hidden => false;

		internal override ItemDisplayRuleDict AddItemDisplays()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Unknown result type (might be due to invalid IL or missing references)
			//IL_0086: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0092: Expected O, but got Unknown
			//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0100: Unknown result type (might be due to invalid IL or missing references)
			//IL_0116: Unknown result type (might be due to invalid IL or missing references)
			//IL_011b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0124: Unknown result type (might be due to invalid IL or missing references)
			//IL_0125: Unknown result type (might be due to invalid IL or missing references)
			//IL_014d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0156: Unknown result type (might be due to invalid IL or missing references)
			//IL_0184: Unknown result type (might be due to invalid IL or missing references)
			//IL_0189: Unknown result type (might be due to invalid IL or missing references)
			//IL_019f: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0228: Unknown result type (might be due to invalid IL or missing references)
			//IL_022d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0243: Unknown result type (might be due to invalid IL or missing references)
			//IL_0248: Unknown result type (might be due to invalid IL or missing references)
			//IL_025e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0263: Unknown result type (might be due to invalid IL or missing references)
			//IL_026c: Unknown result type (might be due to invalid IL or missing references)
			//IL_026d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0295: Unknown result type (might be due to invalid IL or missing references)
			//IL_029e: Unknown result type (might be due to invalid IL or missing references)
			//IL_02cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_0302: Unknown result type (might be due to invalid IL or missing references)
			//IL_0307: Unknown result type (might be due to invalid IL or missing references)
			//IL_0310: Unknown result type (might be due to invalid IL or missing references)
			//IL_0311: Unknown result type (might be due to invalid IL or missing references)
			//IL_0339: Unknown result type (might be due to invalid IL or missing references)
			//IL_0342: Unknown result type (might be due to invalid IL or missing references)
			//IL_0370: Unknown result type (might be due to invalid IL or missing references)
			//IL_0375: Unknown result type (might be due to invalid IL or missing references)
			//IL_038b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0390: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_03dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_03e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0414: Unknown result type (might be due to invalid IL or missing references)
			//IL_0419: Unknown result type (might be due to invalid IL or missing references)
			//IL_042f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0434: Unknown result type (might be due to invalid IL or missing references)
			//IL_044a: Unknown result type (might be due to invalid IL or missing references)
			//IL_044f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0458: Unknown result type (might be due to invalid IL or missing references)
			//IL_0459: Unknown result type (might be due to invalid IL or missing references)
			//IL_0481: Unknown result type (might be due to invalid IL or missing references)
			//IL_048a: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_04bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_04fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_04fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0525: Unknown result type (might be due to invalid IL or missing references)
			//IL_052e: Unknown result type (might be due to invalid IL or missing references)
			//IL_055c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0561: Unknown result type (might be due to invalid IL or missing references)
			//IL_0577: Unknown result type (might be due to invalid IL or missing references)
			//IL_057c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0592: Unknown result type (might be due to invalid IL or missing references)
			//IL_0597: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_05c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_05d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_0600: Unknown result type (might be due to invalid IL or missing references)
			//IL_0605: Unknown result type (might be due to invalid IL or missing references)
			//IL_061b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0620: Unknown result type (might be due to invalid IL or missing references)
			//IL_0636: Unknown result type (might be due to invalid IL or missing references)
			//IL_063b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0644: Unknown result type (might be due to invalid IL or missing references)
			//IL_0645: Unknown result type (might be due to invalid IL or missing references)
			//IL_066d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0676: Unknown result type (might be due to invalid IL or missing references)
			//IL_06a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_06a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_06bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_06c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_06da: Unknown result type (might be due to invalid IL or missing references)
			//IL_06df: Unknown result type (might be due to invalid IL or missing references)
			//IL_06e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_06e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0711: Unknown result type (might be due to invalid IL or missing references)
			//IL_071a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0748: Unknown result type (might be due to invalid IL or missing references)
			//IL_074d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0763: Unknown result type (might be due to invalid IL or missing references)
			//IL_0768: Unknown result type (might be due to invalid IL or missing references)
			//IL_077e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0783: Unknown result type (might be due to invalid IL or missing references)
			//IL_078c: Unknown result type (might be due to invalid IL or missing references)
			//IL_078d: Unknown result type (might be due to invalid IL or missing references)
			ItemDisplayRule[] array = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num = 0;
			ItemDisplayRule val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.LaserEyePrefab;
			val.childName = "Chest";
			val.localPos = new Vector3(-0.0013f, 0.177f, 0.1923f);
			val.localAngles = new Vector3(357.5498f, 279.5151f, 288.6346f);
			val.localScale = new Vector3(0.1f, 0.1f, 0.1f);
			array[num] = val;
			ItemDisplayRuleDict val2 = new ItemDisplayRuleDict(array);
			ItemDisplayRuleDict val3 = val2;
			string text = "mdlHuntress";
			ItemDisplayRule[] array2 = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num2 = 0;
			val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.LaserEyePrefab;
			val.childName = "Chest";
			val.localPos = new Vector3(0.018f, 0.1588f, 0.1245f);
			val.localAngles = new Vector3(341.0291f, 278.4884f, 331.1128f);
			val.localScale = new Vector3(0.1f, 0.1f, 0.1f);
			array2[num2] = val;
			val3.Add(text, array2);
			ItemDisplayRuleDict val4 = val2;
			string text2 = "mdlToolbot";
			ItemDisplayRule[] array3 = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num3 = 0;
			val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.LaserEyePrefab;
			val.childName = "Head";
			val.localPos = new Vector3(0.4261f, 2.8735f, -0.9273f);
			val.localAngles = new Vector3(351.3385f, 95.4094f, 354.9869f);
			val.localScale = new Vector3(1.2285f, 1.2285f, 1.2285f);
			array3[num3] = val;
			val4.Add(text2, array3);
			ItemDisplayRuleDict val5 = val2;
			string text3 = "mdlEngi";
			ItemDisplayRule[] array4 = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num4 = 0;
			val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.LaserEyePrefab;
			val.childName = "Chest";
			val.localPos = new Vector3(-0.0016f, 0.2146f, 0.243f);
			val.localAngles = new Vector3(0f, 271.3374f, 288.438f);
			val.localScale = new Vector3(0.1369f, 0.1369f, 0.1369f);
			array4[num4] = val;
			val5.Add(text3, array4);
			ItemDisplayRuleDict val6 = val2;
			string text4 = "mdlEngiTurret";
			ItemDisplayRule[] array5 = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num5 = 0;
			val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.LaserEyePrefab;
			val.childName = "Head";
			val.localPos = new Vector3(0f, 0.76f, 0.698f);
			val.localAngles = new Vector3(0f, 269.6484f, 293.6638f);
			val.localScale = new Vector3(0.5f, 0.5f, 0.5f);
			array5[num5] = val;
			val6.Add(text4, array5);
			ItemDisplayRuleDict val7 = val2;
			string text5 = "mdlMage";
			ItemDisplayRule[] array6 = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num6 = 0;
			val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.LaserEyePrefab;
			val.childName = "Chest";
			val.localPos = new Vector3(-0.0249f, 0.1892f, 0.0943f);
			val.localAngles = new Vector3(359.8906f, 278.0999f, 317.4402f);
			val.localScale = new Vector3(0.1f, 0.1f, 0.1f);
			array6[num6] = val;
			val7.Add(text5, array6);
			ItemDisplayRuleDict val8 = val2;
			string text6 = "mdlMerc";
			ItemDisplayRule[] array7 = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num7 = 0;
			val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.LaserEyePrefab;
			val.childName = "Chest";
			val.localPos = new Vector3(-0.0033f, 0.1505f, 0.1603f);
			val.localAngles = new Vector3(355.2179f, 277.7787f, 314.9767f);
			val.localScale = new Vector3(0.1f, 0.1f, 0.1f);
			array7[num7] = val;
			val8.Add(text6, array7);
			ItemDisplayRuleDict val9 = val2;
			string text7 = "mdlTreebot";
			ItemDisplayRule[] array8 = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num8 = 0;
			val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.LaserEyePrefab;
			val.childName = "PlatformBase";
			val.localPos = new Vector3(-0.0304f, -0.3919f, 0.5383f);
			val.localAngles = new Vector3(1.1289f, 279.7583f, 267.7908f);
			val.localScale = new Vector3(0.415f, 0.415f, 0.415f);
			array8[num8] = val;
			val9.Add(text7, array8);
			ItemDisplayRuleDict val10 = val2;
			string text8 = "mdlLoader";
			ItemDisplayRule[] array9 = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num9 = 0;
			val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.LaserEyePrefab;
			val.childName = "Chest";
			val.localPos = new Vector3(-0.001f, 0.1805f, 0.1468f);
			val.localAngles = new Vector3(354.7388f, 278.3596f, 305.6868f);
			val.localScale = new Vector3(0.135f, 0.135f, 0.135f);
			array9[num9] = val;
			val10.Add(text8, array9);
			ItemDisplayRuleDict val11 = val2;
			string text9 = "mdlCroco";
			ItemDisplayRule[] array10 = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num10 = 0;
			val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.LaserEyePrefab;
			val.childName = "Head";
			val.localPos = new Vector3(0.034f, 2.327f, 0.9617f);
			val.localAngles = new Vector3(358.9204f, 280.5208f, 318.6186f);
			val.localScale = new Vector3(0.766f, 0.766f, 0.766f);
			array10[num10] = val;
			val11.Add(text9, array10);
			ItemDisplayRuleDict val12 = val2;
			string text10 = "mdlCaptain";
			ItemDisplayRule[] array11 = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num11 = 0;
			val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.LaserEyePrefab;
			val.childName = "Chest";
			val.localPos = new Vector3(0f, 0.1768f, 0.191f);
			val.localAngles = new Vector3(350.8254f, 277.3032f, 304.3293f);
			val.localScale = new Vector3(0.1213f, 0.1213f, 0.1213f);
			array11[num11] = val;
			val12.Add(text10, array11);
			ItemDisplayRuleDict val13 = val2;
			string text11 = "mdlBandit2";
			ItemDisplayRule[] array12 = (ItemDisplayRule[])(object)new ItemDisplayRule[1];
			int num12 = 0;
			val = default(ItemDisplayRule);
			val.ruleType = (ItemDisplayRuleType)0;
			val.followerPrefab = GCPAssets.LaserEyePrefab;
			val.childName = "Chest";
			val.localPos = new Vector3(-0.0021f, 0.2298f, 0.1222f);
			val.localAngles = new Vector3(358.215f, 265.8196f, 314.7138f);
			val.localScale = new Vector3(0.1f, 0.1f, 0.1f);
			array12[num12] = val;
			val13.Add(text11, array12);
			return val2;
		}
	}
	public class LaserEyeBehavior : ItemBehavior
	{
		private int goldDifference;

		private int currentGold;

		private int previousGold = 0;

		private void FixedUpdate()
		{
			currentGold = (int)base.body.master.money;
			goldDifference = currentGold - previousGold;
			if (goldDifference > 0)
			{
				RefreshTimedBuffs(base.body, GoldenCoastPlusPlugin.laserEyeChargeDef, 5f);
				base.body.AddTimedBuff(GoldenCoastPlusPlugin.laserEyeChargeDef, 5f);
			}
			if (base.body.GetBuffCount(GoldenCoastPlusPlugin.laserEyeChargeDef) >= GoldenCoastPlusPlugin.EyeStacksRequired.Value)
			{
				base.body.ClearTimedBuffs(GoldenCoastPlusPlugin.laserEyeChargeDef);
				FireLaser();
			}
			previousGold = currentGold;
		}

		private void FireLaser()
		{
			//IL_0004: Unknown result type (might be due to invalid IL or missing references)
			bool flag = false;
			TeamIndex val = (TeamIndex)0;
			bool flag2 = false;
			if (flag)
			{
				Util.PlaySound(FireLaser.attackSoundString, ((Component)base.body).gameObject);
			}
		}

		private void RefreshTimedBuffs(CharacterBody body, BuffDef buffDef, float duration)
		{
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			if (!Object.op_Implicit((Object)(object)body) || body.GetBuffCount(buffDef) <= 0)
			{
				return;
			}
			foreach (TimedBuff timedBuff in body.timedBuffs)
			{
				if (timedBuff.buffIndex == buffDef.buffIndex)
				{
					timedBuff.timer = duration;
				}
			}
		}
	}
}
namespace GoldenCoastPlusRevived.Buffs
{
	internal class AffixGold : BuffBase
	{
		internal override string name => "AffixGold";

		internal override Sprite icon => GCPAssets.AffixGoldIcon;

		internal override Color color => Color.white;

		internal override bool canStack => false;

		internal override bool isDebuff => false;

		internal override EliteDef eliteDef => Resources.Load<EliteDef>("elitedefs/Gold");
	}
	internal abstract class BuffBase
	{
		internal abstract string name { get; }

		internal abstract Sprite icon { get; }

		internal abstract Color color { get; }

		internal abstract bool canStack { get; }

		internal abstract bool isDebuff { get; }

		internal abstract EliteDef eliteDef { get; }

		internal BuffDef AddBuff()
		{
			//IL_0022: 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)
			BuffDef val = ScriptableObject.CreateInstance<BuffDef>();
			((Object)val).name = name;
			val.iconSprite = icon;
			val.buffColor = color;
			val.canStack = canStack;
			val.isDebuff = isDebuff;
			val.eliteDef = eliteDef;
			ContentAddition.AddBuffDef(val);
			return val;
		}
	}
	internal class HiddenGoldBuff : BuffBase
	{
		internal override string name => "<style=cShrine>Aurelionite's Blessing</style>";

		internal override Sprite icon => GCPAssets.hiddenGoldBuffIcon;

		internal override Color color => Color.white;

		internal override bool canStack => true;

		internal override bool isDebuff => false;

		internal override EliteDef eliteDef => null;
	}
	internal class LaserEyeCharge : BuffBase
	{
		internal override string name => "LaserEyeCharge";

		internal override Sprite icon => GCPAssets.LaserEyeIcon;

		internal override Color color => Color.red;

		internal override bool canStack => true;

		internal override bool isDebuff => false;

		internal override EliteDef eliteDef => null;
	}
	internal class TitanGoldArmorBroken : BuffBase
	{
		internal override string name => "TitanGoldArmorBroken";

		internal override Sprite icon => GCPAssets.TitanGoldArmorBrokenIcon;

		internal override Color color => Color.yellow;

		internal override bool canStack => false;

		internal override bool isDebuff => true;

		internal override EliteDef eliteDef => null;
	}
}