Decompiled source of ItemInfoDisplay v1.0.3

plugins/com.github.jkqt.ItemInfoDisplay.dll

Decompiled 2 days ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
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 HarmonyLib;
using Microsoft.CodeAnalysis;
using Peak.Afflictions;
using TMPro;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: IgnoresAccessChecksTo("Assembly-CSharp")]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("com.github.jkqt.ItemInfoDisplay")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.3.0")]
[assembly: AssemblyInformationalVersion("1.0.3+bc7771e8d93a33f4185c17f1a1e76056a63a5277")]
[assembly: AssemblyProduct("com.github.jkqt.ItemInfoDisplay")]
[assembly: AssemblyTitle("ItemInfoDisplay")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.3.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 BepInEx
{
	[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
	[Conditional("CodeGeneration")]
	internal sealed class BepInAutoPluginAttribute : Attribute
	{
		public BepInAutoPluginAttribute(string? id = null, string? name = null, string? version = null)
		{
		}
	}
}
namespace BepInEx.Preloader.Core.Patching
{
	[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
	[Conditional("CodeGeneration")]
	internal sealed class PatcherAutoPluginAttribute : Attribute
	{
		public PatcherAutoPluginAttribute(string? id = null, string? name = null, string? version = null)
		{
		}
	}
}
namespace ItemInfoDisplay
{
	[BepInPlugin("com.github.jkqt.ItemInfoDisplay", "ItemInfoDisplay", "1.0.3")]
	public class Plugin : BaseUnityPlugin
	{
		private static class ItemInfoDisplayUpdatePatch
		{
			[HarmonyPatch(typeof(CharacterItems), "Update")]
			[HarmonyPostfix]
			private static void ItemInfoDisplayUpdate(CharacterItems __instance)
			{
				try
				{
					if ((Object)(object)guiManager == (Object)null)
					{
						AddDisplayObject();
					}
					else if ((Object)(object)Character.observedCharacter.data.currentItem != (Object)null)
					{
						if (hasChanged)
						{
							hasChanged = false;
							ProcessItemGameObject();
						}
						else if (Mathf.Abs(Character.observedCharacter.data.sinceItemAttach - lastKnownSinceItemAttach) >= configForceUpdateTime.Value)
						{
							hasChanged = true;
							lastKnownSinceItemAttach = Character.observedCharacter.data.sinceItemAttach;
						}
						if (!((Component)itemInfoDisplayTextMesh).gameObject.activeSelf)
						{
							((Component)itemInfoDisplayTextMesh).gameObject.SetActive(true);
						}
					}
					else if (((Component)itemInfoDisplayTextMesh).gameObject.activeSelf)
					{
						((Component)itemInfoDisplayTextMesh).gameObject.SetActive(false);
					}
				}
				catch (Exception ex)
				{
					Log.LogError((object)(ex.Message + ex.StackTrace));
				}
			}
		}

		private static class ItemInfoDisplayEquipPatch
		{
			[HarmonyPatch(typeof(CharacterItems), "Equip")]
			[HarmonyPostfix]
			private static void ItemInfoDisplayEquip(CharacterItems __instance)
			{
				try
				{
					if (Character.observedCharacter == __instance.character)
					{
						hasChanged = true;
					}
				}
				catch (Exception ex)
				{
					Log.LogError((object)(ex.Message + ex.StackTrace));
				}
			}
		}

		private static class ItemInfoDisplayFinishCookingPatch
		{
			[HarmonyPatch(typeof(ItemCooking), "FinishCooking")]
			[HarmonyPostfix]
			private static void ItemInfoDisplayFinishCooking(ItemCooking __instance)
			{
				try
				{
					if (Character.observedCharacter == ((ItemComponent)__instance).item.holderCharacter)
					{
						hasChanged = true;
					}
				}
				catch (Exception ex)
				{
					Log.LogError((object)(ex.Message + ex.StackTrace));
				}
			}
		}

		private static class ItemInfoDisplayReduceUsesRPCPatch
		{
			[HarmonyPatch(typeof(Action_ReduceUses), "ReduceUsesRPC")]
			[HarmonyPostfix]
			private static void ItemInfoDisplayReduceUsesRPC(Action_ReduceUses __instance)
			{
				try
				{
					if (Character.observedCharacter == ((ItemActionBase)__instance).character)
					{
						hasChanged = true;
					}
				}
				catch (Exception ex)
				{
					Log.LogError((object)(ex.Message + ex.StackTrace));
				}
			}
		}

		private static GUIManager guiManager;

		private static TextMeshProUGUI itemInfoDisplayTextMesh;

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

		private static float lastKnownSinceItemAttach;

		private static bool hasChanged;

		private static ConfigEntry<float> configFontSize;

		private static ConfigEntry<float> configOutlineWidth;

		private static ConfigEntry<float> configLineSpacing;

		private static ConfigEntry<float> configSizeDeltaX;

		private static ConfigEntry<float> configForceUpdateTime;

		public const string Id = "com.github.jkqt.ItemInfoDisplay";

		internal static ManualLogSource Log { get; private set; } = null;


		public static string Name => "ItemInfoDisplay";

		public static string Version => "1.0.3";

		private void Awake()
		{
			Log = ((BaseUnityPlugin)this).Logger;
			InitEffectColors(effectColors);
			lastKnownSinceItemAttach = 0f;
			hasChanged = true;
			configFontSize = ((BaseUnityPlugin)this).Config.Bind<float>("ItemInfoDisplay", "Font Size", 20f, "Customize the Font Size for description text.");
			configOutlineWidth = ((BaseUnityPlugin)this).Config.Bind<float>("ItemInfoDisplay", "Outline Width", 0.08f, "Customize the Outline Width for item description text.");
			configLineSpacing = ((BaseUnityPlugin)this).Config.Bind<float>("ItemInfoDisplay", "Line Spacing", -35f, "Customize the Line Spacing for item description text.");
			configSizeDeltaX = ((BaseUnityPlugin)this).Config.Bind<float>("ItemInfoDisplay", "Size Delta X", 550f, "Customize the horizontal length of the container for the mod. Increasing moves text left, decreasing moves text right.");
			configForceUpdateTime = ((BaseUnityPlugin)this).Config.Bind<float>("ItemInfoDisplay", "Force Update Time", 1f, "Customize the time in seconds until the mod forces an update for the item.");
			Harmony.CreateAndPatchAll(typeof(ItemInfoDisplayUpdatePatch), (string)null);
			Harmony.CreateAndPatchAll(typeof(ItemInfoDisplayEquipPatch), (string)null);
			Harmony.CreateAndPatchAll(typeof(ItemInfoDisplayFinishCookingPatch), (string)null);
			Harmony.CreateAndPatchAll(typeof(ItemInfoDisplayReduceUsesRPCPatch), (string)null);
			Log.LogInfo((object)("Plugin " + Name + " is loaded!"));
		}

		private static void ProcessItemGameObject()
		{
			//IL_020b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0212: Expected O, but got Unknown
			//IL_0294: Unknown result type (might be due to invalid IL or missing references)
			//IL_029b: Expected O, but got Unknown
			//IL_02de: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e5: Expected O, but got Unknown
			//IL_0322: Unknown result type (might be due to invalid IL or missing references)
			//IL_0329: Expected O, but got Unknown
			//IL_039d: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a4: Expected O, but got Unknown
			//IL_03f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f8: Expected O, but got Unknown
			//IL_049d: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a4: Expected O, but got Unknown
			//IL_04df: Unknown result type (might be due to invalid IL or missing references)
			//IL_04e6: Expected O, but got Unknown
			//IL_063c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0643: Expected O, but got Unknown
			//IL_06a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_06af: Expected O, but got Unknown
			//IL_070d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0714: Expected O, but got Unknown
			//IL_0890: Unknown result type (might be due to invalid IL or missing references)
			//IL_0897: Expected O, but got Unknown
			//IL_056a: Unknown result type (might be due to invalid IL or missing references)
			//IL_056f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a93: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a9a: Expected O, but got Unknown
			//IL_0b5d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0b64: Expected O, but got Unknown
			//IL_0cae: Unknown result type (might be due to invalid IL or missing references)
			//IL_0cb5: Expected O, but got Unknown
			//IL_0d84: Unknown result type (might be due to invalid IL or missing references)
			//IL_0d8b: Expected O, but got Unknown
			//IL_0e09: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e10: Expected O, but got Unknown
			//IL_0e7f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e86: Expected O, but got Unknown
			//IL_124c: Unknown result type (might be due to invalid IL or missing references)
			//IL_1253: Expected O, but got Unknown
			//IL_146e: Unknown result type (might be due to invalid IL or missing references)
			//IL_1475: Expected O, but got Unknown
			//IL_1677: Unknown result type (might be due to invalid IL or missing references)
			//IL_167e: Expected O, but got Unknown
			Item currentItem = Character.observedCharacter.data.currentItem;
			GameObject gameObject = ((Component)currentItem).gameObject;
			Component[] components = gameObject.GetComponents(typeof(Component));
			bool flag = false;
			string text = "";
			string text2 = "";
			string text3 = "";
			string text4 = "";
			string text5 = "";
			((TMP_Text)itemInfoDisplayTextMesh).text = "";
			text2 = ((Ascents.itemWeightModifier <= 0) ? (text2 + effectColors["Weight"] + ((float)currentItem.carryWeight * 2.5f).ToString("F1").Replace(".0", "") + " WEIGHT</color>") : (text2 + effectColors["Weight"] + ((float)(currentItem.carryWeight + Ascents.itemWeightModifier) * 2.5f).ToString("F1").Replace(".0", "") + " WEIGHT</color>"));
			if (((Object)gameObject).name.Equals("Bugle(Clone)"))
			{
				TextMeshProUGUI obj = itemInfoDisplayTextMesh;
				((TMP_Text)obj).text = ((TMP_Text)obj).text + "MAKE SOME NOISE\n";
			}
			else if (((Object)gameObject).name.Equals("Pirate Compass(Clone)"))
			{
				TextMeshProUGUI obj2 = itemInfoDisplayTextMesh;
				((TMP_Text)obj2).text = ((TMP_Text)obj2).text + effectColors["Injury"] + "POINTS</color> TO THE NEAREST LUGGAGE\n";
			}
			else if (((Object)gameObject).name.Equals("Compass(Clone)"))
			{
				TextMeshProUGUI obj3 = itemInfoDisplayTextMesh;
				((TMP_Text)obj3).text = ((TMP_Text)obj3).text + effectColors["Injury"] + "POINTS</color> NORTH TO THE PEAK\n";
			}
			else if (((Object)gameObject).name.Equals("Shell Big(Clone)"))
			{
				TextMeshProUGUI obj4 = itemInfoDisplayTextMesh;
				((TMP_Text)obj4).text = ((TMP_Text)obj4).text + "TRY " + effectColors["Hunger"] + "THROWING</color> AT A COCONUT\n";
			}
			TextMeshProUGUI val9;
			for (int i = 0; i < components.Length; i++)
			{
				if (((object)components[i]).GetType() == typeof(ItemUseFeedback))
				{
					ItemUseFeedback val = (ItemUseFeedback)components[i];
					if (val.useAnimation.Equals("Eat") || val.useAnimation.Equals("Drink") || val.useAnimation.Equals("Heal"))
					{
						flag = true;
					}
				}
				else if (((object)components[i]).GetType() == typeof(Action_Consume))
				{
					flag = true;
				}
				else if (((object)components[i]).GetType() == typeof(Action_RestoreHunger))
				{
					Action_RestoreHunger val2 = (Action_RestoreHunger)components[i];
					text += ProcessEffect(val2.restorationAmount * -1f, "Hunger");
				}
				else if (((object)components[i]).GetType() == typeof(Action_GiveExtraStamina))
				{
					Action_GiveExtraStamina val3 = (Action_GiveExtraStamina)components[i];
					text += ProcessEffect(val3.amount, "Extra Stamina");
				}
				else if (((object)components[i]).GetType() == typeof(Action_InflictPoison))
				{
					Action_InflictPoison val4 = (Action_InflictPoison)components[i];
					text = text + "AFTER " + val4.delay + "s, " + ProcessEffectOverTime(val4.poisonPerSecond, 1f, val4.inflictionTime, "Poison");
				}
				else if (((object)components[i]).GetType() == typeof(Action_ModifyStatus))
				{
					Action_ModifyStatus val5 = (Action_ModifyStatus)components[i];
					text += ProcessEffect(val5.changeAmount, ((object)(STATUSTYPE)(ref val5.statusType)).ToString());
				}
				else if (((object)components[i]).GetType() == typeof(Action_ApplyMassAffliction))
				{
					Action_ApplyMassAffliction val6 = (Action_ApplyMassAffliction)components[i];
					text5 += "<#CCCCCC>NEARBY PLAYERS WILL RECEIVE:</color>\n";
					text5 += ProcessAffliction(((Action_ApplyAffliction)val6).affliction);
					if (((Action_ApplyAffliction)val6).extraAfflictions.Length == 0)
					{
						continue;
					}
					for (int j = 0; j < ((Action_ApplyAffliction)val6).extraAfflictions.Length; j++)
					{
						if (text5.EndsWith('\n'))
						{
							text5 = text5.Remove(text5.Length - 1);
						}
						text5 = text5 + ",\n" + ProcessAffliction(((Action_ApplyAffliction)val6).extraAfflictions[j]);
					}
				}
				else if (((object)components[i]).GetType() == typeof(Action_ApplyAffliction))
				{
					Action_ApplyAffliction val7 = (Action_ApplyAffliction)components[i];
					text5 += ProcessAffliction(val7.affliction);
				}
				else if (((object)components[i]).GetType() == typeof(Action_ClearAllStatus))
				{
					Action_ClearAllStatus val8 = (Action_ClearAllStatus)components[i];
					TextMeshProUGUI obj5 = itemInfoDisplayTextMesh;
					((TMP_Text)obj5).text = ((TMP_Text)obj5).text + effectColors["ItemInfoDisplayPositive"] + "CLEAR ALL STATUS</color>";
					if (val8.excludeCurse)
					{
						TextMeshProUGUI obj6 = itemInfoDisplayTextMesh;
						((TMP_Text)obj6).text = ((TMP_Text)obj6).text + " EXCEPT " + effectColors["Curse"] + "CURSE</color>";
					}
					if (val8.otherExclusions.Count > 0)
					{
						foreach (STATUSTYPE otherExclusion in val8.otherExclusions)
						{
							STATUSTYPE current = otherExclusion;
							val9 = itemInfoDisplayTextMesh;
							((TMP_Text)val9).text = ((TMP_Text)val9).text + ", " + effectColors[((object)(STATUSTYPE)(ref current)).ToString()] + ((object)(STATUSTYPE)(ref current)).ToString().ToUpper() + "</color>";
						}
					}
					((TMP_Text)itemInfoDisplayTextMesh).text = ((TMP_Text)itemInfoDisplayTextMesh).text.Replace(", <#E13542>CRAB</color>", "") + "\n";
				}
				else if (((object)components[i]).GetType() == typeof(Action_ConsumeAndSpawn))
				{
					Action_ConsumeAndSpawn val10 = (Action_ConsumeAndSpawn)components[i];
					if (((object)val10.itemToSpawn).ToString().Contains("Peel"))
					{
						TextMeshProUGUI obj7 = itemInfoDisplayTextMesh;
						((TMP_Text)obj7).text = ((TMP_Text)obj7).text + "<#CCCCCC>GAIN A PEEL WHEN EATEN</color>\n";
					}
				}
				else if (((object)components[i]).GetType() == typeof(Action_ReduceUses))
				{
					OptionableIntItemData val11 = (OptionableIntItemData)currentItem.data.data[(DataEntryKey)2];
					if (val11.HasData && val11.Value > 1)
					{
						text3 = text3 + "   " + val11.Value + " USES";
					}
				}
				else if (((object)components[i]).GetType() == typeof(Lantern))
				{
					Lantern val12 = (Lantern)components[i];
					text5 += "<#CCCCCC>WHEN LIT, NEARBY PLAYERS RECEIVE:</color>\n";
					if (((Object)gameObject).name.Equals("Lantern_Faerie(Clone)"))
					{
						StatusField component = ((Component)gameObject.transform.Find("FaerieLantern/Light/Heat")).GetComponent<StatusField>();
						text5 += ProcessEffectOverTime(component.statusAmountPerSecond, 1f, val12.startingFuel, ((object)(STATUSTYPE)(ref component.statusType)).ToString());
						foreach (StatusFieldStatus additionalStatus in component.additionalStatuses)
						{
							if (text5.EndsWith('\n'))
							{
								text5 = text5.Remove(text5.Length - 1);
							}
							text5 = text5 + ",\n" + ProcessEffectOverTime(additionalStatus.statusAmountPerSecond, 1f, val12.startingFuel, ((object)(STATUSTYPE)(ref additionalStatus.statusType)).ToString());
						}
					}
					else if (((Object)gameObject).name.Equals("Lantern(Clone)"))
					{
						StatusField component2 = ((Component)gameObject.transform.Find("GasLantern/Light/Heat")).GetComponent<StatusField>();
						text5 += ProcessEffectOverTime(component2.statusAmountPerSecond, 1f, val12.startingFuel, ((object)(STATUSTYPE)(ref component2.statusType)).ToString());
					}
				}
				else if (((object)components[i]).GetType() == typeof(Action_RaycastDart))
				{
					Action_RaycastDart val13 = (Action_RaycastDart)components[i];
					flag = true;
					text5 += "<#CCCCCC>SHOOT A DART THAT WILL APPLY:</color>\n";
					for (int k = 0; k < val13.afflictionsOnHit.Length; k++)
					{
						text5 += ProcessAffliction(val13.afflictionsOnHit[k]);
						if (text5.EndsWith('\n'))
						{
							text5 = text5.Remove(text5.Length - 1);
						}
						text5 += ",\n";
					}
					if (text5.EndsWith('\n'))
					{
						text5 = text5.Remove(text5.Length - 2);
					}
					text5 += "\n";
				}
				else if (((object)components[i]).GetType() == typeof(MagicBugle))
				{
					TextMeshProUGUI obj8 = itemInfoDisplayTextMesh;
					((TMP_Text)obj8).text = ((TMP_Text)obj8).text + "WHILE PLAYING THE BUGLE,";
				}
				else if (((object)components[i]).GetType() == typeof(ClimbingSpikeComponent))
				{
					TextMeshProUGUI obj9 = itemInfoDisplayTextMesh;
					((TMP_Text)obj9).text = ((TMP_Text)obj9).text + "PLACE A PITON YOU CAN GRAB\nTO " + effectColors["Extra Stamina"] + "REGENERATE STAMINA</color>\n";
				}
				else if (((object)components[i]).GetType() == typeof(Action_Flare))
				{
					TextMeshProUGUI obj10 = itemInfoDisplayTextMesh;
					((TMP_Text)obj10).text = ((TMP_Text)obj10).text + "CAN BE LIT\n";
				}
				else if (((object)components[i]).GetType() == typeof(Backpack))
				{
					TextMeshProUGUI obj11 = itemInfoDisplayTextMesh;
					((TMP_Text)obj11).text = ((TMP_Text)obj11).text + "DROP TO PLACE ITEMS INSIDE\n";
				}
				else if (((object)components[i]).GetType() == typeof(BananaPeel))
				{
					TextMeshProUGUI obj12 = itemInfoDisplayTextMesh;
					((TMP_Text)obj12).text = ((TMP_Text)obj12).text + effectColors["Hunger"] + "SLIP</color> WHEN STEPPED ON\n";
				}
				else if (((object)components[i]).GetType() == typeof(Constructable))
				{
					Constructable val14 = (Constructable)components[i];
					if (((Object)val14.constructedPrefab).name.Equals("PortableStovetop_Placed"))
					{
						val9 = itemInfoDisplayTextMesh;
						((TMP_Text)val9).text = ((TMP_Text)val9).text + "PLACE A " + effectColors["Injury"] + "COOKING</color> STOVE FOR " + val14.constructedPrefab.GetComponent<Campfire>().burnsFor + "s\n";
					}
					else
					{
						TextMeshProUGUI obj13 = itemInfoDisplayTextMesh;
						((TMP_Text)obj13).text = ((TMP_Text)obj13).text + "CAN BE PLACED\n";
					}
				}
				else if (((object)components[i]).GetType() == typeof(RopeSpool))
				{
					RopeSpool val15 = (RopeSpool)components[i];
					if (val15.isAntiRope)
					{
						TextMeshProUGUI obj14 = itemInfoDisplayTextMesh;
						((TMP_Text)obj14).text = ((TMP_Text)obj14).text + "PLACE A ROPE THAT FLOATS UP\n";
					}
					else
					{
						TextMeshProUGUI obj15 = itemInfoDisplayTextMesh;
						((TMP_Text)obj15).text = ((TMP_Text)obj15).text + "PLACE A ROPE\n";
					}
					val9 = itemInfoDisplayTextMesh;
					((TMP_Text)val9).text = ((TMP_Text)val9).text + "FROM " + (val15.minSegments / 4f).ToString("F2").Replace(".0", "") + "m LONG, UP TO " + ((float)Rope.MaxSegments / 4f).ToString("F1").Replace(".0", "") + "m LONG\n";
					if (configForceUpdateTime.Value <= 1f)
					{
						text3 = text3 + "   " + (val15.RopeFuel / 4f).ToString("F2").Replace(".00", "") + "m LEFT";
					}
				}
				else if (((object)components[i]).GetType() == typeof(RopeShooter))
				{
					RopeShooter val16 = (RopeShooter)components[i];
					TextMeshProUGUI obj16 = itemInfoDisplayTextMesh;
					((TMP_Text)obj16).text = ((TMP_Text)obj16).text + "SHOOT A ROPE ANCHOR WHICH PLACES\nA ROPE THAT ";
					if (((Object)val16.ropeAnchorWithRopePref).name.Equals("RopeAnchorForRopeShooterAnti"))
					{
						TextMeshProUGUI obj17 = itemInfoDisplayTextMesh;
						((TMP_Text)obj17).text = ((TMP_Text)obj17).text + "FLOATS UP ";
					}
					else
					{
						TextMeshProUGUI obj18 = itemInfoDisplayTextMesh;
						((TMP_Text)obj18).text = ((TMP_Text)obj18).text + "DROPS DOWN ";
					}
					TextMeshProUGUI obj19 = itemInfoDisplayTextMesh;
					((TMP_Text)obj19).text = ((TMP_Text)obj19).text + (val16.maxLength / 4f).ToString("F1").Replace(".0", "") + "m\n";
				}
				else if (((object)components[i]).GetType() == typeof(Antigrav))
				{
					Antigrav val17 = (Antigrav)components[i];
					if (val17.intensity != 0f)
					{
						text5 = text5 + effectColors["Injury"] + "WARNING:</color> <#CCCCCC>FLIES AWAY IF DROPPED</color>\n";
					}
				}
				else if (((object)components[i]).GetType() == typeof(Action_Balloon))
				{
					text5 += "CAN ATTACH TO CHARACTER\n";
				}
				else if (((object)components[i]).GetType() == typeof(VineShooter))
				{
					VineShooter val18 = (VineShooter)components[i];
					TextMeshProUGUI obj20 = itemInfoDisplayTextMesh;
					((TMP_Text)obj20).text = ((TMP_Text)obj20).text + "SHOOT A CHAIN THAT CONNECTS FROM\nYOUR POSITION TO WHERE YOU SHOOT\nUP TO " + (val18.maxLength / 1.6666666f).ToString("F1").Replace(".0", "") + "m AWAY\n";
				}
				else if (((object)components[i]).GetType() == typeof(ShelfShroom))
				{
					ShelfShroom val19 = (ShelfShroom)components[i];
					if (((Object)val19.instantiateOnBreak).name.Equals("HealingPuffShroomSpawn"))
					{
						GameObject gameObject2 = ((Component)val19.instantiateOnBreak.transform.Find("VFX_SporeHealingExplo")).gameObject;
						AOE component3 = gameObject2.GetComponent<AOE>();
						GameObject gameObject3 = ((Component)gameObject2.transform.Find("VFX_SporePoisonExplo")).gameObject;
						AOE component4 = gameObject3.GetComponent<AOE>();
						AOE[] components2 = gameObject3.GetComponents<AOE>();
						TimeEvent component5 = gameObject3.GetComponent<TimeEvent>();
						RemoveAfterSeconds component6 = gameObject3.GetComponent<RemoveAfterSeconds>();
						TextMeshProUGUI obj21 = itemInfoDisplayTextMesh;
						((TMP_Text)obj21).text = ((TMP_Text)obj21).text + effectColors["Hunger"] + "THROW</color> TO RELEASE GAS THAT WILL:\n";
						TextMeshProUGUI obj22 = itemInfoDisplayTextMesh;
						((TMP_Text)obj22).text = ((TMP_Text)obj22).text + ProcessEffect(Mathf.Round(component3.statusAmount * 0.9f * 40f) / 40f, ((object)(STATUSTYPE)(ref component3.statusType)).ToString());
						TextMeshProUGUI obj23 = itemInfoDisplayTextMesh;
						((TMP_Text)obj23).text = ((TMP_Text)obj23).text + ProcessEffectOverTime(Mathf.Round(component4.statusAmount * (1f / component5.rate) * 40f) / 40f, 1f, component6.seconds, ((object)(STATUSTYPE)(ref component4.statusType)).ToString());
						if (components2.Length > 1)
						{
							TextMeshProUGUI obj24 = itemInfoDisplayTextMesh;
							((TMP_Text)obj24).text = ((TMP_Text)obj24).text + ProcessEffectOverTime(Mathf.Round(components2[1].statusAmount * (1f / component5.rate) * 40f) / 40f, 1f, component6.seconds + 1f, ((object)(STATUSTYPE)(ref components2[1].statusType)).ToString());
						}
					}
					else if (((Object)val19.instantiateOnBreak).name.Equals("ShelfShroomSpawn"))
					{
						TextMeshProUGUI obj25 = itemInfoDisplayTextMesh;
						((TMP_Text)obj25).text = ((TMP_Text)obj25).text + effectColors["Hunger"] + "THROW</color> TO DEPLOY A PLATFORM\n";
					}
					else if (((Object)val19.instantiateOnBreak).name.Equals("BounceShroomSpawn"))
					{
						TextMeshProUGUI obj26 = itemInfoDisplayTextMesh;
						((TMP_Text)obj26).text = ((TMP_Text)obj26).text + effectColors["Hunger"] + "THROW</color> TO DEPLOY A BOUNCE PAD\n";
					}
				}
				else if (((object)components[i]).GetType() == typeof(ScoutEffigy))
				{
					TextMeshProUGUI obj27 = itemInfoDisplayTextMesh;
					((TMP_Text)obj27).text = ((TMP_Text)obj27).text + effectColors["Extra Stamina"] + "REVIVE</color> A DEAD PLAYER\n";
				}
				else if (((object)components[i]).GetType() == typeof(Action_Die))
				{
					TextMeshProUGUI obj28 = itemInfoDisplayTextMesh;
					((TMP_Text)obj28).text = ((TMP_Text)obj28).text + "YOU " + effectColors["Curse"] + "DIE</color> WHEN USED\n";
				}
				else if (((object)components[i]).GetType() == typeof(Action_SpawnGuidebookPage))
				{
					flag = true;
					TextMeshProUGUI obj29 = itemInfoDisplayTextMesh;
					((TMP_Text)obj29).text = ((TMP_Text)obj29).text + "CAN BE OPENED\n";
				}
				else if (((object)components[i]).GetType() == typeof(Action_Guidebook))
				{
					TextMeshProUGUI obj30 = itemInfoDisplayTextMesh;
					((TMP_Text)obj30).text = ((TMP_Text)obj30).text + "CAN BE READ\n";
				}
				else if (((object)components[i]).GetType() == typeof(Action_CallScoutmaster))
				{
					TextMeshProUGUI obj31 = itemInfoDisplayTextMesh;
					((TMP_Text)obj31).text = ((TMP_Text)obj31).text + effectColors["Injury"] + "BREAKS RULE 0 WHEN USED</color>\n";
				}
				else if (((object)components[i]).GetType() == typeof(Action_MoraleBoost))
				{
					Action_MoraleBoost val20 = (Action_MoraleBoost)components[i];
					if (val20.boostRadius < 0f)
					{
						val9 = itemInfoDisplayTextMesh;
						((TMP_Text)val9).text = ((TMP_Text)val9).text + effectColors["ItemInfoDisplayPositive"] + "GAIN</color> " + effectColors["Extra Stamina"] + (val20.baselineStaminaBoost * 100f).ToString("F1").Replace(".0", "") + " EXTRA STAMINA</color>\n";
					}
					else if (val20.boostRadius > 0f)
					{
						val9 = itemInfoDisplayTextMesh;
						((TMP_Text)val9).text = ((TMP_Text)val9).text + "<#CCCCCC>NEARBY PLAYERS</color>" + effectColors["ItemInfoDisplayPositive"] + " GAIN</color> " + effectColors["Extra Stamina"] + (val20.baselineStaminaBoost * 100f).ToString("F1").Replace(".0", "") + " EXTRA STAMINA</color>\n";
					}
				}
				else if (((object)components[i]).GetType() == typeof(Breakable))
				{
					TextMeshProUGUI obj32 = itemInfoDisplayTextMesh;
					((TMP_Text)obj32).text = ((TMP_Text)obj32).text + effectColors["Hunger"] + "THROW</color> TO CRACK OPEN\n";
				}
				else if (((object)components[i]).GetType() == typeof(Bonkable))
				{
					val9 = itemInfoDisplayTextMesh;
					((TMP_Text)val9).text = ((TMP_Text)val9).text + effectColors["Hunger"] + "THROW</color> AT HEAD TO " + effectColors["Injury"] + "BONK</color>\n";
				}
				else if (((object)components[i]).GetType() == typeof(MagicBean))
				{
					MagicBean val21 = (MagicBean)components[i];
					val9 = itemInfoDisplayTextMesh;
					((TMP_Text)val9).text = ((TMP_Text)val9).text + effectColors["Hunger"] + "THROW</color> TO PLANT A VINE THAT GROWS\nPERPENDICULAR TO TERRAIN UP TO\n" + (val21.plantPrefab.maxLength / 2f).ToString("F1").Replace(".0", "") + "m OR UNTIL IT HITS SOMETHING\n";
				}
				else if (((object)components[i]).GetType() == typeof(BingBong))
				{
					TextMeshProUGUI obj33 = itemInfoDisplayTextMesh;
					((TMP_Text)obj33).text = ((TMP_Text)obj33).text + "MASCOT OF BINGBONG AIRWAYS\n";
				}
				else if (((object)components[i]).GetType() == typeof(Action_Passport))
				{
					TextMeshProUGUI obj34 = itemInfoDisplayTextMesh;
					((TMP_Text)obj34).text = ((TMP_Text)obj34).text + "OPEN TO CUSTOMIZE CHARACTER\n";
				}
				else if (((object)components[i]).GetType() == typeof(Actions_Binoculars))
				{
					TextMeshProUGUI obj35 = itemInfoDisplayTextMesh;
					((TMP_Text)obj35).text = ((TMP_Text)obj35).text + "USE TO LOOK FURTHER\n";
				}
				else if (((object)components[i]).GetType() == typeof(Action_WarpToRandomPlayer))
				{
					TextMeshProUGUI obj36 = itemInfoDisplayTextMesh;
					((TMP_Text)obj36).text = ((TMP_Text)obj36).text + "WARP TO RANDOM PLAYER\n";
				}
				else if (((object)components[i]).GetType() == typeof(Parasol))
				{
					TextMeshProUGUI obj37 = itemInfoDisplayTextMesh;
					((TMP_Text)obj37).text = ((TMP_Text)obj37).text + "OPEN TO SLOW YOUR DESCENT\n";
				}
				else if (((object)components[i]).GetType() == typeof(Frisbee))
				{
					TextMeshProUGUI obj38 = itemInfoDisplayTextMesh;
					((TMP_Text)obj38).text = ((TMP_Text)obj38).text + effectColors["Hunger"] + "THROW</color> IT\n";
				}
				else if (((object)components[i]).GetType() == typeof(ItemCooking))
				{
					ItemCooking val22 = (ItemCooking)components[i];
					if (val22.wreckWhenCooked && val22.timesCookedLocal >= 1)
					{
						text4 = text4 + "\n" + effectColors["Curse"] + "BROKEN FROM COOKING</color>";
					}
					else if (val22.wreckWhenCooked)
					{
						text4 = text4 + "\n" + effectColors["Curse"] + "BREAKS IF COOKED</color>";
					}
					else if (val22.timesCookedLocal >= 12)
					{
						text4 = text4 + "   " + effectColors["Curse"] + val22.timesCookedLocal + "x COOKED\nCANNOT BE COOKED</color>";
					}
					else if (val22.timesCookedLocal == 0)
					{
						text4 = text4 + "\n" + effectColors["Extra Stamina"] + "CAN BE COOKED</color>";
					}
					else if (val22.timesCookedLocal == 1)
					{
						text4 = text4 + "   " + effectColors["Extra Stamina"] + val22.timesCookedLocal + "x COOKED</color>\n" + effectColors["Hunger"] + "CAN BE COOKED</color>";
					}
					else if (val22.timesCookedLocal == 2)
					{
						text4 = text4 + "   " + effectColors["Hunger"] + val22.timesCookedLocal + "x COOKED</color>\n" + effectColors["Injury"] + "CAN BE COOKED</color>";
					}
					else if (val22.timesCookedLocal == 3)
					{
						text4 = text4 + "   " + effectColors["Injury"] + val22.timesCookedLocal + "x COOKED</color>\n" + effectColors["Poison"] + "CAN BE COOKED</color>";
					}
					else if (val22.timesCookedLocal >= 4)
					{
						text4 = text4 + "   " + effectColors["Poison"] + val22.timesCookedLocal + "x COOKED\nCAN BE COOKED</color>";
					}
				}
			}
			if (text.Length > 0 && flag)
			{
				((TMP_Text)itemInfoDisplayTextMesh).text = text + "\n" + ((TMP_Text)itemInfoDisplayTextMesh).text;
			}
			if (text5.Length > 0)
			{
				TextMeshProUGUI obj39 = itemInfoDisplayTextMesh;
				((TMP_Text)obj39).text = ((TMP_Text)obj39).text + "\n" + text5;
			}
			val9 = itemInfoDisplayTextMesh;
			((TMP_Text)val9).text = ((TMP_Text)val9).text + "\n" + text2 + text3 + text4;
			((TMP_Text)itemInfoDisplayTextMesh).text = ((TMP_Text)itemInfoDisplayTextMesh).text.Replace("\n\n\n", "\n\n");
		}

		private static string ProcessEffect(float amount, string effect)
		{
			string text = "";
			if (amount == 0f)
			{
				return text;
			}
			if (amount > 0f)
			{
				text = ((!effect.Equals("Extra Stamina")) ? (text + effectColors["ItemInfoDisplayNegative"]) : (text + effectColors["ItemInfoDisplayPositive"]));
				text += "GAIN</color> ";
			}
			else if (amount < 0f)
			{
				text = ((!effect.Equals("Extra Stamina")) ? (text + effectColors["ItemInfoDisplayPositive"]) : (text + effectColors["ItemInfoDisplayNegative"]));
				text += "REMOVE</color> ";
			}
			return text + effectColors[effect] + (Mathf.Abs(amount) * 100f).ToString("F1").Replace(".0", "") + " " + effect.ToUpper() + "</color>\n";
		}

		private static string ProcessEffectOverTime(float amountPerSecond, float rate, float time, string effect)
		{
			string text = "";
			if (amountPerSecond == 0f || time == 0f)
			{
				return text;
			}
			if (amountPerSecond > 0f)
			{
				text = ((!effect.Equals("Extra Stamina")) ? (text + effectColors["ItemInfoDisplayNegative"]) : (text + effectColors["ItemInfoDisplayPositive"]));
				text += "GAIN</color> ";
			}
			else if (amountPerSecond < 0f)
			{
				text = ((!effect.Equals("Extra Stamina")) ? (text + effectColors["ItemInfoDisplayPositive"]) : (text + effectColors["ItemInfoDisplayNegative"]));
				text += "REMOVE</color> ";
			}
			return text + effectColors[effect] + (Mathf.Abs(amountPerSecond) * time * (1f / rate) * 100f).ToString("F1").Replace(".0", "") + " " + effect.ToUpper() + "</color> OVER " + time + "s\n";
		}

		private static string ProcessAffliction(Affliction affliction)
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Invalid comparison between Unknown and I4
			//IL_01c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c6: Invalid comparison between Unknown and I4
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Expected O, but got Unknown
			//IL_0224: Unknown result type (might be due to invalid IL or missing references)
			//IL_022b: Invalid comparison between Unknown and I4
			//IL_01c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cf: Expected O, but got Unknown
			//IL_02ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b1: Invalid comparison between Unknown and I4
			//IL_022e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0235: Expected O, but got Unknown
			//IL_0448: Unknown result type (might be due to invalid IL or missing references)
			//IL_044e: Invalid comparison between Unknown and I4
			//IL_02b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02be: Expected O, but got Unknown
			//IL_058b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0592: Invalid comparison between Unknown and I4
			//IL_0454: Unknown result type (might be due to invalid IL or missing references)
			//IL_045b: Expected O, but got Unknown
			//IL_068a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0690: Invalid comparison between Unknown and I4
			//IL_0598: Unknown result type (might be due to invalid IL or missing references)
			//IL_059f: Expected O, but got Unknown
			//IL_0777: Unknown result type (might be due to invalid IL or missing references)
			//IL_077d: Invalid comparison between Unknown and I4
			//IL_0696: Unknown result type (might be due to invalid IL or missing references)
			//IL_069d: Expected O, but got Unknown
			string text = "";
			if ((int)affliction.GetAfflictionType() == 2)
			{
				Affliction_FasterBoi val = (Affliction_FasterBoi)affliction;
				text = text + effectColors["ItemInfoDisplayPositive"] + "GAIN</color> " + (((Affliction)val).totalTime + val.climbDelay).ToString("F1").Replace(".0", "") + "s OF " + effectColors["Extra Stamina"] + Mathf.Round(val.moveSpeedMod * 100f).ToString("F1").Replace(".0", "") + "% BONUS RUN SPEED</color> OR\n" + effectColors["ItemInfoDisplayPositive"] + "GAIN</color> " + ((Affliction)val).totalTime.ToString("F1").Replace(".0", "") + "s OF " + effectColors["Extra Stamina"] + Mathf.Round(val.climbSpeedMod * 100f).ToString("F1").Replace(".0", "") + "% BONUS CLIMB SPEED</color>\nAFTERWARDS, " + effectColors["ItemInfoDisplayNegative"] + "GAIN</color> " + effectColors["Drowsy"] + (val.drowsyOnEnd * 100f).ToString("F1").Replace(".0", "") + " DROWSY</color>\n";
			}
			else if ((int)affliction.GetAfflictionType() == 8)
			{
				Affliction_ClearAllStatus val2 = (Affliction_ClearAllStatus)affliction;
				text = text + effectColors["ItemInfoDisplayPositive"] + "CLEAR ALL STATUS</color>";
				if (val2.excludeCurse)
				{
					text = text + " EXCEPT " + effectColors["Curse"] + "CURSE</color>";
				}
				text += "\n";
			}
			else if ((int)affliction.GetAfflictionType() == 10)
			{
				Affliction_AddBonusStamina val3 = (Affliction_AddBonusStamina)affliction;
				text = text + effectColors["ItemInfoDisplayPositive"] + "GAIN</color> " + effectColors["Extra Stamina"] + (val3.staminaAmount * 100f).ToString("F1").Replace(".0", "") + " EXTRA STAMINA</color>\n";
			}
			else if ((int)affliction.GetAfflictionType() == 1)
			{
				Affliction_InfiniteStamina val4 = (Affliction_InfiniteStamina)affliction;
				text = ((!(val4.climbDelay > 0f)) ? (text + effectColors["ItemInfoDisplayPositive"] + "GAIN</color> " + ((Affliction)val4).totalTime.ToString("F1").Replace(".0", "") + "s OF " + effectColors["Extra Stamina"] + "INFINITE STAMINA\n") : (text + effectColors["ItemInfoDisplayPositive"] + "GAIN</color> " + (((Affliction)val4).totalTime + val4.climbDelay).ToString("F1").Replace(".0", "") + "s OF " + effectColors["Extra Stamina"] + "INFINITE RUN STAMINA</color> OR\n" + effectColors["ItemInfoDisplayPositive"] + "GAIN</color> " + ((Affliction)val4).totalTime.ToString("F1").Replace(".0", "") + "s OF " + effectColors["Extra Stamina"] + "INFINITE CLIMB STAMINA</color>\n"));
				if (val4.drowsyAffliction != null)
				{
					text = text + "AFTERWARDS, " + ProcessAffliction(val4.drowsyAffliction);
				}
			}
			else if ((int)affliction.GetAfflictionType() == 7)
			{
				Affliction_AdjustStatus val5 = (Affliction_AdjustStatus)affliction;
				if (val5.statusAmount > 0f)
				{
					text = ((!((object)val5).Equals((object?)"Extra Stamina")) ? (text + effectColors["ItemInfoDisplayNegative"]) : (text + effectColors["ItemInfoDisplayPositive"]));
					text += "GAIN</color> ";
				}
				else
				{
					text = ((!((object)val5).Equals((object?)"Extra Stamina")) ? (text + effectColors["ItemInfoDisplayPositive"]) : (text + effectColors["ItemInfoDisplayNegative"]));
					text += "REMOVE</color> ";
				}
				text = text + effectColors[((object)(STATUSTYPE)(ref val5.statusType)).ToString()] + (Mathf.Abs(val5.statusAmount) * 100f).ToString("F1").Replace(".0", "") + " " + ((object)(STATUSTYPE)(ref val5.statusType)).ToString().ToUpper() + "</color>\n";
			}
			else if ((int)affliction.GetAfflictionType() == 11)
			{
				Affliction_AdjustDrowsyOverTime val6 = (Affliction_AdjustDrowsyOverTime)affliction;
				text = ((!(val6.statusPerSecond > 0f)) ? (text + effectColors["ItemInfoDisplayPositive"] + "REMOVE</color> ") : (text + effectColors["ItemInfoDisplayNegative"] + "GAIN</color> "));
				text = text + effectColors["Drowsy"] + (Mathf.Round(Mathf.Abs(val6.statusPerSecond) * ((Affliction)val6).totalTime * 100f * 0.4f) / 0.4f).ToString("F1").Replace(".0", "") + " DROWSY</color> OVER " + ((Affliction)val6).totalTime.ToString("F1").Replace(".0", "") + "s\n";
			}
			else if ((int)affliction.GetAfflictionType() == 5)
			{
				Affliction_AdjustColdOverTime val7 = (Affliction_AdjustColdOverTime)affliction;
				text = ((!(val7.statusPerSecond > 0f)) ? (text + effectColors["ItemInfoDisplayPositive"] + "REMOVE</color> ") : (text + effectColors["ItemInfoDisplayNegative"] + "GAIN</color> "));
				text = text + effectColors["Cold"] + (Mathf.Abs(val7.statusPerSecond) * ((Affliction)val7).totalTime * 100f).ToString("F1").Replace(".0", "") + " COLD</color> OVER " + ((Affliction)val7).totalTime.ToString("F1").Replace(".0", "") + "s\n";
			}
			else if ((int)affliction.GetAfflictionType() == 6)
			{
				text = text + effectColors["ItemInfoDisplayPositive"] + "CLEAR ALL STATUS</color>, THEN RANDOMIZE\n" + effectColors["Hunger"] + "HUNGER</color>, " + effectColors["Extra Stamina"] + "EXTRA STAMINA</color>, " + effectColors["Injury"] + "INJURY</color>,\n" + effectColors["Poison"] + "POISON</color>, " + effectColors["Cold"] + "COLD</color>, " + effectColors["Hot"] + "HEAT</color>, " + effectColors["Drowsy"] + "DROWSY</color>\n";
			}
			return text;
		}

		private static void AddDisplayObject()
		{
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Expected O, but got Unknown
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			GameObject val = GameObject.Find("GAME/GUIManager");
			guiManager = val.GetComponent<GUIManager>();
			TMP_FontAsset font = ((TMP_Text)guiManager.heroDayText).font;
			GameObject gameObject = ((Component)val.transform.Find("Canvas_HUD/Prompts/ItemPromptLayout")).gameObject;
			GameObject val2 = new GameObject("ItemInfoDisplay");
			val2.transform.SetParent(gameObject.transform);
			itemInfoDisplayTextMesh = val2.AddComponent<TextMeshProUGUI>();
			RectTransform component = val2.GetComponent<RectTransform>();
			component.sizeDelta = new Vector2(configSizeDeltaX.Value, 0f);
			((TMP_Text)itemInfoDisplayTextMesh).font = font;
			((TMP_Text)itemInfoDisplayTextMesh).fontSize = configFontSize.Value;
			((TMP_Text)itemInfoDisplayTextMesh).alignment = (TextAlignmentOptions)1025;
			((TMP_Text)itemInfoDisplayTextMesh).lineSpacing = configLineSpacing.Value;
			((TMP_Text)itemInfoDisplayTextMesh).text = "";
			((TMP_Text)itemInfoDisplayTextMesh).outlineWidth = configOutlineWidth.Value;
		}

		private static void InitEffectColors(Dictionary<string, string> dict)
		{
			dict.Add("Hunger", "<#FFBD16>");
			dict.Add("Extra Stamina", "<#BFEC1B>");
			dict.Add("Injury", "<#FF5300>");
			dict.Add("Crab", "<#E13542>");
			dict.Add("Poison", "<#A139FF>");
			dict.Add("Cold", "<#00BCFF>");
			dict.Add("Heat", "<#C80918>");
			dict.Add("Hot", "<#C80918>");
			dict.Add("Sleepy", "<#FF5CA4>");
			dict.Add("Drowsy", "<#FF5CA4>");
			dict.Add("Curse", "<#1B0043>");
			dict.Add("Weight", "<#A65A1C>");
			dict.Add("ItemInfoDisplayPositive", "<#DDFFDD>");
			dict.Add("ItemInfoDisplayNegative", "<#FFCCCC>");
		}
	}
}
namespace System.Runtime.CompilerServices
{
	[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
	internal sealed class IgnoresAccessChecksToAttribute : Attribute
	{
		public IgnoresAccessChecksToAttribute(string assemblyName)
		{
		}
	}
}