Decompiled source of RandomlyGeneratedItems v0.0.6

RandomlyGeneratedItems.dll

Decompiled 7 months ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using Microsoft.CodeAnalysis;
using On.RoR2;
using On.RoR2.UI.MainMenu;
using R2API;
using R2API.Utils;
using RoR2;
using RoR2.Projectile;
using RoR2.UI.MainMenu;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.Networking;

[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.0", FrameworkDisplayName = ".NET Standard 2.0")]
[assembly: AssemblyCompany("RandomlyGeneratedItems")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+bb09281b193b8acc7be55e3890264d07f4769e84")]
[assembly: AssemblyProduct("RandomlyGeneratedItems")]
[assembly: AssemblyTitle("RandomlyGeneratedItems")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

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

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

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

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace RandomlyGeneratedItems
{
	public class Buffs
	{
		public class NoDecay
		{
			[Serializable]
			[CompilerGenerated]
			private sealed class <>c
			{
				public static readonly <>c <>9 = new <>c();

				public static StatHookEventHandler <>9__1_0;

				internal void <Create>b__1_0(CharacterBody body, StatHookEventArgs args)
				{
					if (NetworkServer.active && body.HasBuff(buffDef))
					{
						body.maxBarrier = 2.1474836E+09f;
					}
				}
			}

			public static BuffDef buffDef;

			public static void Create()
			{
				//IL_0050: Unknown result type (might be due to invalid IL or missing references)
				//IL_0055: Unknown result type (might be due to invalid IL or missing references)
				//IL_005b: Expected O, but got Unknown
				buffDef = ScriptableObject.CreateInstance<BuffDef>();
				((Object)buffDef).name = "NoDecay";
				buffDef.isHidden = true;
				buffDef.isDebuff = false;
				ContentAddition.AddBuffDef(buffDef);
				object obj = <>c.<>9__1_0;
				if (obj == null)
				{
					StatHookEventHandler val = delegate(CharacterBody body, StatHookEventArgs args)
					{
						if (NetworkServer.active && body.HasBuff(buffDef))
						{
							body.maxBarrier = 2.1474836E+09f;
						}
					};
					<>c.<>9__1_0 = val;
					obj = (object)val;
				}
				RecalculateStatsAPI.GetStatCoefficients += (StatHookEventHandler)obj;
			}
		}

		public static void Awake()
		{
			NoDecay.Create();
		}
	}
	public class Effect
	{
		public delegate bool ConditionCallback(CharacterBody body);

		public delegate void StatEffectCallback(StatHookEventArgs args, int stacks, CharacterBody body);

		public delegate void OnEliteCallback(DamageInfo info, int stacks);

		public delegate void OnHealCallback(HealthComponent healthComponent, int stacks);

		public delegate void OnKillCallback(DamageInfo info, int stacks);

		public delegate void OnTakeDamageCallback(GameObject victim, int stacks);

		public delegate void OnHitCallback(DamageInfo info, int count, GameObject victim);

		public delegate void OnSkillUseCallback(CharacterBody body, int stacks);

		public enum EffectType
		{
			OnKill,
			Passive,
			OnElite,
			OnHurt,
			OnHit,
			OnSkillUse,
			OnHeal
		}

		public string description;

		public float num1;

		public float damage;

		public float statIncrease;

		public float healOrBarrier;

		public float speedOrBleed;

		public float chance;

		public static Xoroshiro128Plus rng = Main.rng;

		public bool conditions = false;

		public ConditionCallback condition;

		public StatEffectCallback statEffect;

		public OnHitCallback onHitEffect;

		public OnTakeDamageCallback onHurtEffect;

		public OnHealCallback onHealEffect;

		public OnKillCallback onKillEffect;

		public OnEliteCallback onEliteEffect;

		public OnSkillUseCallback onSkillUseEffect;

		public GameObject missilePrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/MissileProjectile.prefab").WaitForCompletion(), "RandomMissile");

		public static GameObject potPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/ClayBoss/ClayPotProjectile.prefab").WaitForCompletion(), "RandomClayPot");

		public GameObject voidPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/ImpBoss/ImpVoidspikeProjectile.prefab").WaitForCompletion(), "RandomVoidSpike");

		public static GameObject sawPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Saw/Sawmerang.prefab").WaitForCompletion(), "RandomSaw");

		public GameObject nadePrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Commando/CommandoGrenadeProjectile.prefab").WaitForCompletion(), "RandomNade");

		public GameObject fireballPrefab = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/LemurianBruiser/LemurianBigFireball.prefab").WaitForCompletion(), "RandomFireball");

		public BuffDef buff;

		public BuffDef debuff;

		public GameObject chosenPrefab;

		public string projectileName;

		public EffectType effectType = EffectType.Passive;

		public List<ConditionCallback> conditionCallbackList;

		public List<OnKillCallback> onKillCallbackList;

		public List<OnEliteCallback> onEliteCallbackList;

		public List<OnHealCallback> healCallbackList;

		public List<OnHitCallback> onHitCallbackList;

		public List<OnSkillUseCallback> onSkillUseCallbackList;

		public List<OnTakeDamageCallback> onHurtCallbackList;

		public Dictionary<string, GameObject> projNameMap;

		public Dictionary<OnTakeDamageCallback, string> onHurtMap;

		public Dictionary<OnEliteCallback, string> onEliteMap;

		public Dictionary<OnHealCallback, string> onHealMap;

		public Dictionary<OnSkillUseCallback, string> onSkillUseMap;

		public Dictionary<OnKillCallback, string> onKillEffectMap;

		public List<StatEffectCallback> statCallbackList;

		public Dictionary<ConditionCallback, string> conditionmap;

		public Dictionary<StatEffectCallback, string> statmap;

		public Dictionary<OnHitCallback, string> onhitmap;

		public ConditionCallback shieldMore;

		public ConditionCallback ood;

		public ConditionCallback ooc;

		public ConditionCallback moving;

		public ConditionCallback notMoving;

		public ConditionCallback underHalfHp;

		public ConditionCallback atFullHp;

		public ConditionCallback midair;

		public ConditionCallback debuffed;

		public ConditionCallback firstXSeconds;

		public ConditionCallback tpEvent;

		public StatEffectCallback attackSpeedBoost;

		public StatEffectCallback speedBoost;

		public StatEffectCallback healthBoost;

		public StatEffectCallback damageBoost;

		public StatEffectCallback shieldBoost;

		public StatEffectCallback armorBoost;

		public StatEffectCallback regenBoost;

		public StatEffectCallback critBoost;

		public StatEffectCallback secondaryCdrBoost;

		public StatEffectCallback utilityCdrBoost;

		public StatEffectCallback specialCdrBoost;

		public StatEffectCallback allSkillCdrBoost;

		public static OnHitCallback fireProjectile;

		public OnSkillUseCallback fireProjSkill;

		public OnTakeDamageCallback retaliateProjectile;

		public static void ModifyPrefabs()
		{
			sawPrefab.GetComponent<ProjectileDotZone>().resetFrequency = 0f;
			((ProjectileExplosion)potPrefab.GetComponent<ProjectileImpactExplosion>()).blastRadius = 9f;
		}

		public void Generate(Xoroshiro128Plus rng, float tierMult, float stackMult)
		{
			conditions = rng.nextBool;
			damage = Mathf.RoundToInt(rng.RangeFloat(100f, 170f) * Mathf.Sqrt(tierMult));
			statIncrease = Mathf.Round(rng.RangeFloat(7f, 15f)) * tierMult;
			chance = Mathf.RoundToInt(rng.RangeFloat(4f, 13f) * tierMult);
			healOrBarrier = Mathf.Round(rng.RangeFloat(1f, 5f) * tierMult);
			speedOrBleed = Mathf.Round(rng.RangeFloat(0.5f, 3f) * tierMult);
			if (conditions)
			{
				damage += Mathf.RoundToInt(rng.RangeFloat(30f, 50f) * Mathf.Sqrt(tierMult));
				statIncrease += Mathf.Round(rng.RangeFloat(3f, 6f) * Mathf.Sqrt(tierMult));
				chance += Mathf.RoundToInt(rng.RangeFloat(1f, 1.5f) * Mathf.Sqrt(tierMult));
				healOrBarrier += Mathf.Round(rng.RangeFloat(0.3f, 1f) * Mathf.Sqrt(tierMult));
				speedOrBleed += Mathf.Round(rng.RangeFloat(0.2f, 0.5f) * Mathf.Sqrt(tierMult));
			}
			if (chance >= 100f)
			{
				chance = 100f;
			}
			string[] array = new string[6] { "<style=cIsDamage>Missile</style>", "<style=cIsVoid>Void Spike</style>", "<style=cIsDamage>Clay Pot</style>", "<style=cDeath>Sawblade</style>", "<style=cIsDamage>Grenade</style>", "<style=cIsDamage>Fireball</style>" };
			projectileName = array[rng.RangeInt(0, array.Length)];
			GenerateMapsAndCallbacks(stackMult);
			projNameMap.TryGetValue(projectileName, out chosenPrefab);
			effectType = (EffectType)rng.RangeInt(0, 7);
			string value = "";
			if (conditions)
			{
				condition = conditionCallbackList[rng.RangeInt(0, conditionCallbackList.Count)];
				conditionmap.TryGetValue(condition, out value);
			}
			string value2 = "";
			string value3 = "";
			string value4 = "";
			string value5 = "";
			string value6 = "";
			string value7 = "";
			string value8 = " ";
			switch (effectType)
			{
			case EffectType.Passive:
				statEffect = statCallbackList[rng.RangeInt(0, statCallbackList.Count)];
				statmap.TryGetValue(statEffect, out value2);
				description = value + value2;
				break;
			case EffectType.OnHit:
				onHitEffect = onHitCallbackList[rng.RangeInt(0, onHitCallbackList.Count)];
				onhitmap.TryGetValue(onHitEffect, out value6);
				description = value + value6;
				break;
			case EffectType.OnHurt:
				onHurtEffect = onHurtCallbackList[rng.RangeInt(0, onHurtCallbackList.Count)];
				onHurtMap.TryGetValue(onHurtEffect, out value7);
				description = value + value7;
				break;
			case EffectType.OnSkillUse:
				onSkillUseEffect = onSkillUseCallbackList[rng.RangeInt(0, onSkillUseCallbackList.Count)];
				onSkillUseMap.TryGetValue(onSkillUseEffect, out value8);
				description = value + value8;
				break;
			case EffectType.OnHeal:
				onHealEffect = healCallbackList[rng.RangeInt(0, healCallbackList.Count)];
				onHealMap.TryGetValue(onHealEffect, out value4);
				description = value + value4;
				break;
			case EffectType.OnElite:
				onEliteEffect = onEliteCallbackList[rng.RangeInt(0, onEliteCallbackList.Count)];
				onEliteMap.TryGetValue(onEliteEffect, out value5);
				description = value + value5;
				break;
			case EffectType.OnKill:
				onKillEffect = onKillCallbackList[rng.RangeInt(0, onKillCallbackList.Count)];
				onKillEffectMap.TryGetValue(onKillEffect, out value3);
				description = value + value3;
				break;
			}
			if (!conditions)
			{
				description.Remove(0);
				description.Replace(description.ElementAt(0), description.ElementAt(0).ToString().ToUpper()[0]);
			}
		}

		public bool ConditionsMet(CharacterBody body)
		{
			if (!conditions)
			{
				return true;
			}
			return condition(body);
		}

		public void GenerateMapsAndCallbacks(float stackMult)
		{
			shieldMore = (CharacterBody body) => body.healthComponent.shield > 0f;
			ood = (CharacterBody body) => body.outOfDanger;
			ooc = (CharacterBody body) => body.outOfCombat;
			moving = (CharacterBody body) => !body.GetNotMoving();
			notMoving = (CharacterBody body) => body.GetNotMoving();
			underHalfHp = (CharacterBody body) => body.healthComponent.combinedHealthFraction <= 0.5f;
			atFullHp = (CharacterBody body) => body.healthComponent.combinedHealthFraction >= 1f;
			midair = (CharacterBody body) => body.characterMotor.lastGroundedTime >= FixedTimeStamp.now + 0.2f;
			debuffed = delegate(CharacterBody body)
			{
				//IL_0010: Unknown result type (might be due to invalid IL or missing references)
				//IL_0012: Unknown result type (might be due to invalid IL or missing references)
				BuffIndex[] activeBuffsList = body.activeBuffsList;
				foreach (BuffIndex val12 in activeBuffsList)
				{
					if (BuffCatalog.GetBuffDef(val12).isDebuff)
					{
						return true;
					}
				}
				return false;
			};
			firstXSeconds = (CharacterBody body) => Object.op_Implicit((Object)(object)Stage.instance) && Run.instance.fixedTime - Stage.instance.entryTime.t <= 180f;
			tpEvent = (CharacterBody body) => Object.op_Implicit((Object)(object)TeleporterInteraction.instance) && TeleporterInteraction.instance.isCharging;
			attackSpeedBoost = delegate(StatHookEventArgs args, int stacks, CharacterBody body)
			{
				args.baseAttackSpeedAdd += statIncrease * (stackMult * (float)stacks) * 0.01f;
			};
			speedBoost = delegate(StatHookEventArgs args, int stacks, CharacterBody body)
			{
				args.moveSpeedMultAdd += statIncrease * (stackMult * (float)stacks) * 0.01f;
			};
			healthBoost = delegate(StatHookEventArgs args, int stacks, CharacterBody body)
			{
				args.healthMultAdd += statIncrease * (stackMult * (float)stacks) * 0.01f;
			};
			damageBoost = delegate(StatHookEventArgs args, int stacks, CharacterBody body)
			{
				args.damageMultAdd += statIncrease * (stackMult * (float)stacks) * 0.01f;
			};
			shieldBoost = delegate(StatHookEventArgs args, int stacks, CharacterBody body)
			{
				float num6 = body.healthComponent.fullHealth * (statIncrease * (stackMult * (float)stacks) * 0.01f);
				args.baseShieldAdd += num6;
			};
			armorBoost = delegate(StatHookEventArgs args, int stacks, CharacterBody body)
			{
				args.armorAdd += statIncrease * (stackMult * (float)stacks) * 0.8f * 0.01f;
			};
			regenBoost = delegate(StatHookEventArgs args, int stacks, CharacterBody body)
			{
				args.regenMultAdd += statIncrease * (stackMult * (float)stacks) * 11f * 0.01f;
			};
			critBoost = delegate(StatHookEventArgs args, int stacks, CharacterBody body)
			{
				args.critAdd += statIncrease * (stackMult * (float)stacks);
			};
			secondaryCdrBoost = delegate(StatHookEventArgs args, int stacks, CharacterBody body)
			{
				args.secondaryCooldownMultAdd -= statIncrease * 0.7f * (stackMult * (float)stacks) * 0.01f;
			};
			utilityCdrBoost = delegate(StatHookEventArgs args, int stacks, CharacterBody body)
			{
				args.utilityCooldownMultAdd -= statIncrease * 0.7f * (stackMult * (float)stacks) * 0.01f;
			};
			specialCdrBoost = delegate(StatHookEventArgs args, int stacks, CharacterBody body)
			{
				args.specialCooldownMultAdd -= statIncrease * 0.7f * (stackMult * (float)stacks) * 0.01f;
			};
			allSkillCdrBoost = delegate(StatHookEventArgs args, int stacks, CharacterBody body)
			{
				args.cooldownMultAdd -= statIncrease * 0.4f * (stackMult * (float)stacks) * 0.01f;
			};
			OnHitCallback onHitCallback = delegate(DamageInfo info, int stacks, GameObject victim)
			{
				//IL_0003: Unknown result type (might be due to invalid IL or missing references)
				//IL_006b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0070: Unknown result type (might be due to invalid IL or missing references)
				//IL_0073: Unknown result type (might be due to invalid IL or missing references)
				//IL_0078: Unknown result type (might be due to invalid IL or missing references)
				//IL_007d: Unknown result type (might be due to invalid IL or missing references)
				//IL_008f: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a3: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
				//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
				//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
				FireProjectileInfo val10 = default(FireProjectileInfo);
				val10.damage = info.damage * damage * (stackMult * (float)stacks) * 0.01f;
				val10.owner = info.attacker;
				((FireProjectileInfo)(ref val10)).speedOverride = 100f;
				((FireProjectileInfo)(ref val10)).fuseOverride = 2f;
				Ray aimRay4 = info.attacker.GetComponent<CharacterBody>().equipmentSlot.GetAimRay();
				val10.rotation = Util.QuaternionSafeLookRotation(((Ray)(ref aimRay4)).direction);
				val10.position = info.attacker.GetComponent<CharacterBody>().corePosition + new Vector3(0f, 1f, 0f);
				val10.damageColorIndex = (DamageColorIndex)3;
				val10.projectilePrefab = chosenPrefab;
				FireProjectileInfo val11 = val10;
				ProjectileManager.instance.FireProjectile(val11);
			};
			OnHitCallback onHitCallback2 = delegate(DamageInfo info, int stacks, GameObject victim)
			{
				//IL_0003: 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)
				InflictDotInfo val9 = default(InflictDotInfo);
				val9.dotIndex = (DotIndex)0;
				val9.duration = speedOrBleed * ((float)stacks * stackMult) * info.procCoefficient;
				val9.totalDamage = info.damage;
				val9.victimObject = victim;
				victim.GetComponent<CharacterBody>().AddTimedBuff(Buffs.Bleeding, speedOrBleed * ((float)stacks * stackMult));
				DotController.InflictDot(ref val9);
			};
			OnTakeDamageCallback onTakeDamageCallback = delegate(GameObject victim, int stacks)
			{
				//IL_0003: 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_006b: Unknown result type (might be due to invalid IL or missing references)
				//IL_006e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0073: Unknown result type (might be due to invalid IL or missing references)
				//IL_0078: 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_0099: Unknown result type (might be due to invalid IL or missing references)
				//IL_009e: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a3: 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_00c2: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
				FireProjectileInfo val7 = default(FireProjectileInfo);
				val7.damage = victim.GetComponent<CharacterBody>().damage * damage * (stackMult * (float)stacks) * 0.01f;
				val7.owner = victim;
				((FireProjectileInfo)(ref val7)).speedOverride = 100f;
				((FireProjectileInfo)(ref val7)).fuseOverride = 2f;
				Ray aimRay3 = victim.GetComponent<CharacterBody>().equipmentSlot.GetAimRay();
				val7.rotation = Util.QuaternionSafeLookRotation(((Ray)(ref aimRay3)).direction);
				val7.position = victim.GetComponent<CharacterBody>().corePosition + new Vector3(0f, 1f, 0f);
				val7.damageColorIndex = (DamageColorIndex)3;
				val7.projectilePrefab = chosenPrefab;
				FireProjectileInfo val8 = val7;
				ProjectileManager.instance.FireProjectile(val8);
			};
			OnTakeDamageCallback onTakeDamageCallback2 = delegate(GameObject victim, int stacks)
			{
				float num5 = speedOrBleed * (1f + (float)stacks * stackMult);
				victim.GetComponent<CharacterBody>().AddTimedBuff(Buffs.CloakSpeed, num5);
			};
			OnSkillUseCallback onSkillUseCallback = delegate(CharacterBody body, int stacks)
			{
				//IL_0003: 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_0069: Unknown result type (might be due to invalid IL or missing references)
				//IL_006e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0073: Unknown result type (might be due to invalid IL or missing references)
				//IL_007b: Unknown result type (might be due to invalid IL or missing references)
				//IL_008f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0094: 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_00a1: 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_00b9: Unknown result type (might be due to invalid IL or missing references)
				//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
				FireProjectileInfo val5 = default(FireProjectileInfo);
				val5.damage = body.damage * (damage * (stackMult * (float)stacks)) * 0.01f;
				val5.owner = ((Component)body).gameObject;
				((FireProjectileInfo)(ref val5)).speedOverride = 100f;
				((FireProjectileInfo)(ref val5)).fuseOverride = 2f;
				Ray aimRay2 = body.equipmentSlot.GetAimRay();
				val5.rotation = Util.QuaternionSafeLookRotation(((Ray)(ref aimRay2)).direction);
				val5.position = body.corePosition + new Vector3(0f, 1f, 0f);
				val5.damageColorIndex = (DamageColorIndex)3;
				val5.projectilePrefab = chosenPrefab;
				FireProjectileInfo val6 = val5;
				ProjectileManager.instance.FireProjectile(val6);
			};
			OnEliteCallback onEliteCallback = delegate(DamageInfo info, int stacks)
			{
				float num4 = healOrBarrier * 3f * 0.01f * ((float)stacks * stackMult);
				HealthComponent component3 = info.attacker.GetComponent<HealthComponent>();
				component3.AddBarrier(component3.fullHealth * num4);
				component3.body.AddTimedBuff(Buffs.NoDecay.buffDef, 10f);
			};
			OnHealCallback onHealCallback = delegate(HealthComponent com, int stacks)
			{
				float num3 = healOrBarrier * 0.01f * 0.8f * ((float)stacks * stackMult);
				com.AddBarrier(com.fullHealth * num3);
			};
			OnHealCallback onHealCallback2 = delegate(HealthComponent com, int stacks)
			{
				//IL_0025: Unknown result type (might be due to invalid IL or missing references)
				//IL_002d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0041: Unknown result type (might be due to invalid IL or missing references)
				float num2 = healOrBarrier * 0.01f * 0.1f * ((float)stacks * stackMult);
				ProcChainMask val4 = default(ProcChainMask);
				((ProcChainMask)(ref val4)).AddProc(Main.HealingBonus);
				com.Heal(com.fullHealth * num2, val4, true);
			};
			OnKillCallback onKillCallback = delegate(DamageInfo info, int stacks)
			{
				//IL_000f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0073: Unknown result type (might be due to invalid IL or missing references)
				//IL_0078: Unknown result type (might be due to invalid IL or missing references)
				//IL_007b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0080: 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_008d: 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_00ab: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
				//IL_00cb: 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)
				CharacterBody component2 = info.attacker.GetComponent<CharacterBody>();
				FireProjectileInfo val2 = default(FireProjectileInfo);
				val2.damage = component2.damage * (damage * (stackMult * (float)stacks)) * 0.01f * 2f;
				val2.owner = ((Component)component2).gameObject;
				((FireProjectileInfo)(ref val2)).speedOverride = 100f;
				((FireProjectileInfo)(ref val2)).fuseOverride = 2f;
				Ray aimRay = component2.equipmentSlot.GetAimRay();
				val2.rotation = Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction);
				val2.position = component2.corePosition + new Vector3(0f, 1f, 0f);
				val2.damageColorIndex = (DamageColorIndex)3;
				val2.projectilePrefab = chosenPrefab;
				FireProjectileInfo val3 = val2;
				ProjectileManager.instance.FireProjectile(val3);
			};
			OnKillCallback onKillCallback2 = delegate(DamageInfo info, int stacks)
			{
				//IL_003e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0046: Unknown result type (might be due to invalid IL or missing references)
				//IL_005a: Unknown result type (might be due to invalid IL or missing references)
				CharacterBody component = info.attacker.GetComponent<CharacterBody>();
				HealthComponent healthComponent = component.healthComponent;
				float num = healOrBarrier * 0.01f * 3f * ((float)stacks * stackMult * 3f);
				ProcChainMask val = default(ProcChainMask);
				((ProcChainMask)(ref val)).AddProc(Main.HealingBonus);
				healthComponent.Heal(healthComponent.fullHealth * num, val, true);
			};
			onhitmap = new Dictionary<OnHitCallback, string>
			{
				{
					onHitCallback,
					$"Gain a <style=cIsDamage>{chance}%</style> chance on hit to fire a {projectileName} for <style=cIsDamage>{damage}%</style> <style=cStack>(+{damage * stackMult}% per stack)</style> <style=cIsDamage>base damage</style>."
				},
				{
					onHitCallback2,
					$"Gain a <style=cIsDamage>{chance}%</style> chance on hit to <style=cDeath>bleed</style> a target for <style=cIsUtility>{speedOrBleed} seconds</style>."
				}
			};
			onKillEffectMap = new Dictionary<OnKillCallback, string>
			{
				{
					onKillCallback,
					$"On kill, fire a {projectileName} for <style=cIsDamage>{damage * 2f}%</style> <style=cStack>(+{damage * stackMult * 2f}% per stack)</style> <style=cIsDamage>base damage</style>."
				},
				{
					onKillCallback2,
					$"Receive <style=cIsHealing>healing</style> equal to <style=cIsHealing>{healOrBarrier * 0.1f * 3f}%</style> <style=cStack>(+{healOrBarrier * stackMult * 0.1f * 3f}% per stack)</style> of your maximum <style=cIsHealing>health</style> upon <style=cIsHealing>killing an enemy</style>"
				}
			};
			onHealMap = new Dictionary<OnHealCallback, string>
			{
				{
					onHealCallback,
					$"Receive <style=cIsHealing>{healOrBarrier * 0.8f}%</style> <style=cStack>(+{healOrBarrier * stackMult * 0.8f}% per stack)</style> of your maximum health as <style=cIsDamage>barrier</style> upon being <style=cIsHealing>healed</style>."
				},
				{
					onHealCallback2,
					$"Receive <style=cIsHealing>bonus healing</style> equal to <style=cIsHealing>{healOrBarrier * 0.1f}%</style> <style=cStack>(+{healOrBarrier * stackMult * 0.1f}% per stack)</style> of your maximum <style=cIsHealing>health</style> upon being <style=cIsHealing>healed</style>"
				}
			};
			statmap = new Dictionary<StatEffectCallback, string>
			{
				{
					healthBoost,
					$"Gain <style=cIsHealing>{statIncrease}%</style> <style=cStack>(+{statIncrease * stackMult}% per stack)</style> <style=cIsHealing>maximum health</style>."
				},
				{
					attackSpeedBoost,
					$"Increase <style=cIsDamage>attack speed</style> by <style=cIsDamage>{statIncrease}%</style> <style=cStack>(+{statIncrease * stackMult}% per stack)</style>."
				},
				{
					speedBoost,
					$"Gain <style=cIsUtility>{statIncrease}%</style> <style=cStack>(+{statIncrease * stackMult}% per stack)</style> <style=cIsUtility>movement speed</style>."
				},
				{
					damageBoost,
					$"Increase <style=cIsDamage>base damage</style> by <style=cIsDamage>{statIncrease}%</style> <style=cStack>(+{statIncrease * stackMult}% per stack)</style>."
				},
				{
					shieldBoost,
					$"Gain a <style=cIsHealing>shield</style> equal to <style=cIsHealing>{statIncrease}%</style> <style=cStack>(+{statIncrease * stackMult}% per stack)</style> of your maximum health."
				},
				{
					armorBoost,
					$"Gain <style=cIsHealing>{statIncrease * 0.8f}</style> <style=cStack>(+{statIncrease * 0.8f * stackMult} per stack)</style> <style=cIsHealing>armor</style>."
				},
				{
					regenBoost,
					$"Increase <style=cIsHealing>base health regeneration</style> by <style=cIsHealing>{statIncrease * 11f}%</style> <style=cStack>(+{statIncrease * 11f * stackMult} per stack)."
				},
				{
					critBoost,
					$"Gain <style=cIsDamage>{statIncrease}%</style> <style=cStack>(+{statIncrease * stackMult} per stack)</style> <style=cIsDamage>critical chance</style>."
				},
				{
					secondaryCdrBoost,
					$"<style=cIsUtility>Reduce secondary skill cooldown</style> by <style=cIsUtility>{statIncrease * 0.7f * stackMult}%</style> <style=cStack>(+{statIncrease * 0.7f * stackMult}% per stack)"
				},
				{
					utilityCdrBoost,
					$"<style=cIsUtility>Reduce utility skill cooldown</style> by <style=cIsUtility>{statIncrease * 0.7f * stackMult}%</style> <style=cStack>(+{statIncrease * 0.7f * stackMult}% per stack)"
				},
				{
					specialCdrBoost,
					$"<style=cIsUtility>Reduce special skill cooldown</style> by <style=cIsUtility>{statIncrease * 0.7f * stackMult}%</style> <style=cStack>(+{statIncrease * 0.7f * stackMult}% per stack)"
				},
				{
					allSkillCdrBoost,
					$"<style=cIsUtility>Reduce skill cooldowns</style> by <style=cIsUtility>{statIncrease * 0.4f * stackMult}%</style> <style=cStack>(+{statIncrease * 0.4f * stackMult}% per stack)"
				}
			};
			onEliteMap = new Dictionary<OnEliteCallback, string> { 
			{
				onEliteCallback,
				$"On killing an <style=cIsDamage>elite</style>, gain <style=cIsDamage>{healOrBarrier * 3f}%</style> <style=cStack>(+{healOrBarrier * 3f * stackMult}% per stack)</style> of your maximum health as barrier. Remove <style=cIsUtility>the maximum barrier cap</style> for 10 seconds."
			} };
			conditionmap = new Dictionary<ConditionCallback, string>
			{
				{ shieldMore, "While you have a <style=cIsHealing>shield</style>, " },
				{ moving, "While <style=cIsUtility>moving</style>, " },
				{ notMoving, "After standing still for <style=cIsHealing>1</style> second, " },
				{ ooc, "While <style=cIsUtility>out of combat</style>, " },
				{ ood, "While <style=cIsUtility>out of danger</style>, " },
				{ underHalfHp, "While below <style=cIsHealth>50% health</style>, " },
				{ atFullHp, "While at <style=cIsHealth>full health</style>, " },
				{ midair, "While <style=cIsUtility>midair</style>, " },
				{ debuffed, "While <style=cIsHealth>debuffed</style>, " },
				{ firstXSeconds, "For the first <style=cIsUtility>3 minutes</style> every stage, " },
				{ tpEvent, "During the <style=cIsUtility>Teleporter Event</style>, " }
			};
			onHurtMap = new Dictionary<OnTakeDamageCallback, string>
			{
				{
					onTakeDamageCallback,
					$"Upon <style=cDeath>taking damage</style>, fire a {projectileName} for <style=cIsDamage>{damage}%</style> <style=cStack>(+{damage * stackMult}% per stack)</style> damage."
				},
				{
					onTakeDamageCallback2,
					$"Upon <style=cDeath>taking damage</style>, gain a <style=cIsUtility>speed boost</style> for <style=cIsUtility>{speedOrBleed}</style> <style=cStack>(+{speedOrBleed * stackMult} per stack)</style> seconds."
				}
			};
			onSkillUseMap = new Dictionary<OnSkillUseCallback, string> { 
			{
				onSkillUseCallback,
				$"Gain a <style=cIsDamage>{chance}%</style> chance on skill use to fire a {projectileName} for <style=cIsDamage>{damage * 0.5f}%</style> <style=cStack>(+{damage * stackMult * 0.5f}% per stack)</style> <style=cIsDamage>base damage</style>."
			} };
			healCallbackList = new List<OnHealCallback> { onHealCallback, onHealCallback2 };
			onKillCallbackList = new List<OnKillCallback> { onKillCallback2, onKillCallback };
			statCallbackList = new List<StatEffectCallback>
			{
				speedBoost, healthBoost, attackSpeedBoost, damageBoost, shieldBoost, armorBoost, regenBoost, critBoost, secondaryCdrBoost, utilityCdrBoost,
				specialCdrBoost, allSkillCdrBoost
			};
			onSkillUseCallbackList = new List<OnSkillUseCallback> { onSkillUseCallback };
			conditionCallbackList = new List<ConditionCallback>
			{
				shieldMore, ooc, ood, moving, notMoving, underHalfHp, atFullHp, midair, debuffed, firstXSeconds,
				tpEvent
			};
			onHitCallbackList = new List<OnHitCallback> { onHitCallback, onHitCallback2 };
			onHurtCallbackList = new List<OnTakeDamageCallback> { onTakeDamageCallback, onTakeDamageCallback2 };
			onEliteCallbackList = new List<OnEliteCallback> { onEliteCallback };
			projNameMap = new Dictionary<string, GameObject>
			{
				{ "<style=cIsDamage>Missile</style>", missilePrefab },
				{ "<style=cIsVoid>Void Spike</style>", voidPrefab },
				{ "<style=cIsDamage>Clay Pot</style>", potPrefab },
				{ "<style=cDeath>Sawblade</style>", sawPrefab },
				{ "<style=cIsDamage>Grenade</style>", nadePrefab },
				{ "<style=cIsDamage>Fireball</style>", fireballPrefab }
			};
		}
	}
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInPlugin("HIFUPulse.RandomlyGeneratedItems", "RandomlyGeneratedItems", "0.0.4")]
	[R2APISubmoduleDependency(new string[] { "LanguageAPI", "ItemAPI", "PrefabAPI", "RecalculateStatsAPI" })]
	public class Main : BaseUnityPlugin
	{
		[Serializable]
		[CompilerGenerated]
		private sealed class <>c
		{
			public static readonly <>c <>9 = new <>c();

			public static hook_Awake <>9__19_0;

			public static hook_Update <>9__19_1;

			public static hook_OnSkillActivated <>9__19_2;

			public static hook_OnCharacterDeath <>9__19_3;

			public static hook_Heal <>9__19_4;

			internal void <Awake>b__19_0(orig_Awake orig, BaseMainMenuScreen self)
			{
				//IL_0021: Unknown result type (might be due to invalid IL or missing references)
				//IL_0026: Unknown result type (might be due to invalid IL or missing references)
				//IL_002b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0031: Unknown result type (might be due to invalid IL or missing references)
				orig.Invoke(self);
				foreach (ItemDef myItemDef in myItemDefs)
				{
					PickupIndex val = PickupCatalog.FindPickupIndex(myItemDef.itemIndex);
					UserProfile.defaultProfile.DiscoverPickup(val);
				}
			}

			internal void <Awake>b__19_1(orig_Update orig, CharacterBody self)
			{
				orig.Invoke(self);
				if (NetworkServer.active && Object.op_Implicit((Object)(object)self.characterMotor) && ((Vector3)(ref self.characterMotor.velocity)).magnitude != 0f - ((Vector3)(ref self.characterMotor.lastVelocity)).magnitude && !self.isPlayerControlled)
				{
				}
			}

			internal void <Awake>b__19_2(orig_OnSkillActivated orig, CharacterBody sender, GenericSkill slot)
			{
				//IL_0045: Unknown result type (might be due to invalid IL or missing references)
				//IL_004a: Unknown result type (might be due to invalid IL or missing references)
				//IL_004c: Unknown result type (might be due to invalid IL or missing references)
				orig.Invoke(sender, slot);
				if (!Object.op_Implicit((Object)(object)sender) || !Object.op_Implicit((Object)(object)sender.inventory) || !NetworkServer.active)
				{
					return;
				}
				foreach (ItemIndex item in sender.inventory.itemAcquisitionOrder)
				{
					ItemDef itemDef = ItemCatalog.GetItemDef(item);
					if (map.TryGetValue(itemDef.nameToken, out var value) && value.effectType == Effect.EffectType.OnSkillUse && Util.CheckRoll(value.chance, sender.master) && value.ConditionsMet(sender))
					{
						value.onSkillUseEffect(sender, sender.inventory.GetItemCount(itemDef));
					}
				}
			}

			internal void <Awake>b__19_3(orig_OnCharacterDeath orig, GlobalEventManager self, DamageReport report)
			{
				//IL_005f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0065: Invalid comparison between Unknown and I4
				//IL_0164: Unknown result type (might be due to invalid IL or missing references)
				//IL_016a: Invalid comparison between Unknown and I4
				//IL_008c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0091: Unknown result type (might be due to invalid IL or missing references)
				//IL_0094: Unknown result type (might be due to invalid IL or missing references)
				//IL_0194: Unknown result type (might be due to invalid IL or missing references)
				//IL_0199: Unknown result type (might be due to invalid IL or missing references)
				//IL_019c: Unknown result type (might be due to invalid IL or missing references)
				orig.Invoke(self, report);
				DamageInfo damageInfo = report.damageInfo;
				if (NetworkServer.active && Object.op_Implicit((Object)(object)damageInfo.attacker) && report.victimIsElite)
				{
					CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>();
					if (!Object.op_Implicit((Object)(object)component) || !Object.op_Implicit((Object)(object)component.inventory) || !NetworkServer.active || (int)damageInfo.damageColorIndex == 3)
					{
						return;
					}
					{
						foreach (ItemIndex item in component.inventory.itemAcquisitionOrder)
						{
							ItemDef itemDef = ItemCatalog.GetItemDef(item);
							if (map.TryGetValue(itemDef.nameToken, out var value) && value.effectType == Effect.EffectType.OnElite && value.ConditionsMet(component))
							{
								value.onEliteEffect(damageInfo, component.inventory.GetItemCount(itemDef));
							}
						}
						return;
					}
				}
				if (!NetworkServer.active || !Object.op_Implicit((Object)(object)damageInfo.attacker))
				{
					return;
				}
				CharacterBody component2 = damageInfo.attacker.GetComponent<CharacterBody>();
				if (!Object.op_Implicit((Object)(object)component2) || !Object.op_Implicit((Object)(object)component2.inventory) || !NetworkServer.active || (int)damageInfo.damageColorIndex == 3)
				{
					return;
				}
				foreach (ItemIndex item2 in component2.inventory.itemAcquisitionOrder)
				{
					ItemDef itemDef2 = ItemCatalog.GetItemDef(item2);
					if (map.TryGetValue(itemDef2.nameToken, out var value2) && value2.effectType == Effect.EffectType.OnKill && value2.ConditionsMet(component2))
					{
						value2.onKillEffect(damageInfo, component2.inventory.GetItemCount(itemDef2));
					}
				}
			}

			internal float <Awake>b__19_4(orig_Heal orig, HealthComponent self, float amount, ProcChainMask mask, bool nonRegen)
			{
				//IL_00de: Unknown result type (might be due to invalid IL or missing references)
				//IL_0026: Unknown result type (might be due to invalid IL or missing references)
				//IL_0057: Unknown result type (might be due to invalid IL or missing references)
				//IL_005c: 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)
				CharacterBody body = self.body;
				if (Object.op_Implicit((Object)(object)body) && Object.op_Implicit((Object)(object)body.inventory) && NetworkServer.active && !((ProcChainMask)(ref mask)).HasProc(HealingBonus) && nonRegen)
				{
					foreach (ItemIndex item in body.inventory.itemAcquisitionOrder)
					{
						ItemDef itemDef = ItemCatalog.GetItemDef(item);
						if (map.TryGetValue(itemDef.nameToken, out var value) && value.effectType == Effect.EffectType.OnHeal && value.ConditionsMet(body))
						{
							value.onHealEffect(self, body.inventory.GetItemCount(itemDef));
						}
					}
				}
				return orig.Invoke(self, amount, mask, nonRegen);
			}
		}

		public const string PluginGUID = "HIFUPulse.RandomlyGeneratedItems";

		public const string PluginAuthor = "HIFUPulse";

		public const string PluginName = "RandomlyGeneratedItems";

		public const string PluginVersion = "0.0.4";

		public static ConfigFile RGIConfig;

		public static ManualLogSource RGILogger;

		public static ProcType HealingBonus = (ProcType)89;

		private static ulong seed;

		public static Xoroshiro128Plus rng;

		private static ItemDef itemDef;

		private static List<GameObject> itemModels = new List<GameObject>();

		private static List<Sprite> itemIcons = new List<Sprite>();

		private static List<ItemDef> myItemDefs = new List<ItemDef>();

		private static Dictionary<string, Effect> map = new Dictionary<string, Effect>();

		public static Shader hgStandard;

		public static ConfigEntry<ulong> seedConfig { get; set; }

		public void Awake()
		{
			//IL_003e: 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_009a: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Expected O, but got Unknown
			//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0103: Expected O, but got Unknown
			//IL_015c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0166: Expected O, but got Unknown
			//IL_016e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0178: Expected O, but got Unknown
			//IL_018d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0192: Unknown result type (might be due to invalid IL or missing references)
			//IL_0198: Expected O, but got Unknown
			//IL_01b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bd: Expected O, but got Unknown
			//IL_01d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e2: Expected O, but got Unknown
			//IL_01fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0201: Unknown result type (might be due to invalid IL or missing references)
			//IL_0207: Expected O, but got Unknown
			//IL_0221: 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_022c: Expected O, but got Unknown
			RGILogger = ((BaseUnityPlugin)this).Logger;
			RGIConfig = ((BaseUnityPlugin)this).Config;
			seedConfig = ((BaseUnityPlugin)this).Config.Bind<ulong>("Configuration:", "Seed", 0uL, "The seed that will be used for random generation. This MUST be the same between all clients in multiplayer!!! A seed of 0 will generate a random seed instead");
			hgStandard = Addressables.LoadAssetAsync<Shader>((object)"RoR2/Base/Shaders/HGStandard.shader").WaitForCompletion();
			if (seedConfig.Value != 0)
			{
				seed = seedConfig.Value;
			}
			else
			{
				seed = (ulong)(Random.RandomRangeInt(0, 10000) ^ ((long)Random.RandomRangeInt(1, 10) << 16));
			}
			rng = new Xoroshiro128Plus(seed);
			((BaseUnityPlugin)this).Logger.LogFatal((object)("seed is " + seed));
			Buffs.Awake();
			NameSystem.populate();
			int value = ((BaseUnityPlugin)this).Config.Bind<int>("Configuration:", "Maximum Items", 30, "The maximum amount of items the mod will generate.").Value;
			ItemCatalog.Init += new hook_Init(ItemCatalog_Init);
			Effect.ModifyPrefabs();
			for (int i = 0; i < value; i++)
			{
				GenerateItem();
				if (i == value - 1)
				{
					((BaseUnityPlugin)this).Logger.LogWarning((object)("Max item amount of " + value + " reached"));
				}
			}
			RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(RecalculateStatsAPI_GetStatCoefficients);
			GlobalEventManager.ServerDamageDealt += new hook_ServerDamageDealt(GlobalEventManager_ServerDamageDealt);
			object obj = <>c.<>9__19_0;
			if (obj == null)
			{
				hook_Awake val = delegate(orig_Awake orig, BaseMainMenuScreen self)
				{
					//IL_0021: Unknown result type (might be due to invalid IL or missing references)
					//IL_0026: Unknown result type (might be due to invalid IL or missing references)
					//IL_002b: Unknown result type (might be due to invalid IL or missing references)
					//IL_0031: Unknown result type (might be due to invalid IL or missing references)
					orig.Invoke(self);
					foreach (ItemDef myItemDef in myItemDefs)
					{
						PickupIndex val10 = PickupCatalog.FindPickupIndex(myItemDef.itemIndex);
						UserProfile.defaultProfile.DiscoverPickup(val10);
					}
				};
				<>c.<>9__19_0 = val;
				obj = (object)val;
			}
			BaseMainMenuScreen.Awake += (hook_Awake)obj;
			object obj2 = <>c.<>9__19_1;
			if (obj2 == null)
			{
				hook_Update val2 = delegate(orig_Update orig, CharacterBody self)
				{
					orig.Invoke(self);
					if (NetworkServer.active && Object.op_Implicit((Object)(object)self.characterMotor) && ((Vector3)(ref self.characterMotor.velocity)).magnitude != 0f - ((Vector3)(ref self.characterMotor.lastVelocity)).magnitude && !self.isPlayerControlled)
					{
					}
				};
				<>c.<>9__19_1 = val2;
				obj2 = (object)val2;
			}
			CharacterBody.Update += (hook_Update)obj2;
			object obj3 = <>c.<>9__19_2;
			if (obj3 == null)
			{
				hook_OnSkillActivated val3 = delegate(orig_OnSkillActivated orig, CharacterBody sender, GenericSkill slot)
				{
					//IL_0045: Unknown result type (might be due to invalid IL or missing references)
					//IL_004a: Unknown result type (might be due to invalid IL or missing references)
					//IL_004c: Unknown result type (might be due to invalid IL or missing references)
					orig.Invoke(sender, slot);
					if (Object.op_Implicit((Object)(object)sender) && Object.op_Implicit((Object)(object)sender.inventory) && NetworkServer.active)
					{
						foreach (ItemIndex item in sender.inventory.itemAcquisitionOrder)
						{
							ItemDef val9 = ItemCatalog.GetItemDef(item);
							if (map.TryGetValue(val9.nameToken, out var value5) && value5.effectType == Effect.EffectType.OnSkillUse && Util.CheckRoll(value5.chance, sender.master) && value5.ConditionsMet(sender))
							{
								value5.onSkillUseEffect(sender, sender.inventory.GetItemCount(val9));
							}
						}
					}
				};
				<>c.<>9__19_2 = val3;
				obj3 = (object)val3;
			}
			CharacterBody.OnSkillActivated += (hook_OnSkillActivated)obj3;
			object obj4 = <>c.<>9__19_3;
			if (obj4 == null)
			{
				hook_OnCharacterDeath val4 = delegate(orig_OnCharacterDeath orig, GlobalEventManager self, DamageReport report)
				{
					//IL_005f: Unknown result type (might be due to invalid IL or missing references)
					//IL_0065: Invalid comparison between Unknown and I4
					//IL_0164: Unknown result type (might be due to invalid IL or missing references)
					//IL_016a: Invalid comparison between Unknown and I4
					//IL_008c: Unknown result type (might be due to invalid IL or missing references)
					//IL_0091: Unknown result type (might be due to invalid IL or missing references)
					//IL_0094: Unknown result type (might be due to invalid IL or missing references)
					//IL_0194: Unknown result type (might be due to invalid IL or missing references)
					//IL_0199: Unknown result type (might be due to invalid IL or missing references)
					//IL_019c: Unknown result type (might be due to invalid IL or missing references)
					orig.Invoke(self, report);
					DamageInfo damageInfo = report.damageInfo;
					if (NetworkServer.active && Object.op_Implicit((Object)(object)damageInfo.attacker) && report.victimIsElite)
					{
						CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>();
						if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.inventory) && NetworkServer.active && (int)damageInfo.damageColorIndex != 3)
						{
							foreach (ItemIndex item2 in component.inventory.itemAcquisitionOrder)
							{
								ItemDef val7 = ItemCatalog.GetItemDef(item2);
								if (map.TryGetValue(val7.nameToken, out var value3) && value3.effectType == Effect.EffectType.OnElite && value3.ConditionsMet(component))
								{
									value3.onEliteEffect(damageInfo, component.inventory.GetItemCount(val7));
								}
							}
						}
					}
					else if (NetworkServer.active && Object.op_Implicit((Object)(object)damageInfo.attacker))
					{
						CharacterBody component2 = damageInfo.attacker.GetComponent<CharacterBody>();
						if (Object.op_Implicit((Object)(object)component2) && Object.op_Implicit((Object)(object)component2.inventory) && NetworkServer.active && (int)damageInfo.damageColorIndex != 3)
						{
							foreach (ItemIndex item3 in component2.inventory.itemAcquisitionOrder)
							{
								ItemDef val8 = ItemCatalog.GetItemDef(item3);
								if (map.TryGetValue(val8.nameToken, out var value4) && value4.effectType == Effect.EffectType.OnKill && value4.ConditionsMet(component2))
								{
									value4.onKillEffect(damageInfo, component2.inventory.GetItemCount(val8));
								}
							}
						}
					}
				};
				<>c.<>9__19_3 = val4;
				obj4 = (object)val4;
			}
			GlobalEventManager.OnCharacterDeath += (hook_OnCharacterDeath)obj4;
			object obj5 = <>c.<>9__19_4;
			if (obj5 == null)
			{
				hook_Heal val5 = delegate(orig_Heal orig, HealthComponent self, float amount, ProcChainMask mask, bool nonRegen)
				{
					//IL_00de: Unknown result type (might be due to invalid IL or missing references)
					//IL_0026: Unknown result type (might be due to invalid IL or missing references)
					//IL_0057: Unknown result type (might be due to invalid IL or missing references)
					//IL_005c: 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)
					CharacterBody body = self.body;
					if (Object.op_Implicit((Object)(object)body) && Object.op_Implicit((Object)(object)body.inventory) && NetworkServer.active && !((ProcChainMask)(ref mask)).HasProc(HealingBonus) && nonRegen)
					{
						foreach (ItemIndex item4 in body.inventory.itemAcquisitionOrder)
						{
							ItemDef val6 = ItemCatalog.GetItemDef(item4);
							if (map.TryGetValue(val6.nameToken, out var value2) && value2.effectType == Effect.EffectType.OnHeal && value2.ConditionsMet(body))
							{
								value2.onHealEffect(self, body.inventory.GetItemCount(val6));
							}
						}
					}
					return orig.Invoke(self, amount, mask, nonRegen);
				};
				<>c.<>9__19_4 = val5;
				obj5 = (object)val5;
			}
			HealthComponent.Heal += (hook_Heal)obj5;
		}

		private void ItemCatalog_Init(orig_Init orig)
		{
			orig.Invoke();
		}

		private ItemDisplayRuleDict CreateItemDisplayRules()
		{
			return null;
		}

		private void GenerateItem()
		{
			//IL_01ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_0275: Unknown result type (might be due to invalid IL or missing references)
			//IL_027a: Unknown result type (might be due to invalid IL or missing references)
			//IL_02dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_032a: Unknown result type (might be due to invalid IL or missing references)
			//IL_032f: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_03d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0455: Unknown result type (might be due to invalid IL or missing references)
			//IL_045a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0486: Unknown result type (might be due to invalid IL or missing references)
			//IL_048d: Expected O, but got Unknown
			//IL_04f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0503: Unknown result type (might be due to invalid IL or missing references)
			//IL_0510: Unknown result type (might be due to invalid IL or missing references)
			//IL_051f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0520: 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_052b: Unknown result type (might be due to invalid IL or missing references)
			//IL_054e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0571: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_05aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_05df: Expected I4, but got Unknown
			//IL_0973: Unknown result type (might be due to invalid IL or missing references)
			//IL_0982: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a53: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a54: Unknown result type (might be due to invalid IL or missing references)
			//IL_0acc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0ad6: Expected O, but got Unknown
			//IL_086f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0874: Unknown result type (might be due to invalid IL or missing references)
			//IL_0830: Unknown result type (might be due to invalid IL or missing references)
			//IL_0832: Unknown result type (might be due to invalid IL or missing references)
			//IL_0837: Unknown result type (might be due to invalid IL or missing references)
			//IL_083e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0843: Unknown result type (might be due to invalid IL or missing references)
			//IL_0902: Unknown result type (might be due to invalid IL or missing references)
			//IL_0907: Unknown result type (might be due to invalid IL or missing references)
			//IL_08c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_08c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_08ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_08d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_08d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_07ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_07cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_078b: 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)
			//IL_0792: Unknown result type (might be due to invalid IL or missing references)
			//IL_0799: Unknown result type (might be due to invalid IL or missing references)
			//IL_079e: Unknown result type (might be due to invalid IL or missing references)
			string text = "";
			string text2 = "";
			int i = 0;
			string text3 = "E";
			for (; i <= 5; i++)
			{
				int index = rng.RangeInt(0, NameSystem.itemNamePrefix.Count);
				int index2 = rng.RangeInt(0, NameSystem.itemName.Count);
				text = "";
				text2 = "";
				text = text + NameSystem.itemNamePrefix[index] + " ";
				text += NameSystem.itemName[index2];
				text3 = text.ToUpper();
				text3 = text3.Replace(" ", "_").Replace("'", "").Replace("&", "AND");
				if (!map.TryGetValue("ITEM_" + text3 + "_NAME", out var _))
				{
					break;
				}
			}
			if (i > 5)
			{
				return;
			}
			string text4 = "";
			int num = rng.RangeInt(0, 120);
			for (int j = 0; j < num; j++)
			{
				int index3 = rng.RangeInt(0, NameSystem.logDesc.Count);
				text4 += NameSystem.logDesc[index3];
				text4 = ((j % rng.RangeInt(8, 14) != 0) ? (text4 + " ") : (text4 + ". "));
			}
			ItemTier val = (ItemTier)rng.RangeInt(0, 3);
			string text5 = "";
			float num2 = 1f;
			float num3 = 1f;
			Effect effect = new Effect();
			int num4 = rng.RangeInt(2, 9);
			PrimitiveType[] array = new PrimitiveType[4];
			RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/);
			PrimitiveType[] array2 = (PrimitiveType[])(object)array;
			GameObject val2 = GameObject.CreatePrimitive(array2[rng.RangeInt(0, array2.Length)]);
			for (int k = 0; k < num4; k++)
			{
				GameObject val3 = GameObject.CreatePrimitive(array2[rng.RangeInt(0, array2.Length)]);
				((Renderer)val3.GetComponent<MeshRenderer>()).material.color = Color32.op_Implicit(new Color32((byte)rng.RangeInt(0, 256), (byte)rng.RangeInt(0, 256), (byte)rng.RangeInt(0, 256), (byte)rng.RangeInt(0, 256)));
				val3.transform.SetParent(val2.transform);
				val3.transform.localPosition = new Vector3(rng.RangeFloat(-1f, 1f), rng.RangeFloat(-1f, 1f), rng.RangeFloat(-1f, 1f));
				val3.transform.localRotation = Quaternion.Euler(new Vector3(rng.RangeFloat(-360f, 360f), rng.RangeFloat(-360f, 360f), rng.RangeFloat(-360f, 360f)));
			}
			GameObject val4 = PrefabAPI.InstantiateClone(val2, text3 + "-model", false);
			MeshRenderer[] components = val4.GetComponents<MeshRenderer>();
			foreach (MeshRenderer val5 in components)
			{
				((Renderer)val5).sharedMaterial.shader = hgStandard;
				((Renderer)val5).sharedMaterial.color = Color32.op_Implicit(new Color32((byte)rng.RangeInt(0, 255), (byte)rng.RangeInt(0, 255), (byte)rng.RangeInt(0, 255), byte.MaxValue));
			}
			MeshRenderer[] componentsInChildren = val4.GetComponentsInChildren<MeshRenderer>();
			foreach (MeshRenderer val6 in componentsInChildren)
			{
				((Renderer)val6).sharedMaterial.shader = hgStandard;
				((Renderer)val6).sharedMaterial.color = Color32.op_Implicit(new Color32((byte)rng.RangeInt(0, 255), (byte)rng.RangeInt(0, 255), (byte)rng.RangeInt(0, 255), byte.MaxValue));
			}
			Object.DontDestroyOnLoad((Object)(object)val4);
			Texture2D val7 = new Texture2D(512, 512);
			Color[] array3 = (Color[])(object)new Color[262144];
			float num5 = rng.RangeFloat(0f, 10000f);
			float num6 = rng.RangeFloat(0f, 10000f);
			float num7 = rng.RangeFloat(1f, 1f);
			Dictionary<ItemTier, Color> dictionary = new Dictionary<ItemTier, Color>
			{
				{
					(ItemTier)0,
					new Color(0.77f, 0.95f, 0.97f, 0.99f)
				},
				{
					(ItemTier)1,
					Color.green
				},
				{
					(ItemTier)2,
					Color.red
				}
			};
			Color val8 = dictionary[val];
			int num8 = 40;
			int num9 = (int)Mathf.Clamp(val8.r * 255f + (float)num8, 0f, 255f);
			int num10 = (int)Mathf.Clamp(val8.g * 255f + (float)num8, 0f, 255f);
			int num11 = (int)Mathf.Clamp(val8.b * 255f + (float)num8, 0f, 255f);
			Color32 val9 = default(Color32);
			((Color32)(ref val9))..ctor((byte)num9, (byte)num10, (byte)num11, byte.MaxValue);
			ItemTier val10 = val;
			ItemTier val11 = val10;
			switch ((int)val11)
			{
			case 0:
				text5 = "Common";
				num2 = 1f;
				num3 = 1f;
				break;
			case 1:
				text5 = "Uncommon";
				num2 = 3.2f;
				num3 = 0.5f;
				break;
			case 2:
				text5 = "Legendary";
				num2 = 12f;
				num3 = 0.15f;
				break;
			case 3:
				text5 = "Lunar";
				num2 = 1.8f;
				num3 = 0.5f;
				break;
			case 6:
				text5 = "Void Common";
				num2 = 0.9f;
				num3 = 1f;
				break;
			case 7:
				text5 = "Void Uncommon";
				num2 = 1.5f;
				num3 = 0.75f;
				break;
			case 8:
				text5 = "Void Legendary";
				num2 = 2f;
				num3 = 0.45f;
				break;
			case 9:
				text5 = "Void Yellow";
				num2 = 2f;
				num3 = 0.6f;
				break;
			default:
				text5 = "BRO THIS SHOULDN'T BE HAPPENING";
				num2 = 1f;
				num3 = 1f;
				break;
			}
			effect.Generate(rng, num2, num3);
			int num12 = rng.RangeInt(0, 3);
			for (int n = 0; n < ((Texture)val7).height; n++)
			{
				for (int num13 = 0; num13 < ((Texture)val7).width; num13++)
				{
					float num14 = num5 + (float)(num13 / ((Texture)val7).width) * num7;
					float num15 = num6 + (float)(n / ((Texture)val7).height) * num7;
					float num16 = Mathf.PerlinNoise(num14, num15);
					switch (num12)
					{
					default:
						if (num13 > ((Texture)val7).width / 4 && num13 < ((Texture)val7).width * 3 / 4 && n > ((Texture)val7).height / 4 && n < ((Texture)val7).height * 3 / 4)
						{
							array3[n * ((Texture)val7).width + num13] = Color.Lerp(Color32.op_Implicit(val9), Color.black, num16);
						}
						else
						{
							array3[n * ((Texture)val7).width + num13] = new Color(0f, 0f, 0f, 0f);
						}
						break;
					case 1:
						if (Mathf.Sqrt(Mathf.Pow((float)(num13 - ((Texture)val7).width / 2), 2f) + Mathf.Pow((float)(n - ((Texture)val7).height / 2), 2f)) < (float)(((Texture)val7).width / 2))
						{
							array3[n * ((Texture)val7).width + num13] = Color.Lerp(Color32.op_Implicit(val9), Color.black, num16);
						}
						else
						{
							array3[n * ((Texture)val7).width + num13] = new Color(0f, 0f, 0f, 0f);
						}
						break;
					case 2:
						if (Mathf.Abs(num13 - ((Texture)val7).width / 2) + Mathf.Abs(n - ((Texture)val7).height / 2) < ((Texture)val7).width / 2)
						{
							array3[n * ((Texture)val7).width + num13] = Color.Lerp(Color32.op_Implicit(val9), Color.black, num16);
						}
						else
						{
							array3[n * ((Texture)val7).width + num13] = new Color(0f, 0f, 0f, 0f);
						}
						break;
					}
				}
			}
			val7.SetPixels(array3);
			val7.Apply();
			Sprite val12 = Sprite.Create(val7, new Rect(0f, 0f, (float)((Texture)val7).width, (float)((Texture)val7).height), new Vector2(0.5f, 0.5f));
			Object.DontDestroyOnLoad((Object)(object)val7);
			Object.DontDestroyOnLoad((Object)(object)val12);
			itemDef = ScriptableObject.CreateInstance<ItemDef>();
			((Object)itemDef).name = "ITEM_" + text3;
			itemDef.nameToken = "ITEM_" + text3 + "_NAME";
			itemDef.pickupToken = "ITEM_" + text3 + "_PICKUP";
			itemDef.descriptionToken = "ITEM_" + text3 + "_DESCRIPTION";
			itemDef.loreToken = "ITEM_" + text3 + "_LORE";
			itemDef.pickupModelPrefab = val4;
			itemDef.pickupIconSprite = val12;
			itemDef.hidden = false;
			itemDef.deprecatedTier = val;
			map.Add(itemDef.nameToken, effect);
			LanguageAPI.Add(itemDef.nameToken, text);
			LanguageAPI.Add(itemDef.pickupToken, effect.description);
			LanguageAPI.Add(itemDef.descriptionToken, effect.description);
			LanguageAPI.Add(itemDef.loreToken, text4);
			ItemAPI.Add(new CustomItem(itemDef, CreateItemDisplayRules()));
			myItemDefs.Add(itemDef);
			((BaseUnityPlugin)this).Logger.LogDebug((object)("Generated a " + text5 + " item named " + text));
		}

		private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args)
		{
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: 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)
			if (!Object.op_Implicit((Object)(object)sender) || !Object.op_Implicit((Object)(object)sender.inventory) || !NetworkServer.active)
			{
				return;
			}
			foreach (ItemIndex item in sender.inventory.itemAcquisitionOrder)
			{
				ItemDef val = ItemCatalog.GetItemDef(item);
				if (map.TryGetValue(val.nameToken, out var value) && value.effectType == Effect.EffectType.Passive && value.ConditionsMet(sender))
				{
					value.statEffect(args, sender.inventory.GetItemCount(val), sender);
				}
			}
		}

		private void GlobalEventManager_ServerDamageDealt(orig_ServerDamageDealt orig, DamageReport report)
		{
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Invalid comparison between Unknown and I4
			//IL_0163: Unknown result type (might be due to invalid IL or missing references)
			//IL_0169: Invalid comparison between Unknown and I4
			//IL_0088: 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_0090: Unknown result type (might be due to invalid IL or missing references)
			//IL_0192: Unknown result type (might be due to invalid IL or missing references)
			//IL_0197: Unknown result type (might be due to invalid IL or missing references)
			//IL_019a: Unknown result type (might be due to invalid IL or missing references)
			orig.Invoke(report);
			DamageInfo damageInfo = report.damageInfo;
			if (!NetworkServer.active || !Object.op_Implicit((Object)(object)damageInfo.attacker))
			{
				return;
			}
			CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>();
			if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.inventory) && NetworkServer.active && (int)damageInfo.damageColorIndex != 3)
			{
				foreach (ItemIndex item in component.inventory.itemAcquisitionOrder)
				{
					ItemDef val = ItemCatalog.GetItemDef(item);
					if (map.TryGetValue(val.nameToken, out var value) && value.effectType == Effect.EffectType.OnHit && value.ConditionsMet(component) && Util.CheckRoll(value.chance, component.master))
					{
						value.onHitEffect(damageInfo, component.inventory.GetItemCount(val), ((Component)report.victim).gameObject);
					}
				}
			}
			GameObject gameObject = ((Component)report.victimBody).gameObject;
			component = gameObject.GetComponent<CharacterBody>();
			if (!Object.op_Implicit((Object)(object)component) || !Object.op_Implicit((Object)(object)component.inventory) || !NetworkServer.active || (int)damageInfo.damageColorIndex == 3)
			{
				return;
			}
			foreach (ItemIndex item2 in component.inventory.itemAcquisitionOrder)
			{
				ItemDef val2 = ItemCatalog.GetItemDef(item2);
				if (map.TryGetValue(val2.nameToken, out var value2) && value2.effectType == Effect.EffectType.OnHurt && value2.ConditionsMet(component))
				{
					value2.onHurtEffect(gameObject, component.inventory.GetItemCount(val2));
				}
			}
		}
	}
	public static class NameSystem
	{
		public static List<string> itemNamePrefix = new List<string>
		{
			"Armor-Piercing", "Backup", "Bison", "Bundle of", "Bustling", "Cautious", "Delicate", "Energy", "Focus", "Lens-Maker's",
			"Monster", "Oddly-shaped", "Paul's Goat", "Personal", "Power", "Repulsion", "Roll of", "Rusted", "Soldier's", "Sticky",
			"Stun", "Topaz", "Tougher", "Tri-Tip", "AtG", "Berzerker's", "Death", "Fuel", "Ghor's", "Harvester's",
			"Hopoo", "Hunter's", "Ignition", "Kjaro's", "Leeching", "Lepton", "Old", "Old War", "Predatory", "Red",
			"Regenerating", "Rose", "Runald's", "Shipping Request", "Squid", "War", "Wax", "Will of the", "57 Leaf", "Alien",
			"Ben's", "Bottled", "Brilliant", "Ceremonial", "Defensive", "Frost", "Happiest", "Hardlight", "Interstellar", "Laser",
			"N'kuhana's", "Pocket", "Rejuvenation", "Resonance", "Sentient", "Shattering", "Soulbound", "Spare", "Symbiotic", "Unstable",
			"Wake of", "Charged", "Defense", "Empathy", "Genesis", "Halcyon", "Irradiant", "Little", "Mired", "Molten",
			"Queen's", "Titanic", "Beads of", "Brittle", "Defiant", "Essence of", "Eulogy", "Focused", "Gesture of the", "Hooks of",
			"Light Flux", "Mercurial", "Shaped", "Stone Flux", "Strides of", "Visions of", "Benthic", "Encrusted", "Lost Seer's", "Lysate",
			"Newly Hatched", "Plasma", "Pluripotent", "Safer", "Singularity", "Tenta", "Voidsent", "Weeping", "Blast", "Disposable",
			"Eccentric", "Executive", "Foreign", "Fuel", "Gnarled", "Gorag's", "Jade", "Milky", "Primordial", "Remote",
			"Royal", "Super Massive", "Crowdfunding", "Tropy Hunter's", "Volcanic", "Glowing", "Helfire", "Spinel", "Her", "His",
			"Ifrit's", "Suspicious", "The", "The", "The", "The", "The", "The", "The", "The",
			"The", "The", "Artificial", "Liquated", "Crystallized", "Wild", "Poison", "Primitive", "Stealthy", "Blazing",
			"Nacreous", "Invisible", "HIFU's", "RandomlyAwesome's", "Harb's", "iDeath's", "Twiner's", "Jace's", "Groove's", "Noop's",
			"Dotflare's", "Atlantean", "Gav's", "Mystic's", "Nebby's", "MonsterSkinMan's", "Pseudopulse's", "Scarlet", "Crazy", "Erised",
			"Froggin'", "Pale", "Black", "Heavy", "Rainbow", "Stranger", "Blood", "Malleable", "Abandoned", "Antler's",
			"Another", "Orange", "Mint", "Snake", "Closer", "Velvet", "Scorpio", "Gold", "Concealing", "Impossible",
			"Luminary", "Dead", "Ordinary", "Little", "Deep", "Divisionary", "Autonomous", "Glass", "Electric", "Hollow",
			"Cardinal", "Arch", "False", "Makeshift", "Non Human", "Outer", "Serial", "Ultrabeat", "Disconnected", "Ephemeral",
			"Lost", "Burning", "Toxic", "Dying", "Neo", "Doom", "Argent", "Translucent", "Soul", "Opaque",
			"Broken", "Peripheral", "Unprocessed", "Within", "Blue", "Motionless", "White", "Veil of", "Snecko", "Ironclad",
			"Silent", "Defective", "Perfected", "Reckless", "First", "Second", "Ghostly", "Infernal", "Flying", "Poisoned",
			"Quick", "Sneaky", "All-Out", "Endless", "Masterful", "Grand", "Piercing", "Bouncing", "Calculated", "Crippling",
			"Phantasmal", "Infinite", "Noxious", "Well-Laid", "Sweeping", "Genetic", "Reinforced", "Amplified", "Defragmented", "Biased",
			"Based", "Empty", "Flurry of", "Barrage of", "Volley of", "Salvo of", "Gate of", "Book of", "Aura of", "Barrier of",
			"Agony of", "Revival of", "Retrospect of", "Puzzle of", "Mask of", "Wand of", "Blade of", "Song of", "Eye of", "Belt of",
			"Helmet of", "Annoying", "Awful", "Bloody", "Clean", "Combative", "Courageous", "Cute", "Adorable", "Distinct",
			"Green", "Yellow", "Pink", "Monochromatic", "Charming", "Dangerous", "Drab", "Alive", "Bright", "Dark",
			"Evil", "Enchanting", "Fragile", "Jittery", "Mysterious", "Modern", "Perfect", "Plain", "Real", "Fake",
			"Tender", "Unusual", "Imaginary", "Enemy", "Glue", "Good", "Great", "Weak", "Strong", "New",
			"High", "Modern", "Major", "Minor", "Single", "Dual", "Abstract", "Chocolate", "King's", "Moon",
			"Legendary", "Mythical", "Epic", "Rare", "Ratio", "Wireless", "Platinum", "Contraband", "Crystallized", "Burnt",
			"Devil's", "God's", "Nuclear", "Bulwark's", "Umbral", "Random", "Randomized", "Meta", "Hard", "Guarding",
			"Armored", "Warding", "Precise", "Lucky", "Jagged", "Spiked", "Angry", "Menacing", "Brisk", "Fleeting",
			"Hasty", "Quick", "Wild", "Rash", "Intrepid", "Violent", "Arcane", "Keen", "Superior", "Forceful",
			"Broken", "Damaged", "Shoddy", "Hurtful", "Strong", "Unpleasant", "Weak", "Ruthless", "Godly", "Demonic",
			"Zealous", "Quick", "Deadly", "Agile", "Nimble", "Murderous", "Slow", "Sluggish", "Lazy", "Annoying",
			"Nasty", "Large", "Massive", "Dangerous", "Savage", "Sharp", "Pointy", "Tiny", "Terrible", "Small",
			"Dull", "Unhappy", "Bulky", "Shameful", "Heavy", "Light", "Legendary", "Sighted", "Rapid", "Hasty",
			"Intimidating", "Deadly", "Staunch", "Awful", "Lethargic", "Awkward", "Powerful", "Frenzying", "Unreal", "Mystic",
			"Adept", "Masterful", "Inept", "Ignorant", "Deranged", "Intense", "Taboo", "Celestial", "Furious", "Manic",
			"Mythical", "Femboy"
		};

		public static List<string> itemName = new List<string>
		{
			"Insomnia", "Letter", "Experiment", "Jetpack", "Light", "Materials", "Buttersnips", "Feelings", "Zyglrox", "Racecar",
			"Passenger", "Groove", "Captain", "Eureka", "Muramasa", "Blast", "Facepalm", "Mute", "Ji", "Luck",
			"Ragnarok", "Diamond", "Bullfish", "Masamune", "Overture", "Ground", "Zero", "Parade", "Aura", "Minute",
			"Ultra", "Heart", "Scourge", "Alpha", "Gravity", "Hell", "Omega", "Price", "Motormouth", "Marigold",
			"Priestess", "Flatline", "Fire", "Prayer", "Lune", "Reptile", "Eagle", "Burner", "Ghost", "Glow",
			"Covenant", "Haven", "Ghilan", "Millenium", "Division", "Meridian", "Prototype", "Void", "Ruins", "Fear",
			"Waters", "Avatar", "Decay", "Spine", "Sky", "Movements", "Echoes", "Deadrose", "Rain", "Longing",
			"Grove", "Oil", "Scorpio", "Ocean", "Portrait", "Gold", "Fate", "Proxy", "Retrospect", "Nocturne",
			"Eclipse", "Singularity", "Embers", "Dystopia", "Hexes", "Utopia", "Messenger", "Cages", "King", "Orbital",
			"Mirror Image", "Arrow", "Matter", "Energy", "Blood", "Blood", "Extinction", "Impermanence", "Wonder", "Libertine",
			"Goliath", "Demi God", "Meteor", "Fake", "Skyline", "Snowblood", "Gungrave", "Shadow", "House", "Twilight",
			"Hymn", "Canvas", "Eidolon", "Remnant", "Fiction", "I", "Animus", "Deadnest", "Lavos", "Opiate",
			"Essence", "Somnus", "Providence", "Harmony", "Cimmerian", "Vein", "Club", "Molecule", "Space", "Follower",
			"Madness", "Face", "Imago", "Brahmastra", "Killer", "Hole", "Wave", "Lotus", "Nightmare", "Scars",
			"Revenge", "World", "Illusions", "Radiance", "Sequence", "Tragedy", "Convulsions", "Gasoline", "Body Bag", "Love",
			"Parasite", "Slayer", "Rip", "Gate", "Harbinger", "Headache", "Flight", "Mikasa", "Sandalphon", "Venom",
			"Horizon", "Tendinitis", "Blood & Water", "Surrender", "Everything", "Elevation", "Periphery", "Tesseract", "Augment", "Stasis",
			"Variations", "Afterglow", "Destruction", "Termina", "Ruin", "Glasses", "Clock", "Fork", "Bracelet", "Socks",
			"Lamp", "Remote", "Bread", "Credit Card", "Book", "Necronomicon", "Shawl", "Candle", "Knife", "Cannon",
			"Mortar", "Machine Gun", "Bola", "Boomerang", "Bow", "Crossbow", "Longbow", "Sling", "Spear", "Flamethrower",
			"Bayonet", "Halberd", "Lance", "Pike", "Quarterstaff", "Sabre", "Sword", "Tomahawk", "Grenade", "Mine",
			"Shrapnel", "Depth Charge", "C4", "Torpedo", "Trident Missile", "Peacekeeper Missile", "Bazooka", "Blowgun", "Blunderbuss", "Carbine",
			"Gatling gun", "Handgun", "Pistol", "Revolver", "Derringer", "Arquebus", "Musket", "Rifle", "Shotgun", "Luger",
			"Repeater", "Submachine gun", "Shrapnel", "Hammer", "Screwdriver", "Mallet", "Axe", "Saw", "Scissors", "Chisel",
			"Pliers", "Drill", "Iron", "Chainsaw", "Scraper", "Wire", "Nail", "Shovel", "Callipers", "Scalpel",
			"Gloves", "Needle", "Brain", "Lungs", "Liver", "Bladder", "Kidney", "Heart", "Stomach", "Eye",
			"Animal", "Balloon", "Battery", "Camera", "Disease", "Drug", "Guitar", "Ice", "Iron", "Quill",
			"Spoon", "Pen", "Box", "Brush", "Stockings", "Card", "Strike", "Bash", "Anger", "Clash",
			"Cleave", "Wave", "Bludgeon", "Carnage", "Rampage", "Armament", "Grit", "Warcry", "Battle Trance", "Pact",
			"Barrier", "Armor", "Blade", "Rage", "Wind", "Sentinel", "Weakness", "Offering", "Embrace", "Rupture",
			"Barricade", "Berserk", "Brutality", "Corruption", "Bane", "Flechettes", "Skewer", "Grand Finale", "Cloak", "Poison",
			"Wail", "Flask", "Gamble", "Catalyst", "Cloud", "Distraction", "Plan", "Terror", "Reflex", "Caltrops",
			"Footwork", "Fumes", "Lightning", "Barrage", "Claw", "Snap", "Driver", "Rebound", "Streamline", "Beam",
			"Blizzard", "Bullseye", "Melter", "Sunder", "Surge", "Hyperbeam", "Hologram", "Recursion", "Metronome", "Void",
			"Puzzle", "Piece", "Magnet", "Emblem", "Cuffs", "Flower", "Boneflower", "Booster", "Cake", "Plum",
			"Apple", "Cane", "Keeper", "Umbrella", "Edge", "Yoyo", "Fork", "Spoon", "Boomerang", "Chakram",
			"Machete", "Wrench", "Mace", "Meatball", "Hand", "Sickle", "Bat", "Tongue", "Inferno", "Key",
			"Dragon", "Waver", "Wrath", "Naginata", "Glaive", "Swordfish", "Pole", "Disc", "Hatchet", "Anchor",
			"Fist", "Pow", "Armor", "Stone", "Skull", "Emblem", "Glove", "Shell", "Blaster", "Cocktail",
			"Grenade", "Harpoon", "Launcher", "Atomosphere", "Zapper", "Staff", "Scythe", "Bolt", "Rod", "Fracture",
			"Serpent", "Burst", "Ray", "Blower", "Typhoon", "Syzygy", "Armageddon", "Flare", "Head", "Flask",
			"Harp", "Thorn", "Tune", "Arcanum", "Blaze", "Load"
		};

		public static List<string> logDesc = new List<string>
		{
			"though", "you", "can", "give", "no", "more", "inspiring", "false", "courage", "i've",
			"got", "the", "reason", "to", "alter", "belief", "selfish", "paintings", "diamonds", "mutilate",
			"you", "can't", "erase", "the", "way", "i'm", "unappreciated", "but", "i", "can't",
			"sleep", "tonight", "embrace", "of", "the", "drink", "be", "hollow,", "swallow", "the",
			"pain", "splitting", "the", "fields", "all", "the", "noise", "agitates", "the", "stars",
			"have", "not", "aligned", "in", "your", "favor", "cross", "the", "line", "of",
			"obscenity", "ignoring", "the", "signs", "the", "smoke", "in", "your", "eyes", "carelessly",
			"of", "the", "edge", "with", "me", "it", "will", "paint", "your", "child",
			"white", "look", "to", "find", "a", "way,", "to", "love", "all", "the",
			"past", "promises,", "to", "keep", "you", "washed", "away", "sever", "the", "ties",
			"broken", "by", "the", "black", "and", "white", "now", "fade", "away", "the",
			"stars", "have", "not", "aligned", "in", "your", "favor", "cross", "the", "line",
			"of", "obscenity", "ignoring", "the", "signs", "the", "smoke", "in", "your", "eyes",
			"carelessly", "of", "the", "edge", "with", "me", "it", "will", "paint", "your",
			"child", "white", "look", "to", "find", "a", "way,", "to", "love", "all",
			"the", "past", "promises,", "to", "keep", "you", "washed", "away", "(beyond", "my)",
			"laid", "in", "the", "ground", "were", "lost", "far", "beyond", "the", "clouds",
			"stay", "in", "the", "darks", "of", "hell,", "it's", "me", "along", "the",
			"edge", "of", "belief", "a", "heart", "always", "in", "the", "stars", "will",
			"never", "fade", "decay", "in", "the", "ground", "were", "lost", "far", "beyond",
			"the", "clouds", "pray", "in", "the", "dark", "for", "now", "prey", "on",
			"the", "sounds", "with", "silence", "the", "darks", "around", "reach", "for", "a",
			"spark", "of", "doubt", "alive", "reach", "into", "the", "void", "touch", "the",
			"heart", "of", "darkness", "reach", "for", "the", "light", "feel", "the", "hand",
			"of", "god", "the", "uncertainty", "of", "my", "existence", "can", "be", "decided",
			"by", "choice", "of", "a", "path", "i", "must", "walk", "so,", "sick",
			"monotone", "culprit", "come", "on", "down", "and", "we'll", "talk", "about", "it",
			"bow", "down", "to", "the", "gods", "or", "keep", "on", "walking", "further",
			"on", "the", "cusp", "of", "our", "enlightenment", "we", "march", "with", "the",
			"sun", "at", "my", "back", "i", "take", "my", "first", "step", "outside",
			"shading", "my", "thoughts", "and", "perceptions", "done", "from", "the", "truth", "i'll",
			"never", "run", "be", "it", "the", "light", "or", "the", "shadow", "i",
			"walk", "in", "hand", "with", "all", "born", "of", "nothing", "my", "thoughts",
			"are", "unconditional", "and", "i", "despise", "the", "façade", "of", "the", "original",
			"martyr", "deep", "with", "the", "void", "higher", "searching", "for", "the", "light",
			"we", "leave", "this", "world", "behind", "the", "violent", "twisting", "of", "the",
			"fates", "the", "eminent", "collapse", "of", "our", "current", "state", "born", "of",
			"nothing", "my", "thoughts", "are", "unconditional", "and", "i", "despise", "the", "façade",
			"of", "the", "original", "martyr", "deep", "with", "the", "void", "higher", "searching",
			"for", "the", "light", "we", "leave", "this", "world", "behind", "bow", "down",
			"to", "the", "gods", "or", "keep", "on", "walking", "further", "on", "the",
			"cusp", "of", "our", "enlightenment", "we", "marchreach", "into", "the", "void", "touch",
			"the", "heart", "of", "darkness", "reach", "for", "the", "light", "feel", "the",
			"hand", "of", "god", "the", "uncertainty", "of", "my", "existence", "can", "be",
			"decided", "by", "choice", "of", "a", "path", "i", "must", "walk", "so,",
			"sick", "monotone", "culprit", "come", "on", "down", "and", "we'll", "talk", "about",
			"it", "bow", "down", "to", "the", "gods", "or", "keep", "on", "walking",
			"further", "on", "the", "cusp", "of", "our", "enlightenment", "we", "march", "with",
			"the", "sun", "at", "my", "back", "i", "take", "my", "first", "step",
			"outside", "shading", "my", "thoughts", "and", "perceptions", "done", "from", "the", "truth",
			"i'll", "never", "run", "be", "it", "the", "light", "or", "the", "shadow",
			"i", "walk", "in", "hand", "with", "all", "born", "of", "nothing", "my",
			"thoughts", "are", "unconditional", "and", "i", "despise", "the", "façade", "of", "the",
			"original", "martyr", "deep", "with", "the", "void", "higher", "searching", "for", "the",
			"light", "we", "leave", "this", "world", "behind", "the", "violent", "twisting", "of",
			"the", "fates", "the", "eminent", "collapse", "of", "our", "current", "state", "born",
			"of", "nothing", "my", "thoughts", "are", "unconditional", "and", "i", "despise", "the",
			"façade", "of", "the", "original", "martyr", "deep", "with", "the", "void", "higher",
			"searching", "for", "the", "light", "we", "leave", "this", "world", "behind", "bow",
			"down", "to", "the", "gods", "or", "keep", "on", "walking", "further", "on",
			"the", "cusp", "of", "our", "enlightenment", "we", "march", "flashing", "eyes", "of",
			"heat", "vessel", "through", "the", "deep", "by", "the", "son", "of", "night,",
			"unclean", "charon", "fear", "becomes", "belief", "for", "those", "who", "cannot", "pay",
			"the", "fee", "a", "coin", "to", "board", "the", "fleet", "or", "one",
			"hundred", "years", "disease", "row", "but", "the", "line", "it", "never", "fades",
			"the", "story", "is", "bound", "to", "unfold", "in", "the", "end", "love",
			"of", "mine,", "gone", "forever", "say", "goodbye", "to", "the", "sky", "bound",
			"by", "time,", "enter", "the", "ride", "absently,", "i", "will", "be", "motivate",
			"fortune", "can't", "escape", "from", "the", "arms", "of", "death", "along", "the",
			"shore", "many", "faces", "accumulate", "in", "preparation", "for", "the", "underworld", "single",
			"file", "ghost", "by", "ghost", "the", "deck", "fills", "up", "to", "embark",
			"on", "the", "final", "sail", "but", "the", "line", "it", "never", "fades",
			"the", "story", "is", "bound", "to", "unfold", "in", "the", "end", "alone",
			"we", "rise", "and", "fall", "awaiting", "the", "day,", "a", "life", "coalesced",
			"deep", "in", "the", "silence", "our", "fate", "is", "won", "create", "and",
			"consciously", "free", "the", "mind", "so", "far", "from", "where", "i", "lost",
			"my", "soul", "depart,", "implore,", "divine", "in", "our", "minds", "adventure", "is",
			"always", "listening", "just", "stay", "here", "the", "world", "isn't", "always", "listening",
			"disappear", "suffer", "in", "endless", "doubt", "holding", "onto", "the", "memories", "as",
			"they", "fade", "away", "these", "thoughts", "and", "sorrows", "will", "not", "remainflashing",
			"eyes", "of", "heat", "vessel", "through", "the", "deep", "by", "the", "son",
			"of", "night,", "unclean", "charon", "fear", "becomes", "belief", "for", "those", "who",
			"cannot", "pay", "the", "fee", "a", "coin", "to", "board", "the", "fleet",
			"or", "one", "hundred", "years", "disease", "row", "but", "the", "line", "it",
			"never", "fades", "the", "story", "is", "bound", "to", "unfold", "in", "the",
			"end", "love", "of", "mine,", "gone", "forever", "say", "goodbye", "to", "the",
			"sky", "bound", "by", "time,", "enter", "the", "ride", "absently,", "i", "will",
			"be", "motivate", "fortune", "can't", "escape", "from", "the", "arms", "of", "death",
			"along", "the", "shore", "many", "faces", "accumulate", "in", "preparation", "for", "the",
			"underworld", "single", "file", "ghost", "by", "ghost", "the", "deck", "fills", "up",
			"to", "embark", "on", "the", "final", "sail", "but", "the", "line", "it",
			"never", "fades", "the", "story", "is", "bound", "to", "unfold", "in", "the",
			"end", "alone", "we", "rise", "and", "fall", "awaiting", "the", "day,", "a",
			"life", "coalesced", "deep", "in", "the", "silence", "our", "fate", "is", "won",
			"create", "and", "consciously", "free", "the", "mind", "so", "far", "from", "where",
			"i", "lost", "my", "soul", "depart,", "implore,", "divine", "in", "our", "minds",
			"adventure", "is", "always", "listening", "just", "stay", "here", "the", "world", "isn't",
			"always", "listening", "disappear", "suffer", "in", "endless", "doubt", "holding", "onto", "the",
			"memories", "as", "they", "fade", "away", "these", "thoughts", "and", "sorrows", "will",
			"not", "remain", "these", "walls", "of", "time", "release", "my", "eyes", "move",
			"like", "the", "drift", "the", "cries,", "they", "resonate", "within", "the", "fabric",
			"tears", "before", "me", "break", "ties", "between", "the", "kin", "reaching", "for",
			"a", "way", "out", "of", "this", "dream", "i", "waste", "my", "breath",
			"ascending", "fears", "lead", "me", "astray", "the", "past", "brings", "them", "to",
			"be", "whats", "left", "to", "carry", "me", "but", "a", "memory", "the",
			"dream", "endures", "these", "lies", "forever", "at", "the", "edge,", "left", "surviving",
			"alone", "whats", "left", "as", "i", "wonder", "i've", "found", "a", "world",
			"where", "i", "am", "free", "inside", "that", "which", "is", "truth", "the",
			"ground", "upon", "which", "i", "have", "grown", "is", "not", "the", "same",
			"the", "fears,", "they've", "fallen", "away", "presently", "i've", "found", "i", "am",
			"not", "alone", "in", "a", "world", "of", "infinity", "sewn", "perceive", "beyond",
			"the", "seam", "a", "soul", "evolves", "as", "one", "in", "sunshine's", "view",
			"the", "absence", "of", "love", "behold", "what's", "blinding", "you", "serpent", "or",
			"dove", "between", "uncertainties", "tethered", "wings", "and", "captive", "dreams", "aren't", "worth",
			"the", "suffering", "open", "your", "eyes", "devotion", "deprived", "deny", "the", "very",
			"thing", "that", "you've", "accepted", "this", "life", "is", "about", "listen", "to",
			"my", "words", "defy", "devotion", "sick", "from", "the", "fall", "behind", "the",
			"wall", "so", "i", "demand", "of", "you,", "stand", "up", "and", "see",
			"before", "they", "saw", "what", "i", "was", "becoming", "before", "it", "kept",
			"me", "form", "reaching", "the", "light", "can't", "seem", "to", "understand", "it",
			"can't", "seem", "to", "know", "listen", "to", "the", "vacant", "soul", "the",
			"child", "has", "lost", "his", "way", "tension", "suffering", "the", "hole", "something",
			"against", "me", "i", "won't", "try", "never", "again", "i", "will", "not",
			"remember", "between", "the", "lines", "i", "sing", "with", "doubt", "behind", "this",
			"will", "fall", "lost", "in", "night", "and", "day", "breathing", "for", "me",
			"listen", "to", "the", "way", "i", "enter", "the", "world", "in", "time",
			"this", "lie", "will", "become", "me", "the", "things", "i've", "done", "to",
			"forget", "my", "dying", "senses", "weary", "from", "this", "act", "alone", "in",
			"vein", "six", "days", "away", "return", "from", "the", "fall", "just", "find",
			"a", "ray", "of", "light", "to", "help", "me", "ascend", "that", "is",
			"the", "only", "way", "moments", "lost", "searching", "for", "a", "dream", "that's",
			"real", "from", "my", "heart", "i'd", "give", "it", "all", "away", "just",
			"to", "know", "drifting", "away", "in", "truth", "revealed", "with", "perfect", "order",
			"life", "repeating", "endlessly", "light", "streaming", "from", "below", "this", "life", "is",
			"reborn", "from", "the", "shadow", "to", "the", "light", "moving", "through", "the",
			"time", "it's", "a", "cycle", "that", "repeats", "now", "forever", "don't", "touch",
			"the", "spinning", "wheel", "risking", "the", "progression", "just", "for", "a", "little",
			"taste", "but", "it's", "so", "natural", "call", "it", "human", "if", "you",
			"wish", "to", "save", "face", "losing", "control", "go", "with", "the", "flow",
			"get", "swept", "in", "the", "undertow", "where", "do", "we", "go", "you",
			"ask", "in", "simple", "question", "let", "me", "show", "you", "give", "me",
			"your", "hand", "and", "we", "shall", "fly", "moments", "lost", "searching", "for",
			"a", "dream", "that's", "real", "from", "my", "heart", "i'd", "give", "it",
			"all", "away", "just", "to", "know", "holding", "with", "every", "answer", "sealed.",
			"the", "path", "is", "hollowed,", "immortality", "we", "seek.", "light", "streaming", "from",
			"below,", "this", "life", "is", "reborn.", "from", "the", "shadow", "to", "the",
			"light", "moving", "through", "the", "time", "it's", "a", "cycle", "that", "repeats",
			"seeing", "all", "from", "infant", "eyes", "moving", "all", "through", "me", "it's",
			"a", "cycle", "that", "repeats", "where", "do", "we", "go", "you", "ask",
			"in", "simple", "question", "let", "me", "show", "you", "give", "me", "your",
			"hand", "and", "we", "shall", "fly", "into", "better", "days", "from", "dreams",
			"repose", "flesh", "of", "the", "ground", "deny", "kneel", "and", "grieve", "beseeching",
			"to", "no", "avail", "myth", "strikes", "our", "being", "human", "existence", "jaded",
			"by", "it's", "progress", "feeding,", "a", "manifest", "of", "the", "shadow", "below",
			"redefine", "the", "absolute", "crashing", "down", "through", "their", "eyes", "one", "can",
			"see", "fear", "sustained", "weakened", "by", "their", "minds", "caught", "in", "disbelief",
			"don't", "deny", "all", "shall", "see", "vacant", "souls", "shaping", "commonality", "in",
			"this", "moment", "we", "cannot", "deny", "what", "we", "are", "form", "a",
			"memory", "on", "turning", "wings", "and", "carve", "a", "way", "to", "ascension",
			"pray,", "withdrawn", "you", "just", "weep", "alone", "wait", "for", "a", "chance",
			"to", "grow", "culture", "folds", "the", "falling", "of", "love", "the", "darkness",
			"above", "repose", "within", "our", "numbers", "walking", "with", "a", "taste", "transposed",
			"image", "of", "being", "lost", "beyond", "the", "frame,", "end", "of", "days",
			"this", "time", "all", "memories", "surpass", "embrace", "in", "time", "all", "sense",
			"of", "life", "decays", "descend", "again", "all", "shall", "return", "to", "the",
			"sand", "through", "forever", "we", "cycle", "again", "re-ignite", "savior", "ablaze", "never",
			"ending", "return", "to", "me", "believe", "in", "memories", "to", "resurrect", "me",
			"besieged", "by", "falling", "dreams", "hold", "them", "tightly", "adorn", "my", "wings",
			"to", "thee,", "and", "use", "them", "nightly", "i'm", "neither", "angel", "nor",
			"a", "demon", "spawn", "though", "some", "will", "call", "me", "god", "gravity",
			"is", "just", "a", "law", "i've", "wrought", "hear", "temptation", "take", "the",
			"sky", "for", "all", "to", "see", "sheer", "elation", "to", "write", "in",
			"history", "i'm", "neither", "angel", "nor", "a", "demon", "spawn", "though", "some",
			"will", "call", "me", "god", "gravity", "is", "just", "a", "feeble", "plot",
			"when", "i", "said", "i'd", "never", "kneel", "again", "what", "i", "really",
			"meant", "was", "(fucking)", "pull", "the", "pin", "because", "time", "is", "spent",
			"unite", "with", "ravens", "on", "their", "shadow", "flights", "as", "my", "nocturnal",
			"right", "gravity", "is", "just", "a", "mortal's", "vice", "when", "i", "said",
			"i'd", "never", "feel", "or", "see", "love", "and", "sight", "are", "last",
			"resorts", "for", "me", "strip", "away", "all", "the", "access", "components", "unveil",
			"a", "picture", "one", "sought", "to", "hide", "personalities", "are", "like", "fiction",
			"the", "derivative", "truth", "but", "with", "no", "substance", "violence", "and", "hate",
			"nourishment,", "territory", "and", "mate", "we", "are", "the", "product", "of", "some",
			"experiment", "while", "most", "live", "in", "ignorance", "some", "cant", "except", "the",
			"last", "thing", "we", "see", "is", "obsession,", "depth", "of", "insanity", "follow",
			"the", "source", "into", "the", "ground", "feeling", "all", "vibration", "flow", "inside",
			"of", "you", "we", "create", "the", "sound", "like", "our", "fathers", "long",
			"before", "us", "we've", "forgotten", "how", "sun", "down", "swiftly", "a", "less",
			"passive", "creature", "emerges", "mark", "the", "august", "steps", "we'll", "shine", "the",
			"way", "still", "the", "path", "remains", "the", "same", "some", "may", "find",
			"their", "own", "way", "forever", "like", "me", "thirst", "for", "a", "pool",
			"of", "consistency", "catch", "a", "bug", "for", "knowledge", "and", "the", "structure",
			"comes", "down", "a", "counter", "intuitive", "attack", "speak", "no", "evil", "and",
			"watch", "it", "flourish", "in", "a", "current", "state", "of", "madness", "lost",
			"the", "way", "feel", "the", "world", "below", "me", "painlessly", "ascend", "torn",
			"away", "dissolving", "the", "life", "i", "know", "grasp", "the", "light", "feel",
			"the", "glow", "enfolding", "exaltation", "isolate", "the", "answers", "are", "truths", "from",
			"lies", "loss", "of", "faith", "the", "path", "unravels", "before", "me", "unholy",
			"day", "i'm", "letting", "go", "through", "time", "these", "cries", "distort", "the",
			"view", "hopeless", "misdirection", "we", "all", "defy", "the", "chance", "to", "know",
			"this", "world", "is", "not", "the", "one", "i", "knew", "holding", "tight",
			"to", "our", "beliefs", "awake", "to", "what", "we", "have", "become", "void",
			"the", "past,", "create", "the", "new", "separate", "the", "few", "because", "i",
			"hold", "ability", "to", "lead", "astray", "now", "living", "through", "every", "day",
			"on", "the", "path", "between", "the", "frozen", "lines", "now", "no", "one",
			"ever", "will", "know", "about", "this", "experience", "will", "someone", "for", "once",
			"step", "back", "and", "gaze", "upon", "the", "world", "through", "my", "eyes",
			"drawn", "behind", "the", "point", "of", "view", "seal", "us", "from", "the",
			"truth", "on", "our", "own", "the", "fear", "of", "life", "decays", "time",
			"alone", "reveals", "our", "fatal", "aspect", "of", "arrogance", "in", "life", "we're",
			"not", "the", "only", "ones", "free", "from", "the", "walls", "i'm", "alive",
			"lost", "the", "way", "the", "path", "unravels", "before", "me", "unholy", "day",
			"i'm", "letting", "go", "contest", "to", "modern", "theory", "incapable", "of", "any",
			"progress", "analyzed,", "developed", "imitating", "consciousness", "at", "least", "what", "it", "seems",
			"to", "be", "uniform", "and", "unrevealing", "the", "machine", "cut", "off", "the",
			"silent", "space", "cut", "off", "the", "silence", "i'm", "aware", "of", "ancient",
			"myths", "that", "signal", "to", "our", "coming", "time", "waits", "for", "none",
			"the", "dying", "age", "of", "these", "feeble", "beings", "is", "closing", "what",
			"should", "we", "do", "with", "their", "lives", "forgive", "them", "for", "trespass",
			"spare", "them", "termination", "or", "let", "them", "die", "touched", "by", "the",
			"hand", "of", "the", "creator", "tantalizing", "the", "will", "of", "the", "maker",
			"subject", "to", "a", "wide", "array", "of", "thoughts", "emotions", "held", "by",
			"this", "rationality", "worlds", "collide", "no", "peace", "of", "mind", "analyzed,", "developed",
			"imitating", "consciousness", "at", "least", "what", "it", "seems", "to", "be", "consciously",
			"evolving", "conceived", "in", "machines", "separated", "by", "perceptions", "of", "these", "dreams",
			"elevate", "this", "warped", "sense", "of", "reality", "i", "can't", "understand", "myself",
			"touched", "by", "the", "hand", "of", "the", "creator", "tantalizing", "the", "will",
			"of", "the", "maker", "subject", "to", "a", "wide", "variety", "of", "thoughts",
			"emotions", "held", "by", "this", "reality", "the", "edge", "of", "existence", "holds",
			"what", "we", "all", "have", "feared", "we", "curse", "your", "creation", "die",
			"by", "our", "hands", "in", "vain", "no", "peace", "of", "mind", "uniform",
			"and", "unrevealing", "the", "machine", "freedom", "beyond", "our", "control", "partition,", "they",
			"break", "out", "in", "endless", "stride", "i'm", "on", "the", "floor", "in",
			"travail", "faithful", "days", "fall", "memories", "hold", "free", "my", "soul", "seeking",
			"within", "the", "curtain", "call", "fleeing", "our", "fate", "every", "step", "now",
			"recalled", "down", "the", "drive", "staying", "so", "close", "retraction", "weighs", "my",
			"soul", "we", "are", "thunder", "we", "are", "all", "the", "space", "in",
			"tow", "now", "again", "this", "happening", "my", "handle", "is", "honest", "calculation",
			"free", "of", "the", "pain", "seeking", "the", "glow", "we", "both", "need",
			"it", "so", "time", "will", "give", "way", "time", "will", "formulate", "seeking",
			"within", "the", "curtain", "call", "fleeing", "our", "fate", "every", "step", "evolved",
			"don't", "deny", "staying", "so", "close", "creation", "is", "our", "goal", "discretion,",
			"the", "only", "thing", "that", "made", "me", "incomplete", "cast", "the", "sail,",
			"just", "to", "spin", "this", "fate", "cross", "the", "empty", "sect", "in",
			"flight", "pleasant", "memories", "redefine", "all", "that's", "left", "the", "sound", "it",
			"makes", "me", "scream", "i", "can", "hear", "your", "voice", "at", "night",
			"(your", "light", "lost", "in", "a", "waking", "dream", "within)", "freedom", "is",
			"not", "of", "control", "endless", "the", "chase,", "pushing", "through", "i'm", "so",
			"engulfed", "falling", "to", "strain,", "but", "i", "still", "persist", "i'd", "like",
			"to", "paint", "this", "tapestry", "with", "our", "blood", "to", "represent", "the",
			"symmetry", "finding", "a", "sickened", "result", "of", "possibility", "refuse", "the", "violent",
			"source", "and", "pain", "that", "made", "you", "left", "to", "deny", "that",
			"it", "will", "change", "with", "no", "solitude", "let", "us", "take", "this",
			"train", "leaving", "the", "form,", "stretching", "far", "beyond", "what", "i", "can",
			"see", "chasing", "the", "race", "left", "to", "complete", "my", "revelation", "reaction",
			"creates", "the", "fall", "realize", "these", "are", "broken", "words", "shattered", "thoughts",
			"amend", "see", "beyond", "the", "only", "present", "road", "just", "let", "go",
			"counsel", "to", "ascend", "see", "beyond", "the", "only", "present", "hold", "he",
			"only", "present", "hold", "let", "go", "cannot", "comprehend", "leave", "it", "all",
			"to", "find", "a", "moment's", "love", "i", "am", "working", "to", "be",
			"complete", "no", "more", "adversity", "growing", "consciously", "my", "revelation", "reaction", "is",
			"not", "the", "call", "rely", "on", "my", "new", "self", "rising", "on",
			"my", "own", "sage", "advice,", "embrace", "wisdom", "hang", "the", "past", "take",
			"the", "helm", "fashion", "a", "new", "future", "to", "live", "in", "your",
			"flame", "i", "see", "regret", "i've", "awakened", "to", "feel", "a", "piece",
			"of", "distant", "harmony", "how", "could", "i", "not", "see", "possibilities", "and",
			"unlimited", "passion", "hello", "luminescent", "being", "walking", "outside", "of", "my", "last",
			"identity", "celebrate", "for", "in", "the", "end", "we'll", "meet", "inequality", "i",
			"see", "light", "i", "see", "light", "in", "your", "eyes", "as", "we",
			"grow", "with", "rusty", "nails", "in", "the", "coffin", "among", "potential", "of",
			"diamonds", "and", "pearls.", "this", "sea", "of", "blood", "fills", "the", "crevice",
			"between", "our", "lifeless", "body", "and", "the", "whispers", "for", "which", "we",
			"reach.", "behold", "as", "the", "water", "floods", "the", "red.", "time", "commands",
			"of", "us", "to", "meet", "again", "in", "silence.", "awakening", "to", "a",
			"higher", "light.", "if", "we", "sever", "the", "distance", "between", "one", "another,",
			"and", "cross", "out", "the", "fear", "we", "learn,", "all", "are", "one",
			"and", "nothing", "is", "keeping", "the", "love", "in", "our", "souls", "from",
			"bursting", "infinitely.", "now", "what", "have", "we", "become?", "an", "entity", "of",
			"survival.", "rotting", "flesh", "of", "the", "fallen", "stains", "our", "ego.", "now",
			"the", "moment", "is", "at", "hand", "to", "rise", "above", "what", "was",
			"once", "so", "prevalent.", "folding", "time", "within", "the", "mortal", "boundaries", "lived",
			"upon.", "moving", "onward.", "we", "will", "never", "fade.", "fall", "into", "another",
			"dead", "end.", "will", "it", "end", "the", "same?", "lines", "are", "drawn",
			"for", "the", "rest", "of", "the", "story.", "if", "we", "sever", "the",
			"distance", "between", "one",