Decompiled source of ItemInfoDisplayForkedCN v1.0.2

com.github.chuxiaaaa.ItemInfoDisplayForkedCN.dll

Decompiled 11 hours 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.Bootstrap;
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.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: IgnoresAccessChecksTo("Assembly-CSharp")]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("com.github.chuxiaaaa.ItemInfoDisplayForkedCN")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.2.0")]
[assembly: AssemblyInformationalVersion("1.0.2")]
[assembly: AssemblyProduct("com.github.chuxiaaaa.ItemInfoDisplayForkedCN")]
[assembly: AssemblyTitle("ItemInfoDisplayForkedCN")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.2.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.chuxiaaaa.ItemInfoDisplayForkedCN", "ItemInfoDisplayForkedCN", "1.0.2")]
	public class Plugin : BaseUnityPlugin
	{
		private static class ItemInfoDisplayUpdatePatch
		{
			public static float total { get; set; }

			[HarmonyPatch(typeof(AOE), "Explode")]
			[HarmonyPostfix]
			public static void Explode(AOE __instance)
			{
				//IL_0037: Unknown result type (might be due to invalid IL or missing references)
				Log.LogInfo((object)string.Format("Explode:{0},{1},{2},{3}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ff"), ((Object)__instance).GetInstanceID(), __instance.statusType, __instance.statusAmount));
			}

			[HarmonyPatch(typeof(AOE), "GetFactor")]
			[HarmonyPostfix]
			public static void GetFactor(AOE __instance, float dist, float __result)
			{
				//IL_0037: Unknown result type (might be due to invalid IL or missing references)
				Log.LogInfo((object)string.Format("GetFactor:{0},{1},{2},{3},{4},{5}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ff"), ((Object)__instance).GetInstanceID(), __instance.statusType, __instance.statusAmount, dist, __result));
			}

			[HarmonyPatch(typeof(CharacterAfflictions), "AdjustStatus")]
			[HarmonyPostfix]
			public static void AdjustStatus(CharacterAfflictions __instance, STATUSTYPE statusType, float amount)
			{
				total += amount;
				Log.LogInfo((object)string.Format("AdjustStatus:{0},{1},{2},{3}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ff"), ((object)(STATUSTYPE)(ref statusType)).ToString(), amount, total));
			}

			[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 class ComponentEffectInfo
		{
			public Component Component { get; set; }

			public float Value { get; set; }

			public string EffectKey { get; set; }
		}

		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.chuxiaaaa.ItemInfoDisplayForkedCN";

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


		public static bool EasyBackpack { get; set; }

		public static string Name => "ItemInfoDisplayForkedCN";

		public static string Version => "1.0.2";

		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 string GetEffectChineseName(string effect)
		{
			return effect switch
			{
				"Hunger" => "饥饿值", 
				"Extra Stamina" => "额外体力", 
				"Spores" => "真菌感染", 
				"Injury" => "伤害", 
				"Poison" => "中毒", 
				"Cold" => "寒冷", 
				"Heat" => "烧伤", 
				"Hot" => "烧伤", 
				"Drowsy" => "困倦", 
				"Curse" => "诅咒", 
				"Thorns" => "刺伤", 
				"Shield" => "护盾", 
				_ => effect.ToUpper(), 
			};
		}

		private static ComponentEffectInfo GetComponentEffectInfo(Component component)
		{
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Expected O, but got Unknown
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Expected O, but got Unknown
			//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b9: Expected O, but got Unknown
			//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0105: Expected O, but got Unknown
			//IL_013b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0142: Expected O, but got Unknown
			//IL_015d: Unknown result type (might be due to invalid IL or missing references)
			Type type = ((object)component).GetType();
			ComponentEffectInfo componentEffectInfo = new ComponentEffectInfo
			{
				Component = component
			};
			if (type == typeof(Action_RestoreHunger))
			{
				Action_RestoreHunger val = (Action_RestoreHunger)component;
				componentEffectInfo.Value = Mathf.Abs(val.restorationAmount);
				componentEffectInfo.EffectKey = "Action_RestoreHunger_Hunger";
			}
			else if (type == typeof(Action_GiveExtraStamina))
			{
				Action_GiveExtraStamina val2 = (Action_GiveExtraStamina)component;
				componentEffectInfo.Value = Mathf.Abs(val2.amount);
				componentEffectInfo.EffectKey = "Action_GiveExtraStamina_ExtraStamina";
			}
			else if (type == typeof(Action_InflictPoison))
			{
				Action_InflictPoison val3 = (Action_InflictPoison)component;
				componentEffectInfo.Value = Mathf.Abs(val3.poisonPerSecond * val3.inflictionTime);
				componentEffectInfo.EffectKey = "Action_InflictPoison_Poison";
			}
			else if (type == typeof(Action_AddOrRemoveThorns))
			{
				Action_AddOrRemoveThorns val4 = (Action_AddOrRemoveThorns)component;
				componentEffectInfo.Value = val4.thornCount;
				componentEffectInfo.EffectKey = "Action_AddOrRemoveThorns_Thorns";
			}
			else if (type == typeof(Action_ModifyStatus))
			{
				Action_ModifyStatus val5 = (Action_ModifyStatus)component;
				componentEffectInfo.Value = Mathf.Abs(val5.changeAmount);
				componentEffectInfo.EffectKey = $"Action_ModifyStatus_{val5.statusType}";
			}
			else
			{
				componentEffectInfo.Value = 0f;
				componentEffectInfo.EffectKey = type.Name;
			}
			return componentEffectInfo;
		}

		private static void ProcessItemGameObject()
		{
			//IL_02bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c4: Expected O, but got Unknown
			//IL_035d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0364: Expected O, but got Unknown
			//IL_03a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ac: Expected O, but got Unknown
			//IL_03e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ee: Expected O, but got Unknown
			//IL_0446: Unknown result type (might be due to invalid IL or missing references)
			//IL_044d: Expected O, but got Unknown
			//IL_0565: Unknown result type (might be due to invalid IL or missing references)
			//IL_056c: Expected O, but got Unknown
			//IL_04b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_04bb: Expected O, but got Unknown
			//IL_0622: Unknown result type (might be due to invalid IL or missing references)
			//IL_0629: Expected O, but got Unknown
			//IL_0661: Unknown result type (might be due to invalid IL or missing references)
			//IL_0668: Expected O, but got Unknown
			//IL_0717: Unknown result type (might be due to invalid IL or missing references)
			//IL_071e: Expected O, but got Unknown
			//IL_07dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_07e3: Expected O, but got Unknown
			//IL_094c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0953: Expected O, but got Unknown
			//IL_0a53: Unknown result type (might be due to invalid IL or missing references)
			//IL_0a5a: Expected O, but got Unknown
			//IL_09d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_09dd: Expected O, but got Unknown
			//IL_0c53: Unknown result type (might be due to invalid IL or missing references)
			//IL_0c5a: Expected O, but got Unknown
			//IL_0877: Unknown result type (might be due to invalid IL or missing references)
			//IL_087c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e32: Unknown result type (might be due to invalid IL or missing references)
			//IL_0e39: Expected O, but got Unknown
			//IL_0f00: Unknown result type (might be due to invalid IL or missing references)
			//IL_0f07: Expected O, but got Unknown
			//IL_1061: Unknown result type (might be due to invalid IL or missing references)
			//IL_1068: Expected O, but got Unknown
			//IL_1140: Unknown result type (might be due to invalid IL or missing references)
			//IL_1147: Expected O, but got Unknown
			//IL_11c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_11d0: Expected O, but got Unknown
			//IL_1296: Unknown result type (might be due to invalid IL or missing references)
			//IL_129d: Expected O, but got Unknown
			//IL_14d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_14d8: Expected O, but got Unknown
			//IL_1702: Unknown result type (might be due to invalid IL or missing references)
			//IL_1709: Expected O, but got Unknown
			//IL_18c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_18c8: Expected O, but got Unknown
			//IL_196f: Unknown result type (might be due to invalid IL or missing references)
			//IL_1976: Expected O, but got Unknown
			//IL_1ac8: Unknown result type (might be due to invalid IL or missing references)
			//IL_1acf: Expected O, but got Unknown
			//IL_1f58: Unknown result type (might be due to invalid IL or missing references)
			//IL_1f5f: Expected O, but got Unknown
			//IL_2011: Unknown result type (might be due to invalid IL or missing references)
			//IL_2018: Expected O, but got Unknown
			//IL_201a: Unknown result type (might be due to invalid IL or missing references)
			//IL_2020: Invalid comparison between Unknown and I4
			//IL_22da: Unknown result type (might be due to invalid IL or missing references)
			//IL_22e1: Expected O, but got Unknown
			//IL_23c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_23cc: Expected O, but got Unknown
			//IL_251d: Unknown result type (might be due to invalid IL or missing references)
			//IL_2524: Expected O, but got Unknown
			Item currentItem = Character.observedCharacter.data.currentItem;
			GameObject gameObject = ((Component)currentItem).gameObject;
			Component[] components = gameObject.GetComponents(typeof(Component));
			Dictionary<Type, List<ComponentEffectInfo>> dictionary = new Dictionary<Type, List<ComponentEffectInfo>>();
			bool flag = false;
			string text = "";
			string text2 = "";
			string text3 = "";
			string text4 = "";
			string text5 = "";
			((TMP_Text)itemInfoDisplayTextMesh).text = "";
			text2 = ((((Object)currentItem).name == "Backpack(Clone)") ? (text2 + effectColors["Weight"] + "0 重量</color>") : ((Ascents.itemWeightModifier <= 0) ? (text2 + effectColors["Weight"] + ((float)currentItem.carryWeight * 2.5f).ToString("F1").Replace(".0", "") + " 重量</color>") : (text2 + effectColors["Weight"] + ((float)(currentItem.carryWeight + Ascents.itemWeightModifier) * 2.5f).ToString("F1").Replace(".0", "") + " 重量</color>")));
			if (((Object)gameObject).name.Equals("Bugle(Clone)"))
			{
				TextMeshProUGUI obj = itemInfoDisplayTextMesh;
				((TMP_Text)obj).text = ((TMP_Text)obj).text + "使用 " + effectColors["Hunger"] + "喇叭</color> 发出一些美妙的声音\n";
			}
			else if (((Object)gameObject).name.Equals("Pirate Compass(Clone)"))
			{
				TextMeshProUGUI obj2 = itemInfoDisplayTextMesh;
				((TMP_Text)obj2).text = ((TMP_Text)obj2).text + effectColors["Injury"] + "指向</color>最近的行李\n";
			}
			else if (((Object)gameObject).name.Equals("Compass(Clone)"))
			{
				TextMeshProUGUI obj3 = itemInfoDisplayTextMesh;
				((TMP_Text)obj3).text = ((TMP_Text)obj3).text + effectColors["Injury"] + "指向</color>北方的山峰\n";
			}
			else if (((Object)gameObject).name.Equals("Shell Big(Clone)"))
			{
				TextMeshProUGUI obj4 = itemInfoDisplayTextMesh;
				((TMP_Text)obj4).text = ((TMP_Text)obj4).text + effectColors["Hunger"] + "开</color>椰子的好工具\n";
			}
			bool flag2 = false;
			TextMeshProUGUI val15;
			for (int i = 0; i < components.Length; i++)
			{
				Type type = ((object)components[i]).GetType();
				Component val = components[i];
				Behaviour val2 = (Behaviour)(object)((val is Behaviour) ? val : null);
				if (val2 != null && !val2.enabled)
				{
					continue;
				}
				if (type == typeof(ItemUseFeedback))
				{
					ItemUseFeedback val3 = (ItemUseFeedback)val;
					if (val3.useAnimation.Equals("Eat") || ((Component)val3).tag == "BookOfBones" || val3.useAnimation.Equals("Drink") || val3.useAnimation.Equals("Heal"))
					{
						flag = true;
					}
				}
				else if (type == typeof(Action_Consume))
				{
					flag = true;
				}
				else if (type == typeof(Action_RestoreHunger))
				{
					Action_RestoreHunger val4 = (Action_RestoreHunger)val;
					text += ProcessEffect(val4.restorationAmount * -1f, "Hunger");
				}
				else if (type == typeof(Action_GiveExtraStamina))
				{
					Action_GiveExtraStamina val5 = (Action_GiveExtraStamina)val;
					text += ProcessEffect(val5.amount, "Extra Stamina");
				}
				else if (type == typeof(Action_InflictPoison))
				{
					Action_InflictPoison val6 = (Action_InflictPoison)val;
					text = text + val6.delay + "秒后, " + ProcessEffectOverTime(val6.poisonPerSecond, 1f, val6.inflictionTime, "Poison");
				}
				else if (type == typeof(Action_AddOrRemoveThorns))
				{
					Action_AddOrRemoveThorns val7 = (Action_AddOrRemoveThorns)val;
					text += ProcessEffect((float)val7.thornCount * 0.05f, "Thorns");
				}
				else if (type == typeof(Action_ModifyStatus))
				{
					Character val8 = Character.localCharacter;
					if (val8.data.fullyPassedOut)
					{
						val8 = MainCameraMovement.specCharacter;
					}
					Action_ModifyStatus val9 = (Action_ModifyStatus)val;
					if ((val9.ifSkeleton && val8.data.isSkeleton) || flag2)
					{
						text += ProcessEffect(val9.changeAmount, ((object)(STATUSTYPE)(ref val9.statusType)).ToString());
					}
					else if (!val9.ifSkeleton)
					{
						text += ProcessEffect(val9.changeAmount, ((object)(STATUSTYPE)(ref val9.statusType)).ToString());
					}
				}
				else if (type == typeof(Action_ApplyMassAffliction))
				{
					Action_ApplyMassAffliction val10 = (Action_ApplyMassAffliction)val;
					text5 += "<#CCCCCC>附近玩家将获得:</color>\n";
					text5 += ProcessAffliction(((Action_ApplyAffliction)val10).affliction);
					if (((Action_ApplyAffliction)val10).extraAfflictions.Length == 0)
					{
						continue;
					}
					for (int j = 0; j < ((Action_ApplyAffliction)val10).extraAfflictions.Length; j++)
					{
						if (text5.EndsWith('\n'))
						{
							text5 = text5.Remove(text5.Length - 1);
						}
						text5 = text5 + ",\n" + ProcessAffliction(((Action_ApplyAffliction)val10).extraAfflictions[j]);
					}
				}
				else if (type == typeof(Action_ApplyAffliction))
				{
					Action_ApplyAffliction val11 = (Action_ApplyAffliction)val;
					text5 += ProcessAffliction(val11.affliction);
				}
				else if (type == typeof(Mandrake))
				{
					Mandrake val12 = (Mandrake)val;
					TextMeshProUGUI obj5 = itemInfoDisplayTextMesh;
					((TMP_Text)obj5).text = ((TMP_Text)obj5).text + string.Format("当你唤醒 {0} 曼德拉草</color> 后,它会给你唱晚安曲\n\n对附近 {1} 米内的玩家施加 {2}{3}</color> 效果\n\n", effectColors["ItemInfoDisplayNegative"], val12.aoe.range, effectColors[((object)(STATUSTYPE)(ref val12.aoe.statusType)).ToString()], GetEffectChineseName(((object)(STATUSTYPE)(ref val12.aoe.statusType)).ToString()));
				}
				else if (type == typeof(Action_Numb))
				{
					Action_Numb val13 = (Action_Numb)val;
					text = text + "获得 " + effectColors["ItemInfoDisplayNegative"] + "麻木</color> 效果,持续 " + val13.numbAmount.ToString("F1").Replace(".0", "") + " 秒</color>\n\n";
				}
				else if (type == typeof(Action_BecomeSkeleton))
				{
					TextMeshProUGUI obj6 = itemInfoDisplayTextMesh;
					((TMP_Text)obj6).text = ((TMP_Text)obj6).text + "使用后你将会变成 骷髅人\n\n";
					flag2 = true;
				}
				else if (type == typeof(Action_ClearAllStatus))
				{
					Action_ClearAllStatus val14 = (Action_ClearAllStatus)val;
					TextMeshProUGUI obj7 = itemInfoDisplayTextMesh;
					((TMP_Text)obj7).text = ((TMP_Text)obj7).text + effectColors["ItemInfoDisplayPositive"] + "清除所有状态</color>";
					if (val14.excludeCurse)
					{
						TextMeshProUGUI obj8 = itemInfoDisplayTextMesh;
						((TMP_Text)obj8).text = ((TMP_Text)obj8).text + " 除了 " + effectColors["Curse"] + "诅咒</color>";
					}
					if (val14.otherExclusions.Count > 0)
					{
						foreach (STATUSTYPE otherExclusion in val14.otherExclusions)
						{
							STATUSTYPE current = otherExclusion;
							val15 = itemInfoDisplayTextMesh;
							((TMP_Text)val15).text = ((TMP_Text)val15).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 (type == typeof(Action_ConsumeAndSpawn))
				{
					Action_ConsumeAndSpawn val16 = (Action_ConsumeAndSpawn)val;
					if (((object)val16.itemToSpawn).ToString().Contains("Peel"))
					{
						TextMeshProUGUI obj9 = itemInfoDisplayTextMesh;
						((TMP_Text)obj9).text = ((TMP_Text)obj9).text + "<#CCCCCC>食用后获得果皮</color>\n";
					}
				}
				else if (type == typeof(Action_ReduceUses))
				{
					if (currentItem.data.data.ContainsKey((DataEntryKey)2))
					{
						OptionableIntItemData val17 = (OptionableIntItemData)currentItem.data.data[(DataEntryKey)2];
						if (val17.HasData)
						{
							text3 = ((val17.Value <= 1) ? (text3 + "   只能使用 1 次") : (text3 + "   还可以使用" + val17.Value + " 次"));
						}
					}
				}
				else if (type == typeof(Lantern))
				{
					Lantern val18 = (Lantern)val;
					if (((Object)gameObject).name.Equals("Torch(Clone)"))
					{
						TextMeshProUGUI obj10 = itemInfoDisplayTextMesh;
						((TMP_Text)obj10).text = ((TMP_Text)obj10).text + "可以点燃\n";
					}
					else
					{
						text5 += "<#CCCCCC>点燃时,附近玩家获得:</color>\n\n";
					}
					if (((Object)gameObject).name.Equals("Lantern_Faerie(Clone)"))
					{
						StatusField component = ((Component)gameObject.transform.Find("FaerieLantern/Light/Heat")).GetComponent<StatusField>();
						text5 = text5 + "<#CCCCCC>还可以使用 " + val18.fuel.ToString("F1").Replace(".0", "") + "秒</color>\n\n";
						text5 += ProcessEffectPerSecond(component.statusAmountPerSecond, ((object)(STATUSTYPE)(ref component.statusType)).ToString());
						foreach (StatusFieldStatus additionalStatus in component.additionalStatuses)
						{
							text5 += ProcessEffectPerSecond(additionalStatus.statusAmountPerSecond, ((object)(STATUSTYPE)(ref additionalStatus.statusType)).ToString());
						}
					}
					else if (((Object)gameObject).name.Equals("Lantern(Clone)"))
					{
						Transform obj11 = gameObject.transform.Find("GasLantern/Light/Heat");
						StatusField val19 = ((obj11 != null) ? ((Component)obj11).GetComponent<StatusField>() : null);
						text5 = text5 + "<#CCCCCC>还可以使用 " + val18.fuel.ToString("F1").Replace(".0", "") + "秒</color>\n\n";
						if ((Object)(object)val19 != (Object)null)
						{
							text5 += ProcessEffectPerSecond(val19.statusAmountPerSecond, ((object)(STATUSTYPE)(ref val19.statusType)).ToString());
						}
					}
				}
				else if (type == typeof(Action_RaycastDart))
				{
					Action_RaycastDart val20 = (Action_RaycastDart)val;
					flag = true;
					text5 += "<#CCCCCC>发射飞镖,将对被命中的玩家施加以下效果:</color>\n\n";
					for (int k = 0; k < val20.afflictionsOnHit.Length; k++)
					{
						text5 += ProcessAffliction(val20.afflictionsOnHit[k]);
					}
				}
				else if (type == typeof(MagicBugle))
				{
					TextMeshProUGUI obj12 = itemInfoDisplayTextMesh;
					((TMP_Text)obj12).text = ((TMP_Text)obj12).text + "当你吹奏喇叭时,";
				}
				else if (type == typeof(ClimbingSpikeComponent))
				{
					TextMeshProUGUI obj13 = itemInfoDisplayTextMesh;
					((TMP_Text)obj13).text = ((TMP_Text)obj13).text + "放置一个可抓住的岩钉,可以在岩钉上" + effectColors["Extra Stamina"] + "恢复体力</color>\n";
				}
				else if (type == typeof(Action_Flare))
				{
					TextMeshProUGUI obj14 = itemInfoDisplayTextMesh;
					((TMP_Text)obj14).text = ((TMP_Text)obj14).text + "可以点燃\n";
				}
				else if (type == typeof(Backpack))
				{
					if (EasyBackpack)
					{
						TextMeshProUGUI obj15 = itemInfoDisplayTextMesh;
						((TMP_Text)obj15).text = ((TMP_Text)obj15).text + "按下 B 键可以打开背包,并存入物品\n";
					}
					else
					{
						TextMeshProUGUI obj16 = itemInfoDisplayTextMesh;
						((TMP_Text)obj16).text = ((TMP_Text)obj16).text + "放下背包才可以存入物品\n";
					}
				}
				else if (type == typeof(BananaPeel))
				{
					TextMeshProUGUI obj17 = itemInfoDisplayTextMesh;
					((TMP_Text)obj17).text = ((TMP_Text)obj17).text + effectColors["Hunger"] + "踩上去会滑倒</color>\n";
				}
				else if (type == typeof(Constructable))
				{
					Constructable val21 = (Constructable)val;
					if (((Object)val21.constructedPrefab).name.Equals("PortableStovetop_Placed"))
					{
						val15 = itemInfoDisplayTextMesh;
						((TMP_Text)val15).text = ((TMP_Text)val15).text + "放置一个 便携火炉 可以提供 " + effectColors["Injury"] + "烹饪</color> 功能 ,持续 " + val21.constructedPrefab.GetComponent<Campfire>().burnsFor + "秒\n";
					}
					else
					{
						TextMeshProUGUI obj18 = itemInfoDisplayTextMesh;
						((TMP_Text)obj18).text = ((TMP_Text)obj18).text + "可以放置\n";
					}
				}
				else if (type == typeof(RopeSpool))
				{
					RopeSpool val22 = (RopeSpool)val;
					if (val22.isAntiRope)
					{
						TextMeshProUGUI obj19 = itemInfoDisplayTextMesh;
						((TMP_Text)obj19).text = ((TMP_Text)obj19).text + "放置一条向上的反重力绳子\n\n";
					}
					else
					{
						TextMeshProUGUI obj20 = itemInfoDisplayTextMesh;
						((TMP_Text)obj20).text = ((TMP_Text)obj20).text + "放一条绳子\n\n";
					}
					val15 = itemInfoDisplayTextMesh;
					((TMP_Text)val15).text = ((TMP_Text)val15).text + "长度从 " + (val22.minSegments / 4f).ToString("F2").Replace(".0", "") + " 米到 " + ((float)Rope.MaxSegments / 4f).ToString("F1").Replace(".0", "") + " 米\n";
					if (configForceUpdateTime.Value <= 1f)
					{
						text3 = text3 + "   剩余 " + (val22.RopeFuel / 4f).ToString("F2").Replace(".00", "") + " 米";
					}
				}
				else if (type == typeof(RopeShooter))
				{
					RopeShooter val23 = (RopeShooter)val;
					TextMeshProUGUI obj21 = itemInfoDisplayTextMesh;
					((TMP_Text)obj21).text = ((TMP_Text)obj21).text + "发射一个绳索锚点,可生成\n\n一条";
					if (((Object)val23.ropeAnchorWithRopePref).name.Equals("RopeAnchorForRopeShooterAnti"))
					{
						TextMeshProUGUI obj22 = itemInfoDisplayTextMesh;
						((TMP_Text)obj22).text = ((TMP_Text)obj22).text + "向上漂浮 ";
					}
					else
					{
						TextMeshProUGUI obj23 = itemInfoDisplayTextMesh;
						((TMP_Text)obj23).text = ((TMP_Text)obj23).text + "向下垂落 ";
					}
					TextMeshProUGUI obj24 = itemInfoDisplayTextMesh;
					((TMP_Text)obj24).text = ((TMP_Text)obj24).text + (val23.maxLength / 4f).ToString("F1").Replace(".0", "") + "米的绳子\n";
				}
				else if (type == typeof(Antigrav))
				{
					Antigrav val24 = (Antigrav)val;
					if (val24.intensity != 0f)
					{
						text5 = text5 + effectColors["Injury"] + "警告:</color> <#CCCCCC>丢弃时会飞走</color>\n\n";
					}
				}
				else if (type == typeof(Action_Balloon))
				{
					text5 += "可以绑在玩家身上\n";
				}
				else if (type == typeof(VineShooter))
				{
					VineShooter val25 = (VineShooter)val;
					TextMeshProUGUI obj25 = itemInfoDisplayTextMesh;
					((TMP_Text)obj25).text = ((TMP_Text)obj25).text + "从你的位置发射一条锁链\n\n连接到射击点,最远可达\n\n" + (val25.maxLength / 1.6666666f).ToString("F1").Replace(".0", "") + " 米距离\n";
				}
				else if (type == typeof(CloudFungus))
				{
					text5 = text5 + effectColors["Hunger"] + "丢下</color>以部署一个云朵(可在空中生成)\n";
				}
				else
				{
					if (type == typeof(Action_Numb))
					{
						continue;
					}
					if (type == typeof(ShelfShroom))
					{
						ShelfShroom val26 = (ShelfShroom)val;
						if (((Object)val26.instantiateOnBreak).name.Equals("HealingPuffShroomSpawn"))
						{
							GameObject instantiateOnBreak = val26.instantiateOnBreak;
							GameObject gameObject2 = ((Component)instantiateOnBreak.transform.Find("VFX_SporeHealingExplo")).gameObject;
							if ((Object)(object)gameObject2 != (Object)null)
							{
								TextMeshProUGUI obj26 = itemInfoDisplayTextMesh;
								((TMP_Text)obj26).text = ((TMP_Text)obj26).text + effectColors["Hunger"] + "丢下</color>以释放范围效果\n\n";
								RemoveAfterSeconds component2 = gameObject2.GetComponent<RemoveAfterSeconds>();
								float globalDuration = (((Object)(object)component2 != (Object)null) ? component2.seconds : 0f);
								TextMeshProUGUI obj27 = itemInfoDisplayTextMesh;
								((TMP_Text)obj27).text = ((TMP_Text)obj27).text + ProcessGameObjectAndChildrenAOE(gameObject2, globalDuration, addTips: false);
							}
						}
					}
					else if (type == typeof(ScoutEffigy))
					{
						TextMeshProUGUI obj28 = itemInfoDisplayTextMesh;
						((TMP_Text)obj28).text = ((TMP_Text)obj28).text + effectColors["Extra Stamina"] + "复活</color>死去的玩家\n";
					}
					else if (type == typeof(Action_Die))
					{
						TextMeshProUGUI obj29 = itemInfoDisplayTextMesh;
						((TMP_Text)obj29).text = ((TMP_Text)obj29).text + "使用时你会" + effectColors["Curse"] + "死亡</color>\n";
					}
					else if (type == typeof(Action_SpawnGuidebookPage))
					{
						flag = true;
						TextMeshProUGUI obj30 = itemInfoDisplayTextMesh;
						((TMP_Text)obj30).text = ((TMP_Text)obj30).text + "可以打开\n";
					}
					else if (type == typeof(Action_Guidebook))
					{
						TextMeshProUGUI obj31 = itemInfoDisplayTextMesh;
						((TMP_Text)obj31).text = ((TMP_Text)obj31).text + "可以阅读\n";
					}
					else if (type == typeof(Action_CallScoutmaster))
					{
						TextMeshProUGUI obj32 = itemInfoDisplayTextMesh;
						((TMP_Text)obj32).text = ((TMP_Text)obj32).text + effectColors["Injury"] + "使用时违反规则0</color>\n";
					}
					else if (type == typeof(Action_MoraleBoost))
					{
						Action_MoraleBoost val27 = (Action_MoraleBoost)val;
						if (val27.boostRadius < 0f)
						{
							val15 = itemInfoDisplayTextMesh;
							((TMP_Text)val15).text = ((TMP_Text)val15).text + effectColors["ItemInfoDisplayPositive"] + "获得</color> " + effectColors["Extra Stamina"] + (val27.baselineStaminaBoost * 100f).ToString("F1").Replace(".0", "") + " 额外体力</color>\n";
						}
						else if (val27.boostRadius > 0f)
						{
							val15 = itemInfoDisplayTextMesh;
							((TMP_Text)val15).text = ((TMP_Text)val15).text + "<#CCCCCC>附近玩家</color>" + effectColors["ItemInfoDisplayPositive"] + " 获得</color> " + effectColors["Extra Stamina"] + (val27.baselineStaminaBoost * 100f).ToString("F1").Replace(".0", "") + " 额外体力</color>\n";
						}
					}
					else if (type == typeof(Breakable))
					{
						TextMeshProUGUI obj33 = itemInfoDisplayTextMesh;
						((TMP_Text)obj33).text = ((TMP_Text)obj33).text + effectColors["Hunger"] + " 丢出去</color>将它砸开\n";
					}
					else if (type == typeof(Bonkable))
					{
						val15 = itemInfoDisplayTextMesh;
						((TMP_Text)val15).text = ((TMP_Text)val15).text + effectColors["Hunger"] + " 瞄准队友的脑瓜</color> " + effectColors["Injury"] + "将他砸晕\n";
					}
					else if (type == typeof(MagicBean))
					{
						MagicBean val28 = (MagicBean)val;
						val15 = itemInfoDisplayTextMesh;
						((TMP_Text)val15).text = ((TMP_Text)val15).text + effectColors["Hunger"] + "丢下</color>会种下藤蔓,\n藤蔓会垂直于地形生长,最长可达 " + (val28.plantPrefab.maxLength / 2f).ToString("F1").Replace(".0", "") + " 米,或直到碰到障碍物\n";
					}
					else if (type == typeof(BingBong))
					{
						TextMeshProUGUI obj34 = itemInfoDisplayTextMesh;
						((TMP_Text)obj34).text = ((TMP_Text)obj34).text + "航空公司的吉祥物:" + effectColors["Extra Stamina"] + "BingBong</color>\n";
					}
					else if (type == typeof(Action_Passport))
					{
						TextMeshProUGUI obj35 = itemInfoDisplayTextMesh;
						((TMP_Text)obj35).text = ((TMP_Text)obj35).text + "使用 " + effectColors["Hunger"] + "护照</color> 可以自定义外观\n";
					}
					else if (type == typeof(Actions_Binoculars))
					{
						TextMeshProUGUI obj36 = itemInfoDisplayTextMesh;
						((TMP_Text)obj36).text = ((TMP_Text)obj36).text + "使用 " + effectColors["Hunger"] + "望远镜</color> 观察远处的物体\n";
					}
					else if (type == typeof(Action_WarpToRandomPlayer))
					{
						TextMeshProUGUI obj37 = itemInfoDisplayTextMesh;
						((TMP_Text)obj37).text = ((TMP_Text)obj37).text + "传送到随机玩家\n";
					}
					else if (type == typeof(Action_WarpToBiome))
					{
						Action_WarpToBiome val29 = (Action_WarpToBiome)val;
						TextMeshProUGUI obj38 = itemInfoDisplayTextMesh;
						((TMP_Text)obj38).text = ((TMP_Text)obj38).text + "传送到" + ((object)(Segment)(ref val29.segmentToWarpTo)).ToString().ToUpper() + "\n";
					}
					else if (type == typeof(Parasol))
					{
						TextMeshProUGUI obj39 = itemInfoDisplayTextMesh;
						((TMP_Text)obj39).text = ((TMP_Text)obj39).text + "使用 " + effectColors["Hunger"] + "太阳伞</color> 防止你自由落体\n";
					}
					else if (type == typeof(RescueHook))
					{
						RescueHook val30 = (RescueHook)val;
						TextMeshProUGUI obj40 = itemInfoDisplayTextMesh;
						((TMP_Text)obj40).text = ((TMP_Text)obj40).text + "<#CCCCCC>发射一条钩爪来:</color>\n\n";
						TextMeshProUGUI obj41 = itemInfoDisplayTextMesh;
						((TMP_Text)obj41).text = ((TMP_Text)obj41).text + effectColors["ItemInfoDisplayPositive"] + "救援其他玩家</color>\n\n";
						TextMeshProUGUI obj42 = itemInfoDisplayTextMesh;
						((TMP_Text)obj42).text = ((TMP_Text)obj42).text + effectColors["ItemInfoDisplayPositive"] + "拉动自己到墙壁</color>\n\n";
						val15 = itemInfoDisplayTextMesh;
						((TMP_Text)val15).text = ((TMP_Text)val15).text + effectColors["Extra Stamina"] + "距离 " + val30.range.ToString("F1").Replace(".0", "") + "米</color>\n";
					}
					else
					{
						if (type == typeof(Frisbee))
						{
							continue;
						}
						if (type == typeof(Action_ConstructableScoutCannonScroll))
						{
							TextMeshProUGUI obj43 = itemInfoDisplayTextMesh;
							((TMP_Text)obj43).text = ((TMP_Text)obj43).text + "\n<#CCCCCC>放置后点燃引线:</color>\n\n将桶内童兵发射出去\n";
						}
						else if (type == typeof(Action_RandomMushroomEffect))
						{
							Action_RandomMushroomEffect val31 = (Action_RandomMushroomEffect)val;
							int num = -1;
							if (val31.useDebugEffect)
							{
								num = val31.debugEffect;
							}
							else if ((Object)(object)MushroomManager.instance != (Object)null)
							{
								int num2 = val31.mushroomTypeIndex % MushroomManager.instance.mushroomEffects.Length;
								num = MushroomManager.instance.mushroomEffects[num2];
							}
							int num3 = 0;
							if (!val31.useDebugEffect && (Object)(object)MushroomManager.instance != (Object)null)
							{
								int num4 = val31.mushroomTypeIndex % MushroomManager.instance.mushroomStamAmt.Length;
								num3 = MushroomManager.instance.mushroomStamAmt[num4];
							}
							TextMeshProUGUI obj44 = itemInfoDisplayTextMesh;
							((TMP_Text)obj44).text = ((TMP_Text)obj44).text + effectColors["ItemInfoDisplayPositive"] + "食用后获得随机效果:</color>\n\n";
							if (num3 > 0)
							{
								val15 = itemInfoDisplayTextMesh;
								((TMP_Text)val15).text = ((TMP_Text)val15).text + effectColors["Extra Stamina"] + "+" + ((float)num3 * 0.05f * 100f).ToString("F1").Replace(".0", "") + " 额外体力</color>\n";
							}
							if (num >= 0)
							{
								TextMeshProUGUI obj45 = itemInfoDisplayTextMesh;
								((TMP_Text)obj45).text = ((TMP_Text)obj45).text + "\n<#CCCCCC>本次效果: ";
								switch (num)
								{
								case 0:
								{
									TextMeshProUGUI obj56 = itemInfoDisplayTextMesh;
									((TMP_Text)obj56).text = ((TMP_Text)obj56).text + effectColors["Extra Stamina"] + "无限体力 4 秒</color>";
									break;
								}
								case 1:
								{
									TextMeshProUGUI obj55 = itemInfoDisplayTextMesh;
									((TMP_Text)obj55).text = ((TMP_Text)obj55).text + effectColors["Extra Stamina"] + "加速效果: +50% 奔跑速度, +150% 攀爬速度, 持续 5 秒</color>";
									break;
								}
								case 2:
								{
									TextMeshProUGUI obj54 = itemInfoDisplayTextMesh;
									((TMP_Text)obj54).text = ((TMP_Text)obj54).text + effectColors["ItemInfoDisplayPositive"] + "低重力效果, 持续 15 秒</color>";
									break;
								}
								case 3:
								{
									TextMeshProUGUI obj53 = itemInfoDisplayTextMesh;
									((TMP_Text)obj53).text = ((TMP_Text)obj53).text + effectColors["Shield"] + "无敌效果, 持续10秒</color>";
									break;
								}
								case 4:
								{
									TextMeshProUGUI obj52 = itemInfoDisplayTextMesh;
									((TMP_Text)obj52).text = ((TMP_Text)obj52).text + effectColors["ItemInfoDisplayPositive"] + "治疗: -15 饥饿值, -15 伤害, -15 中毒, 清除中毒效果</color>";
									break;
								}
								case 5:
								{
									TextMeshProUGUI obj51 = itemInfoDisplayTextMesh;
									((TMP_Text)obj51).text = ((TMP_Text)obj51).text + effectColors["Injury"] + "产生爆炸并击飞附近队友</color>";
									break;
								}
								case 6:
								{
									TextMeshProUGUI obj50 = itemInfoDisplayTextMesh;
									((TMP_Text)obj50).text = ((TMP_Text)obj50).text + effectColors["ItemInfoDisplayNegative"] + "失明效果, 持续 60 秒</color>";
									break;
								}
								case 7:
								{
									TextMeshProUGUI obj49 = itemInfoDisplayTextMesh;
									((TMP_Text)obj49).text = ((TMP_Text)obj49).text + effectColors["Injury"] + "强制晕倒 8 秒</color>";
									break;
								}
								case 8:
								{
									TextMeshProUGUI obj48 = itemInfoDisplayTextMesh;
									((TMP_Text)obj48).text = ((TMP_Text)obj48).text + effectColors["Poison"] + "+25 真菌感染</color>";
									break;
								}
								case 9:
								{
									TextMeshProUGUI obj47 = itemInfoDisplayTextMesh;
									((TMP_Text)obj47).text = ((TMP_Text)obj47).text + effectColors["ItemInfoDisplayNegative"] + "麻木效果, 持续 60 秒</color>";
									break;
								}
								default:
								{
									TextMeshProUGUI obj46 = itemInfoDisplayTextMesh;
									((TMP_Text)obj46).text = ((TMP_Text)obj46).text + effectColors["ItemInfoDisplayNegative"] + "未知效果</color>";
									break;
								}
								}
								TextMeshProUGUI obj57 = itemInfoDisplayTextMesh;
								((TMP_Text)obj57).text = ((TMP_Text)obj57).text + "</color>\n\n";
							}
							else
							{
								TextMeshProUGUI obj58 = itemInfoDisplayTextMesh;
								((TMP_Text)obj58).text = ((TMP_Text)obj58).text + "<#CCCCCC>可能效果:</color>\n";
								TextMeshProUGUI obj59 = itemInfoDisplayTextMesh;
								((TMP_Text)obj59).text = ((TMP_Text)obj59).text + effectColors["ItemInfoDisplayPositive"] + "正面: 无限体力, 加速, 低重力, 无敌, 治疗</color>\n";
								TextMeshProUGUI obj60 = itemInfoDisplayTextMesh;
								((TMP_Text)obj60).text = ((TMP_Text)obj60).text + effectColors["ItemInfoDisplayNegative"] + "负面: 爆炸, 失明, 坠落, 真菌感染, 麻木</color>\n";
							}
							TextMeshProUGUI obj61 = itemInfoDisplayTextMesh;
							((TMP_Text)obj61).text = ((TMP_Text)obj61).text + effectColors["Hunger"] + "3秒后生效</color>\n";
						}
						else if (type == typeof(Dynamite))
						{
							Dynamite val32 = (Dynamite)val;
							val15 = itemInfoDisplayTextMesh;
							((TMP_Text)val15).text = ((TMP_Text)val15).text + effectColors["Injury"] + "爆炸</color>造成最多" + effectColors["Injury"] + (val32.explosionPrefab.GetComponent<AOE>().statusAmount * 100f).ToString("F1").Replace(".0", "") + " 伤害</color>\n\n<#CCCCCC>持有时受到额外伤害</color>\n";
						}
						else if (type == typeof(Scorpion))
						{
							Scorpion val33 = (Scorpion)val;
							if ((int)((Mob)val33).mobState != 3)
							{
								TextMeshProUGUI obj62 = itemInfoDisplayTextMesh;
								((TMP_Text)obj62).text = ((TMP_Text)obj62).text + "持有时会对你造成" + effectColors["Poison"] + "伤害</color>:\n\n";
								val15 = itemInfoDisplayTextMesh;
								((TMP_Text)val15).text = ((TMP_Text)val15).text + effectColors["Heat"] + "烹饪</color>会让其" + effectColors["Curse"] + "死亡</color>\n\n";
								if (configForceUpdateTime.Value <= 1f)
								{
									float num5 = Mathf.Max(0.5f, 1f - currentItem.holderCharacter.refs.afflictions.statusSum + 0.05f) * 100f;
									val15 = itemInfoDisplayTextMesh;
									((TMP_Text)val15).text = ((TMP_Text)val15).text + "<#CCCCCC>下一次蜇伤将造成:</color> " + effectColors["Poison"] + num5.ToString("F1").Replace(".0", "") + " </color>中毒</color>持续 " + val33.totalPoisonTime.ToString("F1").Replace(".0", "") + " 秒\n\n";
									TextMeshProUGUI obj63 = itemInfoDisplayTextMesh;
									((TMP_Text)obj63).text = ((TMP_Text)obj63).text + "<#CCCCCC>(健康时伤害更高)</color>\n\n";
								}
								else
								{
									val15 = itemInfoDisplayTextMesh;
									((TMP_Text)val15).text = ((TMP_Text)val15).text + "<#CCCCCC>下一次蜇伤将造成:</color>至少 " + effectColors["Poison"] + "50 </color>中毒</color>持续 " + val33.totalPoisonTime.ToString("F1").Replace(".0", "") + " 秒\n\n";
									val15 = itemInfoDisplayTextMesh;
									((TMP_Text)val15).text = ((TMP_Text)val15).text + "最多 " + effectColors["Poison"] + "105 中毒</color>持续 " + val33.totalPoisonTime.ToString("F1").Replace(".0", "") + " 秒\n\n";
									TextMeshProUGUI obj64 = itemInfoDisplayTextMesh;
									((TMP_Text)obj64).text = ((TMP_Text)obj64).text + "<#CCCCCC>(健康时伤害更高)</color>\n\n";
								}
							}
						}
						else if (type == typeof(Action_Spawn))
						{
							Action_Spawn val34 = (Action_Spawn)val;
							if (((Object)val34.objectToSpawn).name.Equals("VFX_Sunscreen"))
							{
								AOE component3 = ((Component)val34.objectToSpawn.transform.Find("AOE")).GetComponent<AOE>();
								RemoveAfterSeconds component4 = ((Component)val34.objectToSpawn.transform.Find("AOE")).GetComponent<RemoveAfterSeconds>();
								val15 = itemInfoDisplayTextMesh;
								((TMP_Text)val15).text = ((TMP_Text)val15).text + "<#CCCCCC>喷洒持续" + component4.seconds.ToString("F1").Replace(".0", "") + "秒的雾气,施加:</color>\n" + ProcessAffliction(component3.affliction);
							}
						}
						else if (type == typeof(CactusBall))
						{
							CactusBall val35 = (CactusBall)val;
							val15 = itemInfoDisplayTextMesh;
							((TMP_Text)val15).text = ((TMP_Text)val15).text + effectColors["Thorns"] + "尖刺</color> 会附在身体上\n\n可以通过 " + effectColors["Hunger"] + "投掷</color> 扔出\n\n至少需要蓄力 " + (((StickyItemComponent)val35).throwChargeRequirement * 100f).ToString("F1").Replace(".0", "") + "%\n";
						}
						else if (type == typeof(BingBongShieldWhileHolding))
						{
							TextMeshProUGUI obj65 = itemInfoDisplayTextMesh;
							((TMP_Text)obj65).text = ((TMP_Text)obj65).text + "<#CCCCCC>持有时获得:</color>\n\n" + effectColors["Shield"] + "无敌状态</color>\n";
						}
						else if (type == typeof(CheckpointConstructable))
						{
							TextMeshProUGUI obj66 = itemInfoDisplayTextMesh;
							((TMP_Text)obj66).text = ((TMP_Text)obj66).text + "选择一处地方进行放置,为你提供一次" + effectColors["Extra Stamina"] + "复活</color>效果\n";
						}
						else if (type == typeof(ItemCooking))
						{
							text4 = "";
							ItemCooking val36 = (ItemCooking)val;
							if (val36.wreckWhenCooked && val36.timesCookedLocal >= 1)
							{
								text4 = text4 + "\n\n" + effectColors["Curse"] + "因烹饪而损坏</color>";
							}
							else if (val36.wreckWhenCooked)
							{
								text4 = text4 + "\n\n" + effectColors["Curse"] + "烹饪时会损坏</color>";
							}
							else if (val36.timesCookedLocal >= 12)
							{
								text4 = text4 + "   " + effectColors["Curse"] + val36.timesCookedLocal + "次烹饪\n\n无法再烹饪</color>";
							}
							else if (val36.timesCookedLocal == 0 && val36.canBeCooked)
							{
								text4 = text4 + "\n\n" + effectColors["Extra Stamina"] + "可以烹饪</color>";
							}
							else if (val36.timesCookedLocal == 1)
							{
								text4 = text4 + "   " + effectColors["Extra Stamina"] + val36.timesCookedLocal + "次烹饪</color>\n\n" + effectColors["Hunger"] + "可以烹饪</color>";
							}
							else if (val36.timesCookedLocal == 2)
							{
								text4 = text4 + "   " + effectColors["Hunger"] + val36.timesCookedLocal + "次烹饪</color>\n\n" + effectColors["Injury"] + "可以烹饪</color>";
							}
							else if (val36.timesCookedLocal == 3)
							{
								text4 = text4 + "   " + effectColors["Injury"] + val36.timesCookedLocal + "次烹饪</color>\n\n" + effectColors["Poison"] + "可以烹饪</color>";
							}
							else if (val36.timesCookedLocal >= 4)
							{
								text4 = text4 + "   " + effectColors["Poison"] + val36.timesCookedLocal + "次烹饪\n\n可以烹饪</color>";
							}
							if (val36.hasExplosion)
							{
								text4 = text4 + "\n\n烹饪后会" + effectColors["Injury"] + "爆炸</color>";
							}
						}
					}
				}
			}
			if (text.Length > 0 && flag)
			{
				((TMP_Text)itemInfoDisplayTextMesh).text = text + "\n" + ((TMP_Text)itemInfoDisplayTextMesh).text;
			}
			if (text5.Length > 0)
			{
				TextMeshProUGUI obj67 = itemInfoDisplayTextMesh;
				((TMP_Text)obj67).text = ((TMP_Text)obj67).text + "\n" + text5;
			}
			val15 = itemInfoDisplayTextMesh;
			((TMP_Text)val15).text = ((TMP_Text)val15).text + "\n" + text2 + text3 + text4;
			((TMP_Text)itemInfoDisplayTextMesh).text = ((TMP_Text)itemInfoDisplayTextMesh).text.Replace("\n\n\n", "\n\n");
		}

		private static string ProcessSingleGameObjectAOE(GameObject targetObject, float globalDuration = 0f, bool addTips = true)
		{
			//IL_0233: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a5: Unknown result type (might be due to invalid IL or missing references)
			string text = "";
			float x = 0.025f;
			if ((Object)(object)targetObject == (Object)null)
			{
				return text;
			}
			AOE component = targetObject.GetComponent<AOE>();
			if ((Object)(object)component == (Object)null || Mathf.Abs(component.statusAmount) == 0f)
			{
				return text;
			}
			if (!addTips)
			{
				addTips = true;
				text = text + "<#CCCCCC>范围: " + component.range.ToString("F1").Replace(".0", "") + "米</color>,持续 " + globalDuration + " 秒\n\n";
				text = text + "<#CCCCCC>效果随距离衰减 (最小 " + (component.minFactor * 100f).ToString("F0") + "%)</color>\n\n";
			}
			TimeEvent component2 = targetObject.GetComponent<TimeEvent>();
			if ((Object)(object)component2 != (Object)null && globalDuration > 0f)
			{
				x = ((!(component.statusAmount < 0f)) ? MathF.Abs(x) : (MathF.Abs(x) * -1f));
				float amountPerSecond = Mathf.Floor(component.statusAmount * (1f / component2.rate) / x) * x;
				text += ProcessEffectPerSecond(amountPerSecond, ((object)(STATUSTYPE)(ref component.statusType)).ToString());
				if (component.addtlStatus != null && component.addtlStatus.Length != 0)
				{
					STATUSTYPE[] addtlStatus = component.addtlStatus;
					for (int i = 0; i < addtlStatus.Length; i++)
					{
						STATUSTYPE val = addtlStatus[i];
						text += ProcessEffectPerSecond(amountPerSecond, ((object)(STATUSTYPE)(ref val)).ToString());
					}
				}
			}
			else
			{
				text = text + "立刻" + ProcessEffect(component.statusAmount, ((object)(STATUSTYPE)(ref component.statusType)).ToString());
				if (component.addtlStatus != null && component.addtlStatus.Length != 0)
				{
					STATUSTYPE[] addtlStatus2 = component.addtlStatus;
					for (int j = 0; j < addtlStatus2.Length; j++)
					{
						STATUSTYPE val2 = addtlStatus2[j];
						text += ProcessEffect(component.statusAmount, ((object)(STATUSTYPE)(ref val2)).ToString());
					}
				}
			}
			if (component.hasAffliction && component.affliction != null)
			{
				text += ProcessAffliction(component.affliction);
			}
			if (!text.EndsWith("\n\n"))
			{
				text += "\n\n";
			}
			return text;
		}

		private static string ProcessGameObjectAndChildrenAOE(GameObject targetObject, float globalDuration = 0f, bool addTips = true)
		{
			string text = "";
			if ((Object)(object)targetObject == (Object)null)
			{
				return text;
			}
			string text2 = ProcessSingleGameObjectAOE(targetObject, globalDuration, addTips);
			if (!string.IsNullOrEmpty(text2))
			{
				text += text2;
			}
			for (int i = 0; i < targetObject.transform.childCount; i++)
			{
				Transform child = targetObject.transform.GetChild(i);
				string text3 = ProcessGameObjectAndChildrenAOE(((Component)child).gameObject, globalDuration);
				if (!string.IsNullOrEmpty(text3))
				{
					text += text3;
				}
			}
			return text;
		}

		private static string ProcessEffect(float amount, string effect, bool newLine = true)
		{
			string text = "";
			if (amount < 0f && effect == "Poison")
			{
				text += ProcessEffect(amount, "Spores");
			}
			if (amount == 0f)
			{
				return text;
			}
			if (amount > 0f)
			{
				text = ((!effect.Equals("Extra Stamina")) ? (text + effectColors["ItemInfoDisplayNegative"]) : (text + effectColors["ItemInfoDisplayPositive"]));
				text += "获得</color> ";
			}
			else if (amount < 0f)
			{
				text = ((!effect.Equals("Extra Stamina")) ? (text + effectColors["ItemInfoDisplayPositive"]) : (text + effectColors["ItemInfoDisplayNegative"]));
				text += "移除</color> ";
			}
			return text + effectColors[effect] + (Mathf.Abs(amount) * 100f).ToString("F1").Replace(".0", "") + " " + GetEffectChineseName(effect) + "</color>" + (newLine ? "\n\n" : "");
		}

		private static string ProcessEffectPerSecond(float amountPerSecond, string effect, bool newLine = true)
		{
			string text = "";
			if (amountPerSecond < 0f && effect == "Poison")
			{
				text += ProcessEffectPerSecond(amountPerSecond, "Spores");
			}
			if (amountPerSecond == 0f)
			{
				return text;
			}
			if (amountPerSecond > 0f)
			{
				text = ((!effect.Equals("Extra Stamina")) ? (text + effectColors["ItemInfoDisplayNegative"]) : (text + effectColors["ItemInfoDisplayPositive"]));
				text += "每秒获得</color> ";
			}
			else if (amountPerSecond < 0f)
			{
				text = ((!effect.Equals("Extra Stamina")) ? (text + effectColors["ItemInfoDisplayPositive"]) : (text + effectColors["ItemInfoDisplayNegative"]));
				text += "每秒移除</color> ";
			}
			return text + effectColors[effect] + (Mathf.Abs(amountPerSecond) * 100f).ToString("F1").Replace(".0", "") + " " + GetEffectChineseName(effect) + "</color>" + (newLine ? "\n\n" : ((object)newLine));
		}

		private static string ProcessEffectOverTime(float amountPerSecond, float rate, float time, string effect, bool newLine = true)
		{
			string text = "";
			if (amountPerSecond < 0f && effect == "Poison")
			{
				text += ProcessEffectOverTime(amountPerSecond, rate, time, "Spores");
			}
			if (amountPerSecond == 0f || time == 0f)
			{
				return text;
			}
			if (amountPerSecond > 0f)
			{
				text = ((!effect.Equals("Extra Stamina")) ? (text + effectColors["ItemInfoDisplayNegative"]) : (text + effectColors["ItemInfoDisplayPositive"]));
				text += "获得</color> ";
			}
			else if (amountPerSecond < 0f)
			{
				text = ((!effect.Equals("Extra Stamina")) ? (text + effectColors["ItemInfoDisplayPositive"]) : (text + effectColors["ItemInfoDisplayNegative"]));
				text += "移除</color> ";
			}
			return text + effectColors[effect] + (Mathf.Abs(amountPerSecond) * time * (1f / rate) * 100f).ToString("F1").Replace(".0", "") + " " + GetEffectChineseName(effect) + "</color> 持续 " + time.ToString("F1").Replace(".0", "") + "秒" + (newLine ? "\n" : "");
		}

		private static string ProcessAffliction(Affliction affliction)
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Invalid comparison between Unknown and I4
			//IL_01d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01df: Invalid comparison between Unknown and I4
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			//IL_024d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0254: Invalid comparison between Unknown and I4
			//IL_01e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f0: Expected O, but got Unknown
			//IL_02dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e2: Invalid comparison between Unknown and I4
			//IL_025e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0265: Expected O, but got Unknown
			//IL_04a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ac: Invalid comparison between Unknown and I4
			//IL_02ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f6: Expected O, but got Unknown
			//IL_062b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0632: Invalid comparison between Unknown and I4
			//IL_04b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_04c0: Expected O, but got Unknown
			//IL_073c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0742: Invalid comparison between Unknown and I4
			//IL_063f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0646: Expected O, but got Unknown
			//IL_083b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0841: Invalid comparison between Unknown and I4
			//IL_074f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0756: Expected O, but got Unknown
			//IL_08ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_08b5: Invalid comparison between Unknown and I4
			//IL_092a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0931: Invalid comparison between Unknown and I4
			//IL_08bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_08c6: Expected O, but got Unknown
			//IL_093e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0945: Expected O, but got Unknown
			string text = "";
			if ((int)affliction.GetAfflictionType() == 2)
			{
				Affliction_FasterBoi val = (Affliction_FasterBoi)affliction;
				text = text + effectColors["ItemInfoDisplayPositive"] + "获得</color> " + (((Affliction)val).totalTime + val.climbDelay).ToString("F1").Replace(".0", "") + " 秒的" + effectColors["Extra Stamina"] + " " + Mathf.Round(val.moveSpeedMod * 100f).ToString("F1").Replace(".0", "") + "% 额外奔跑速度</color> 或\n" + effectColors["ItemInfoDisplayPositive"] + "获得</color> " + ((Affliction)val).totalTime.ToString("F1").Replace(".0", "") + " 秒的" + effectColors["Extra Stamina"] + " " + Mathf.Round(val.climbSpeedMod * 100f).ToString("F1").Replace(".0", "") + "% 额外攀爬速度</color>\n之后," + effectColors["ItemInfoDisplayNegative"] + "获得</color> " + effectColors["Drowsy"] + (val.drowsyOnEnd * 100f).ToString("F1").Replace(".0", "") + " 困倦</color>\n";
			}
			else if ((int)affliction.GetAfflictionType() == 8)
			{
				Affliction_ClearAllStatus val2 = (Affliction_ClearAllStatus)affliction;
				text = text + effectColors["ItemInfoDisplayPositive"] + "清除所有状态</color>";
				if (val2.excludeCurse)
				{
					text = text + " 除了 " + effectColors["Curse"] + "诅咒</color>";
				}
				text += "\n\n";
			}
			else if ((int)affliction.GetAfflictionType() == 10)
			{
				Affliction_AddBonusStamina val3 = (Affliction_AddBonusStamina)affliction;
				text = text + effectColors["ItemInfoDisplayPositive"] + "获得</color> " + effectColors["Extra Stamina"] + (val3.staminaAmount * 100f).ToString("F1").Replace(".0", "") + " 额外体力</color>\n";
			}
			else if ((int)affliction.GetAfflictionType() == 1)
			{
				Affliction_InfiniteStamina val4 = (Affliction_InfiniteStamina)affliction;
				text = ((!(val4.climbDelay > 0f)) ? (text + effectColors["ItemInfoDisplayPositive"] + "获得</color> " + ((Affliction)val4).totalTime.ToString("F1").Replace(".0", "") + "秒的" + effectColors["Extra Stamina"] + "无限体力</color>\n") : (text + effectColors["ItemInfoDisplayPositive"] + "获得</color> " + (((Affliction)val4).totalTime + val4.climbDelay).ToString("F1").Replace(".0", "") + "秒的" + effectColors["Extra Stamina"] + " 无限奔跑</color> 或\n" + effectColors["ItemInfoDisplayPositive"] + "获得</color> " + ((Affliction)val4).totalTime.ToString("F1").Replace(".0", "") + "秒的" + effectColors["Extra Stamina"] + " 无限攀爬</color>\n"));
				if (val4.drowsyAffliction != null && val4.drowsyAffliction.totalTime > 0f)
				{
					text = text + "之后," + ProcessAffliction(val4.drowsyAffliction);
				}
			}
			else if ((int)affliction.GetAfflictionType() == 7)
			{
				Affliction_AdjustStatus val5 = (Affliction_AdjustStatus)affliction;
				if (val5.statusAmount > 0f)
				{
					text = ((!((object)(STATUSTYPE)(ref val5.statusType)).ToString().Equals("Extra Stamina")) ? (text + effectColors["ItemInfoDisplayNegative"]) : (text + effectColors["ItemInfoDisplayPositive"]));
					text += "获得</color> ";
				}
				else
				{
					text = ((!((object)(STATUSTYPE)(ref val5.statusType)).ToString().Equals("Extra Stamina")) ? (text + effectColors["ItemInfoDisplayPositive"]) : (text + effectColors["ItemInfoDisplayNegative"]));
					text += "移除</color> ";
				}
				text = text + effectColors[((object)(STATUSTYPE)(ref val5.statusType)).ToString()] + (Mathf.Abs(val5.statusAmount) * 100f).ToString("F1").Replace(".0", "") + " " + GetEffectChineseName(((object)(STATUSTYPE)(ref val5.statusType)).ToString()) + "</color>\n";
			}
			else if ((int)affliction.GetAfflictionType() == 11)
			{
				Affliction_AdjustDrowsyOverTime val6 = (Affliction_AdjustDrowsyOverTime)affliction;
				text = ((!(val6.statusPerSecond > 0f)) ? (text + effectColors["ItemInfoDisplayPositive"] + "移除</color> ") : (text + effectColors["ItemInfoDisplayNegative"] + "获得</color> "));
				text = text + effectColors["Drowsy"] + (Mathf.Round(Mathf.Abs(val6.statusPerSecond) * ((Affliction)val6).totalTime * 100f * 0.4f) / 0.4f).ToString("F1").Replace(".0", "") + " 困倦</color> 持续 " + ((Affliction)val6).totalTime.ToString("F1").Replace(".0", "") + "秒\n";
			}
			else if ((int)affliction.GetAfflictionType() == 5)
			{
				Affliction_AdjustColdOverTime val7 = (Affliction_AdjustColdOverTime)affliction;
				text = ((!(val7.statusPerSecond > 0f)) ? (text + effectColors["ItemInfoDisplayPositive"] + "移除</color> ") : (text + effectColors["ItemInfoDisplayNegative"] + "获得</color> "));
				text = text + effectColors["Cold"] + (Mathf.Abs(val7.statusPerSecond) * ((Affliction)val7).totalTime * 100f).ToString("F1").Replace(".0", "") + " 寒冷</color> 持续 " + ((Affliction)val7).totalTime.ToString("F1").Replace(".0", "") + "秒\n";
			}
			else if ((int)affliction.GetAfflictionType() == 6)
			{
				text = text + effectColors["ItemInfoDisplayPositive"] + "清除所有状态</color>\n\n";
				text = text + effectColors["ItemInfoDisplayNegative"] + "随机获得负面状态组合</color>\n\n";
				text = text + effectColors["ItemInfoDisplayPositive"] + "随机获得额外耐力</color>\n\n";
				text += "<#CCCCCC>效果完全随机</color>\n\n";
			}
			else if ((int)affliction.GetAfflictionType() == 13)
			{
				Affliction_Sunscreen val8 = (Affliction_Sunscreen)affliction;
				text = text + "在 方山 的阳光下防止" + effectColors["Heat"] + "烧伤</color> " + ((Affliction)val8).totalTime.ToString("F1").Replace(".0", "") + "秒\n";
			}
			else if ((int)affliction.GetAfflictionType() == 16)
			{
				Affliction_Invincibility val9 = (Affliction_Invincibility)affliction;
				text = text + effectColors["ItemInfoDisplayPositive"] + "获得</color> 持续 " + effectColors["Shield"] + ((Affliction)val9).totalTime.ToString("F1").Replace(".0", "") + "</color> 秒的" + effectColors["Shield"] + "无敌</color>\n";
			}
			return text;
		}

		private static void AddDisplayObject()
		{
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_005d: Expected O, but got Unknown
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			EasyBackpack = Chainloader.PluginInfos.ContainsKey("nickklmao.easybackpack");
			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("Spores", "<#A45B62>");
			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("Thorns", "<#768E00>");
			dict.Add("Shield", "<#D48E00>");
			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)
		{
		}
	}
}