using System;
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.voc.ItemInfoDisplay")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.13.0")]
[assembly: AssemblyInformationalVersion("1.0.13+6a43e52635cc34562ab088505e3bfe034d21de40")]
[assembly: AssemblyProduct("com.voc.ItemInfoDisplay")]
[assembly: AssemblyTitle("ItemInfoDisplay")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.13.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
{
internal enum EffectColors
{
HUNGER = 16760086,
EXTRA_STAMINA = 12577819,
INJURY = 16732928,
CRAB = 14759234,
POISON = 10566143,
COLD = 48383,
HEAT = 13109528,
SLEEPY = 16735396,
DROWSY = 16735397,
CURSE = 1769539,
WEIGHT = 10902044,
THORNS = 7769600,
SHIELD = 13929984,
ITEM_INFO_DISPLAY_POSITIVE = 14548957,
ITEM_INFO_DISPLAY_NEGATIVE = 16764108
}
internal static class EffectColorMethods
{
public static string HexTag(this EffectColors eff)
{
return "<#" + eff.ToString("X").Substring(2) + ">";
}
}
[BepInPlugin("com.voc.ItemInfoDisplay", "ItemInfoDisplay", "1.0.13")]
public class Plugin : BaseUnityPlugin
{
private static class ItemInfoDisplayUpdatePatch
{
[HarmonyPatch(typeof(CharacterItems), "Update")]
[HarmonyPostfix]
private static void ItemInfoDisplayUpdate(CharacterItems __instance)
{
if (!configIsEnableIID.Value)
{
return;
}
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 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;
private static ConfigEntry<bool> configIsEnableIID;
public const string Id = "com.voc.ItemInfoDisplay";
internal static ManualLogSource Log { get; private set; }
public static string Name => "ItemInfoDisplay";
public static string Version => "1.0.13";
private void Awake()
{
Log = ((BaseUnityPlugin)this).Logger;
lastKnownSinceItemAttach = 0f;
hasChanged = true;
configFontSize = ((BaseUnityPlugin)this).Config.Bind<float>("ItemInfoDisplay", "Font Size", 20f, "調整物品描述文字的字體大小。");
configOutlineWidth = ((BaseUnityPlugin)this).Config.Bind<float>("ItemInfoDisplay", "Outline Width", 0.08f, "調整物品描述文字的輪廓寬度。");
configLineSpacing = ((BaseUnityPlugin)this).Config.Bind<float>("ItemInfoDisplay", "Line Spacing", -35f, "調整物品描述文字的行距。");
configSizeDeltaX = ((BaseUnityPlugin)this).Config.Bind<float>("ItemInfoDisplay", "Size Delta X", 550f, "調整物品描述文字容器的水平長度。增加會將文字向左移動,減少會將文字向右移動。");
configForceUpdateTime = ((BaseUnityPlugin)this).Config.Bind<float>("ItemInfoDisplay", "Force Update Time", 1f, "調整物品強制更新的時間(秒)。");
configIsEnableIID = ((BaseUnityPlugin)this).Config.Bind<bool>("ItemInfoDisplay", "Is Enable ItemInfoDisplay", true, "是否啟用ItemInfoDisplay?");
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! (Modified Version by Vocaloid2048) - Is Enabled? " + configIsEnableIID.Value));
}
private static void ProcessItemGameObject()
{
//IL_0aa9: Unknown result type (might be due to invalid IL or missing references)
//IL_0ab0: Expected O, but got Unknown
//IL_09bb: Unknown result type (might be due to invalid IL or missing references)
//IL_09c0: Unknown result type (might be due to invalid IL or missing references)
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 = text2 + EffectColors.HUNGER.HexTag() + "負重:" + PrettyCount((float)(currentItem.carryWeight + Mathf.Min(Ascents.itemWeightModifier, 0)) * 2.5f, 1) + "點</color>\n";
TextMeshProUGUI val;
switch (((Object)gameObject).name)
{
case "Bugle(Clone)":
{
TextMeshProUGUI obj7 = itemInfoDisplayTextMesh;
((TMP_Text)obj7).text = ((TMP_Text)obj7).text + "圍着隊友吹響它吧!\n" + EffectColors.HEAT.HexTag() + "然後就會有人過來打扁你(誤</color>";
break;
}
case "Pirate Compass(Clone)":
{
TextMeshProUGUI obj6 = itemInfoDisplayTextMesh;
((TMP_Text)obj6).text = ((TMP_Text)obj6).text + EffectColors.INJURY.HexTag() + "指向</color>最近的行李箱\n";
break;
}
case "Compass(Clone)":
{
TextMeshProUGUI obj5 = itemInfoDisplayTextMesh;
((TMP_Text)obj5).text = ((TMP_Text)obj5).text + EffectColors.INJURY.HexTag() + "指向</color>山頂\n";
break;
}
case "Shell Big(Clone)":
{
TextMeshProUGUI obj4 = itemInfoDisplayTextMesh;
((TMP_Text)obj4).text = ((TMP_Text)obj4).text + "試試把它" + EffectColors.HUNGER.HexTag() + "丟向</color>椰子\n";
break;
}
case "Backpack(Clone)":
{
TextMeshProUGUI obj3 = itemInfoDisplayTextMesh;
((TMP_Text)obj3).text = ((TMP_Text)obj3).text + "放下背包才可放入物品\n";
break;
}
case "Megaphone(Clone)":
{
TextMeshProUGUI obj2 = itemInfoDisplayTextMesh;
((TMP_Text)obj2).text = ((TMP_Text)obj2).text + "感覺聲音太小了嗎?可以試試用它來喊話哦~\n" + EffectColors.HEAT.HexTag() + "我可沒有叫你對着隊友叫賣</color>\n";
break;
}
case "AloeVera(Clone)":
val = itemInfoDisplayTextMesh;
((TMP_Text)val).text = ((TMP_Text)val).text + "食用後可以減少 " + EffectColors.HEAT.HexTag() + "50 點" + EffectColorLocalName(EffectColors.HEAT) + "</color>\n";
break;
case "Cure-All(Clone)":
{
TextMeshProUGUI obj = itemInfoDisplayTextMesh;
((TMP_Text)obj).text = ((TMP_Text)obj).text + "飲用後可以幫助消除多種負面狀態</color>\n";
break;
}
}
string text6 = ((Object)gameObject).name.ToUpper();
if (text6 != null)
{
if (text6.Contains("WINTERBERRY"))
{
TextMeshProUGUI obj8 = itemInfoDisplayTextMesh;
((TMP_Text)obj8).text = ((TMP_Text)obj8).text + "放心,這個能吃的(應該吧\n";
}
else
{
string text7 = text6;
if (text7.Contains("PRICKLEBERRY"))
{
TextMeshProUGUI obj9 = itemInfoDisplayTextMesh;
((TMP_Text)obj9).text = ((TMP_Text)obj9).text + "小心有刺!你必須靠其他玩家幫忙才能拔走身上的刺!\n";
}
else
{
string text8 = text6;
if (text8.Contains("SCORCHBERRY"))
{
TextMeshProUGUI obj10 = itemInfoDisplayTextMesh;
((TMP_Text)obj10).text = ((TMP_Text)obj10).text + EffectColorLocalName(EffectColors.HEAT) + "好辣!</color>\n";
}
else
{
string text9 = text6;
if (text9.Contains("SUNSCREEN"))
{
TextMeshProUGUI obj11 = itemInfoDisplayTextMesh;
((TMP_Text)obj11).text = ((TMP_Text)obj11).text + "為玩家提供 90 秒的防曬効果,留意最多只能用三次哦!\n";
}
}
}
}
}
foreach (Component val2 in components)
{
ItemUseFeedback val3 = (ItemUseFeedback)(object)((val2 is ItemUseFeedback) ? val2 : null);
if (val3 == null)
{
Action_Consume val4 = (Action_Consume)(object)((val2 is Action_Consume) ? val2 : null);
if (val4 == null)
{
Action_RestoreHunger val5 = (Action_RestoreHunger)(object)((val2 is Action_RestoreHunger) ? val2 : null);
if (val5 == null)
{
Action_GiveExtraStamina val6 = (Action_GiveExtraStamina)(object)((val2 is Action_GiveExtraStamina) ? val2 : null);
if (val6 == null)
{
Action_InflictPoison val7 = (Action_InflictPoison)(object)((val2 is Action_InflictPoison) ? val2 : null);
if (val7 == null)
{
Action_AddOrRemoveThorns val8 = (Action_AddOrRemoveThorns)(object)((val2 is Action_AddOrRemoveThorns) ? val2 : null);
if (val8 == null)
{
Action_ModifyStatus val9 = (Action_ModifyStatus)(object)((val2 is Action_ModifyStatus) ? val2 : null);
if (val9 == null)
{
Action_ApplyMassAffliction val10 = (Action_ApplyMassAffliction)(object)((val2 is Action_ApplyMassAffliction) ? val2 : null);
if (val10 == null)
{
Action_ApplyAffliction val11 = (Action_ApplyAffliction)(object)((val2 is Action_ApplyAffliction) ? val2 : null);
if (val11 == null)
{
Action_ClearAllStatus val12 = (Action_ClearAllStatus)(object)((val2 is Action_ClearAllStatus) ? val2 : null);
if (val12 == null)
{
Action_ConsumeAndSpawn val13 = (Action_ConsumeAndSpawn)(object)((val2 is Action_ConsumeAndSpawn) ? val2 : null);
if (val13 == null)
{
Action_ReduceUses val14 = (Action_ReduceUses)(object)((val2 is Action_ReduceUses) ? val2 : null);
if (val14 == null)
{
Lantern val15 = (Lantern)(object)((val2 is Lantern) ? val2 : null);
if (val15 == null)
{
Action_RaycastDart val16 = (Action_RaycastDart)(object)((val2 is Action_RaycastDart) ? val2 : null);
if (val16 == null)
{
MagicBugle val17 = (MagicBugle)(object)((val2 is MagicBugle) ? val2 : null);
if (val17 == null)
{
ClimbingSpikeComponent val18 = (ClimbingSpikeComponent)(object)((val2 is ClimbingSpikeComponent) ? val2 : null);
if (val18 == null)
{
Action_Flare val19 = (Action_Flare)(object)((val2 is Action_Flare) ? val2 : null);
if (val19 == null)
{
Backpack val20 = (Backpack)(object)((val2 is Backpack) ? val2 : null);
if (val20 == null)
{
BananaPeel val21 = (BananaPeel)(object)((val2 is BananaPeel) ? val2 : null);
if (val21 == null)
{
ScoutEffigy val22 = (ScoutEffigy)(object)((val2 is ScoutEffigy) ? val2 : null);
if (val22 == null)
{
Constructable val23 = (Constructable)(object)((val2 is Constructable) ? val2 : null);
if (val23 == null)
{
RopeSpool val24 = (RopeSpool)(object)((val2 is RopeSpool) ? val2 : null);
if (val24 == null)
{
RopeShooter val25 = (RopeShooter)(object)((val2 is RopeShooter) ? val2 : null);
if (val25 == null)
{
Antigrav val26 = (Antigrav)(object)((val2 is Antigrav) ? val2 : null);
if (val26 == null)
{
Action_Balloon val27 = (Action_Balloon)(object)((val2 is Action_Balloon) ? val2 : null);
if (val27 == null)
{
VineShooter val28 = (VineShooter)(object)((val2 is VineShooter) ? val2 : null);
if (val28 == null)
{
ShelfShroom val29 = (ShelfShroom)(object)((val2 is ShelfShroom) ? val2 : null);
if (val29 == null)
{
Action_Die val30 = (Action_Die)(object)((val2 is Action_Die) ? val2 : null);
if (val30 == null)
{
Action_SpawnGuidebookPage val31 = (Action_SpawnGuidebookPage)(object)((val2 is Action_SpawnGuidebookPage) ? val2 : null);
if (val31 == null)
{
Action_Guidebook val32 = (Action_Guidebook)(object)((val2 is Action_Guidebook) ? val2 : null);
if (val32 == null)
{
Action_CallScoutmaster val33 = (Action_CallScoutmaster)(object)((val2 is Action_CallScoutmaster) ? val2 : null);
if (val33 == null)
{
Action_MoraleBoost val34 = (Action_MoraleBoost)(object)((val2 is Action_MoraleBoost) ? val2 : null);
if (val34 == null)
{
Breakable val35 = (Breakable)(object)((val2 is Breakable) ? val2 : null);
if (val35 == null)
{
Bonkable val36 = (Bonkable)(object)((val2 is Bonkable) ? val2 : null);
if (val36 == null)
{
MagicBean val37 = (MagicBean)(object)((val2 is MagicBean) ? val2 : null);
if (val37 == null)
{
BingBong val38 = (BingBong)(object)((val2 is BingBong) ? val2 : null);
if (val38 == null)
{
Action_Passport val39 = (Action_Passport)(object)((val2 is Action_Passport) ? val2 : null);
if (val39 == null)
{
Actions_Binoculars val40 = (Actions_Binoculars)(object)((val2 is Actions_Binoculars) ? val2 : null);
if (val40 == null)
{
Action_WarpToRandomPlayer val41 = (Action_WarpToRandomPlayer)(object)((val2 is Action_WarpToRandomPlayer) ? val2 : null);
if (val41 == null)
{
Action_WarpToBiome val42 = (Action_WarpToBiome)(object)((val2 is Action_WarpToBiome) ? val2 : null);
if (val42 == null)
{
Parasol val43 = (Parasol)(object)((val2 is Parasol) ? val2 : null);
if (val43 == null)
{
Frisbee val44 = (Frisbee)(object)((val2 is Frisbee) ? val2 : null);
if (val44 == null)
{
Action_ConstructableScoutCannonScroll val45 = (Action_ConstructableScoutCannonScroll)(object)((val2 is Action_ConstructableScoutCannonScroll) ? val2 : null);
if (val45 == null)
{
Dynamite val46 = (Dynamite)(object)((val2 is Dynamite) ? val2 : null);
if (val46 == null)
{
Scorpion val47 = (Scorpion)(object)((val2 is Scorpion) ? val2 : null);
if (val47 == null)
{
Action_Spawn val48 = (Action_Spawn)(object)((val2 is Action_Spawn) ? val2 : null);
if (val48 == null)
{
CactusBall val49 = (CactusBall)(object)((val2 is CactusBall) ? val2 : null);
if (val49 == null)
{
BingBongShieldWhileHolding val50 = (BingBongShieldWhileHolding)(object)((val2 is BingBongShieldWhileHolding) ? val2 : null);
if (val50 == null)
{
ItemCooking val51 = (ItemCooking)(object)((val2 is ItemCooking) ? val2 : null);
if (val51 == null)
{
continue;
}
if (val51.wreckWhenCooked)
{
text4 = text4 + "\n" + EffectColors.CURSE.HexTag() + ((val51.timesCookedLocal >= 1) ? "因為被烤而壞掉</color>" : "拿去烤的話會壞掉</color>");
continue;
}
switch (val51.timesCookedLocal)
{
case 0:
text4 = text4 + "\n" + EffectColors.EXTRA_STAMINA.HexTag() + "可被烤</color>";
continue;
case 1:
text4 = text4 + "\n" + EffectColors.EXTRA_STAMINA.HexTag() + "烤過 1 次</color>\n - " + EffectColors.HUNGER.HexTag() + "可被烤</color>";
continue;
case 2:
text4 = text4 + "\n" + EffectColors.HUNGER.HexTag() + "烤過 2 次</color>\n - " + EffectColors.INJURY.HexTag() + "可被烤</color>";
continue;
case 3:
text4 = text4 + "\n" + EffectColors.INJURY.HexTag() + "烤過 3 次</color>\n - " + EffectColors.POISON.HexTag() + "可被烤</color>";
continue;
}
if (val51.timesCookedLocal >= 12)
{
text4 = text4 + "\n" + EffectColors.CURSE.HexTag() + "烤過 " + val51.timesCookedLocal + " 次 - 不可被烤</color>";
}
else if (val51.timesCookedLocal >= 4)
{
text4 = text4 + "\n" + EffectColors.POISON.HexTag() + "烤過 " + val51.timesCookedLocal + " 次 - 可被烤</color>";
}
}
else
{
TextMeshProUGUI obj12 = itemInfoDisplayTextMesh;
((TMP_Text)obj12).text = ((TMP_Text)obj12).text + "<#CCCCCC>裝備時將會獲得:</color>\n" + EffectColors.SHIELD.HexTag() + "護盾</color>(無敵狀態)\n";
}
}
else
{
val = itemInfoDisplayTextMesh;
((TMP_Text)val).text = ((TMP_Text)val).text + "需要至少用" + PrettyCount(((StickyItemComponent)val49).throwChargeRequirement * 100f, 1) + "% 的力" + EffectColors.HUNGER.HexTag() + "丟出去</color>\n不然就會" + EffectColors.THORNS.HexTag() + "黏</color>在你身上\n";
}
}
else if (((Object)val48.objectToSpawn).name.Equals("VFX_Sunscreen"))
{
AOE component = ((Component)val48.objectToSpawn.transform.Find("AOE")).GetComponent<AOE>();
RemoveAfterSeconds component2 = ((Component)val48.objectToSpawn.transform.Find("AOE")).GetComponent<RemoveAfterSeconds>();
val = itemInfoDisplayTextMesh;
((TMP_Text)val).text = ((TMP_Text)val).text + "<#CCCCCC>噴灑一個持續" + PrettyCount(component2.seconds, 1) + "秒</color>的霧氣,會造成以下效果:\n" + ProcessAffliction(component.affliction);
}
}
else if (configForceUpdateTime.Value <= 1f)
{
float num = Mathf.Max(0.5f, 1f - currentItem.holderCharacter.refs.afflictions.statusSum + 0.05f) * 100f;
val = itemInfoDisplayTextMesh;
((TMP_Text)val).text = ((TMP_Text)val).text + "如果蠍子活着的話會" + EffectColors.POISON.HexTag() + "螫</color>你\n在" + EffectColors.HEAT.HexTag() + "烤熟</color>後會" + EffectColors.HEAT.HexTag() + "死掉</color>\n\n<#CCCCCC>每被螫一次會持續</color>" + EffectColors.POISON.HexTag() + PrettyCount(val47.totalPoisonTime, 1) + "秒</color>,共獲得" + PrettyCount(num, 1) + " 點毒素</color>\n<#CCCCCC>(若目前十分健康會造成更多傷害)</color>\n";
}
else
{
val = itemInfoDisplayTextMesh;
((TMP_Text)val).text = ((TMP_Text)val).text + "IF ALIVE, " + EffectColors.POISON.HexTag() + "STINGS</color> YOU\n" + EffectColors.CURSE.HexTag() + "DIES</color> WHEN " + EffectColors.HEAT.HexTag() + "COOKED</color>\n\n<#CCCCCC>NEXT STING WILL DEAL:</color>\nAT LEAST " + EffectColors.POISON.HexTag() + "50 POISON</color> OVER " + PrettyCount(val47.totalPoisonTime, 1) + "s\nAT MOST " + EffectColors.POISON.HexTag() + "105 POISON</color> OVER " + PrettyCount(val47.totalPoisonTime, 1) + "s\n<#CCCCCC>(MORE DAMAGE IF HEALTHY)</color>\n";
}
}
else
{
val = itemInfoDisplayTextMesh;
((TMP_Text)val).text = ((TMP_Text)val).text + EffectColors.INJURY.HexTag() + "爆炸</color>造成最多" + EffectColors.INJURY.HexTag() + PrettyCount(val46.explosionPrefab.GetComponent<AOE>().statusAmount * 100f, 1) + " 傷害</color>\n<#CCCCCC>拿着引爆會受到額外傷害</color>\n";
}
}
else
{
TextMeshProUGUI obj13 = itemInfoDisplayTextMesh;
((TMP_Text)obj13).text = ((TMP_Text)obj13).text + "\n<#CCCCCC>放下後透過點燃導火線</color>\n來把大砲中的偵察兵發射出去\n";
}
}
else
{
TextMeshProUGUI obj14 = itemInfoDisplayTextMesh;
((TMP_Text)obj14).text = ((TMP_Text)obj14).text + "把它" + EffectColors.HUNGER.HexTag() + "丟出去</color>\n";
}
}
else
{
val = itemInfoDisplayTextMesh;
((TMP_Text)val).text = ((TMP_Text)val).text + "打開遮陽傘來減緩下降速度\n還能在台地避免太陽直射造成" + EffectColors.HEAT.HexTag() + EffectColorLocalName(EffectColors.HEAT) + "傷害\n";
}
}
else
{
TextMeshProUGUI obj15 = itemInfoDisplayTextMesh;
((TMP_Text)obj15).text = ((TMP_Text)obj15).text + "傳送到" + ((object)(Segment)(ref val42.segmentToWarpTo)).ToString().ToUpper() + "\n";
}
}
else
{
TextMeshProUGUI obj16 = itemInfoDisplayTextMesh;
((TMP_Text)obj16).text = ((TMP_Text)obj16).text + "傳送到隨機玩家身邊\n";
}
}
else
{
TextMeshProUGUI obj17 = itemInfoDisplayTextMesh;
((TMP_Text)obj17).text = ((TMP_Text)obj17).text + "用來看得更遠\n";
}
}
else
{
TextMeshProUGUI obj18 = itemInfoDisplayTextMesh;
((TMP_Text)obj18).text = ((TMP_Text)obj18).text + "打開護照來自訂角色\n";
}
}
else
{
TextMeshProUGUI obj19 = itemInfoDisplayTextMesh;
((TMP_Text)obj19).text = ((TMP_Text)obj19).text + "兵幫航空的吉祥物\n";
}
}
else
{
val = itemInfoDisplayTextMesh;
((TMP_Text)val).text = ((TMP_Text)val).text + EffectColors.HUNGER.HexTag() + "丟出</color>後會種下垂直向上生長的藤蔓,\n最長可達" + PrettyCount(val37.plantPrefab.maxLength / 2f, 1) + "公尺或直到碰到東西為止\n";
}
}
else
{
TextMeshProUGUI obj20 = itemInfoDisplayTextMesh;
((TMP_Text)obj20).text = ((TMP_Text)obj20).text + "被丟到頭的玩家會" + EffectColors.INJURY.HexTag() + "暈倒</color>\n";
}
}
else
{
TextMeshProUGUI obj21 = itemInfoDisplayTextMesh;
((TMP_Text)obj21).text = ((TMP_Text)obj21).text + EffectColors.HUNGER.HexTag() + "丟出</color>後會裂開\n";
}
}
else if (val34.boostRadius < 0f)
{
val = itemInfoDisplayTextMesh;
((TMP_Text)val).text = ((TMP_Text)val).text + EffectColors.ITEM_INFO_DISPLAY_POSITIVE.HexTag() + "獲得</color> " + EffectColors.EXTRA_STAMINA.HexTag() + PrettyCount(val34.baselineStaminaBoost * 100f, 1) + " 點額外士氣</color>\n";
}
else if (val34.boostRadius > 0f)
{
val = itemInfoDisplayTextMesh;
((TMP_Text)val).text = ((TMP_Text)val).text + "<#CCCCCC>最近的玩家</color>" + EffectColors.ITEM_INFO_DISPLAY_POSITIVE.HexTag() + "會獲得</color> " + EffectColors.EXTRA_STAMINA.HexTag() + PrettyCount(val34.baselineStaminaBoost * 100f, 1) + " 點額外士氣</color>\n";
}
}
else
{
TextMeshProUGUI obj22 = itemInfoDisplayTextMesh;
((TMP_Text)obj22).text = ((TMP_Text)obj22).text + EffectColors.INJURY.HexTag() + "使用後會打破規則0</color>\n";
}
}
else
{
TextMeshProUGUI obj23 = itemInfoDisplayTextMesh;
((TMP_Text)obj23).text = ((TMP_Text)obj23).text + "可被閱讀\n";
}
}
else
{
flag = true;
TextMeshProUGUI obj24 = itemInfoDisplayTextMesh;
((TMP_Text)obj24).text = ((TMP_Text)obj24).text + "可被開啟\n";
}
}
else
{
TextMeshProUGUI obj25 = itemInfoDisplayTextMesh;
((TMP_Text)obj25).text = ((TMP_Text)obj25).text + "用了就" + EffectColors.CURSE.HexTag() + "死翹翹</color>了\n";
}
}
else if (((Object)val29.instantiateOnBreak).name.Equals("HealingPuffShroomSpawn"))
{
GameObject gameObject2 = ((Component)val29.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 obj26 = itemInfoDisplayTextMesh;
((TMP_Text)obj26).text = ((TMP_Text)obj26).text + EffectColors.HUNGER.HexTag() + "丟出</color>後會釋放出氣體,效果為:\n";
TextMeshProUGUI obj27 = itemInfoDisplayTextMesh;
((TMP_Text)obj27).text = ((TMP_Text)obj27).text + ProcessEffect(Mathf.Round(component3.statusAmount * 0.9f * 40f) / 40f, GetEffectColorsByStr(((object)(STATUSTYPE)(ref component3.statusType)).ToString())) + "\n";
TextMeshProUGUI obj28 = itemInfoDisplayTextMesh;
((TMP_Text)obj28).text = ((TMP_Text)obj28).text + ProcessEffectOverTime(Mathf.Round(component4.statusAmount * (1f / component5.rate) * 40f) / 40f, 1f, component6.seconds, GetEffectColorsByStr(((object)(STATUSTYPE)(ref component4.statusType)).ToString())) + "\n";
if (components2.Length > 1)
{
TextMeshProUGUI obj29 = itemInfoDisplayTextMesh;
((TMP_Text)obj29).text = ((TMP_Text)obj29).text + ProcessEffectOverTime(Mathf.Round(components2[1].statusAmount * (1f / component5.rate) * 40f) / 40f, 1f, component6.seconds + 1f, GetEffectColorsByStr(((object)(STATUSTYPE)(ref components2[1].statusType)).ToString())) + "\n";
}
}
else if (((Object)val29.instantiateOnBreak).name.Equals("ShelfShroomSpawn"))
{
TextMeshProUGUI obj30 = itemInfoDisplayTextMesh;
((TMP_Text)obj30).text = ((TMP_Text)obj30).text + EffectColors.HUNGER.HexTag() + "丟出</color>後會生成一個平台\n";
}
else if (((Object)val29.instantiateOnBreak).name.Equals("BounceShroomSpawn"))
{
TextMeshProUGUI obj31 = itemInfoDisplayTextMesh;
((TMP_Text)obj31).text = ((TMP_Text)obj31).text + EffectColors.HUNGER.HexTag() + "丟出</color>後會生成一個彈跳墊\n";
}
}
else
{
TextMeshProUGUI obj32 = itemInfoDisplayTextMesh;
((TMP_Text)obj32).text = ((TMP_Text)obj32).text + "從當前位置發射一條鏈條到你瞄準的地方\n最長可達" + PrettyCount(val28.maxLength / 1.6666666f, 1) + "公尺\n";
}
}
else
{
text5 += "可以綁在玩家身上\n";
}
}
else if (val26.intensity != 0f)
{
text5 = text5 + EffectColors.INJURY.HexTag() + "警告:</color><#CCCCCC>放下後會飛走</color>\n";
}
}
else
{
TextMeshProUGUI obj33 = itemInfoDisplayTextMesh;
((TMP_Text)obj33).text = ((TMP_Text)obj33).text + "發射一條";
val = itemInfoDisplayTextMesh;
((TMP_Text)val).text = ((TMP_Text)val).text + PrettyCount(val25.maxLength / 4f, 1) + "公尺長" + (((Object)val25.ropeAnchorWithRopePref).name.Equals("RopeAnchorForRopeShooterAnti") ? "向上漂浮</color>" : "") + "的繩子\n";
}
}
else
{
TextMeshProUGUI obj34 = itemInfoDisplayTextMesh;
((TMP_Text)obj34).text = ((TMP_Text)obj34).text + (val24.isAntiRope ? "放置一條向上漂浮的繩索\n" : "放置一條繩索\n");
val = itemInfoDisplayTextMesh;
((TMP_Text)val).text = ((TMP_Text)val).text + "綁繩結最短需" + PrettyCount(val24.minSegments / 4f, 2) + "公尺長,最多" + PrettyCount((float)Rope.MaxSegments / 4f, 1) + "公尺長\n";
if (configForceUpdateTime.Value <= 1f)
{
text3 = text3 + " 剩餘" + PrettyCount(val24.RopeFuel / 4f, 2) + "公尺";
}
}
}
else if (((Object)val23.constructedPrefab).name.Equals("PortableStovetop_Placed"))
{
val = itemInfoDisplayTextMesh;
((TMP_Text)val).text = ((TMP_Text)val).text + "放置" + EffectColors.INJURY.HexTag() + "攜帶式爐具</color>以提供" + PrettyCount(val23.constructedPrefab.GetComponent<Campfire>().burnsFor, 1) + "秒的溫暖\n";
}
else
{
TextMeshProUGUI obj35 = itemInfoDisplayTextMesh;
((TMP_Text)obj35).text = ((TMP_Text)obj35).text + "可被放置\n";
}
}
else
{
TextMeshProUGUI obj36 = itemInfoDisplayTextMesh;
((TMP_Text)obj36).text = ((TMP_Text)obj36).text + EffectColors.EXTRA_STAMINA.HexTag() + "復活</color>一名死亡的玩家\n";
}
}
else
{
TextMeshProUGUI obj37 = itemInfoDisplayTextMesh;
((TMP_Text)obj37).text = ((TMP_Text)obj37).text + "踩到後會" + EffectColors.HUNGER.HexTag() + "滑倒</color>\n";
}
}
else
{
TextMeshProUGUI obj38 = itemInfoDisplayTextMesh;
((TMP_Text)obj38).text = ((TMP_Text)obj38).text + "放下背包才可放入物品\n";
}
}
else
{
TextMeshProUGUI obj39 = itemInfoDisplayTextMesh;
((TMP_Text)obj39).text = ((TMP_Text)obj39).text + "可被點亮\n";
}
}
else
{
TextMeshProUGUI obj40 = itemInfoDisplayTextMesh;
((TMP_Text)obj40).text = ((TMP_Text)obj40).text + "放置一個你可以抓住的岩釘\n來 " + EffectColors.EXTRA_STAMINA.HexTag() + "恢復體力</color>\n";
}
}
else
{
TextMeshProUGUI obj41 = itemInfoDisplayTextMesh;
((TMP_Text)obj41).text = ((TMP_Text)obj41).text + "當吹響友誼號角時,\n";
}
}
else
{
flag = true;
text5 += "<#CCCCCC>發射一支飛鏢,造成以下效果:</color>\n";
for (int j = 0; j < val16.afflictionsOnHit.Length; j++)
{
text5 += ProcessAffliction(val16.afflictionsOnHit[j]);
text5 += ",\n";
}
text5 += "\n";
}
continue;
}
if (((Object)gameObject).name.Equals("Torch(Clone)"))
{
TextMeshProUGUI obj42 = itemInfoDisplayTextMesh;
((TMP_Text)obj42).text = ((TMP_Text)obj42).text + "可被點亮\n";
}
else
{
text5 += "<#CCCCCC>點亮時,附近的玩家會獲得:</color>\n";
}
if (((Object)gameObject).name.Equals("Lantern_Faerie(Clone)"))
{
StatusField component7 = ((Component)gameObject.transform.Find("FaerieLantern/Light/Heat")).GetComponent<StatusField>();
EffectColors effectColorsByStr = GetEffectColorsByStr(((object)(STATUSTYPE)(ref component7.statusType)).ToString());
text5 += ProcessEffectOverTime(component7.statusAmountPerSecond, 1f, val15.startingFuel, effectColorsByStr);
foreach (StatusFieldStatus additionalStatus in component7.additionalStatuses)
{
if (text5.EndsWith('\n'))
{
text5 = text5.Remove(text5.Length - 1);
}
text5 = text5 + ",\n" + ProcessEffectOverTime(additionalStatus.statusAmountPerSecond, 1f, val15.startingFuel, effectColorsByStr);
}
}
else if (((Object)gameObject).name.Equals("Lantern(Clone)"))
{
StatusField component8 = ((Component)gameObject.transform.Find("GasLantern/Light/Heat")).GetComponent<StatusField>();
EffectColors effectColorsByStr2 = GetEffectColorsByStr(((object)(STATUSTYPE)(ref component8.statusType)).ToString());
text5 += ProcessEffectOverTime(component8.statusAmountPerSecond, 1f, val15.startingFuel, effectColorsByStr2);
}
}
else
{
OptionableIntItemData val52 = (OptionableIntItemData)currentItem.data.data[(DataEntryKey)2];
if (val52.HasData && val52.Value > 1)
{
text3 = text3 + "剩餘 " + val52.Value + " 次使用次數";
}
}
}
else if (((object)val13.itemToSpawn).ToString().Contains("Peel"))
{
TextMeshProUGUI obj43 = itemInfoDisplayTextMesh;
((TMP_Text)obj43).text = ((TMP_Text)obj43).text + "<#CCCCCC>食用後獲得果皮</color>\n";
}
continue;
}
TextMeshProUGUI obj44 = itemInfoDisplayTextMesh;
((TMP_Text)obj44).text = ((TMP_Text)obj44).text + EffectColors.ITEM_INFO_DISPLAY_POSITIVE.HexTag() + "清理所有狀態</color>";
TextMeshProUGUI obj45 = itemInfoDisplayTextMesh;
((TMP_Text)obj45).text = ((TMP_Text)obj45).text + (val12.excludeCurse ? ("(除了" + EffectColors.CURSE.HexTag() + "詛咒</color>\n") : "\n");
if (val12.otherExclusions.Count <= 0)
{
continue;
}
foreach (STATUSTYPE otherExclusion in val12.otherExclusions)
{
STATUSTYPE current2 = otherExclusion;
EffectColors effectColorsByStr3 = GetEffectColorsByStr(((object)(STATUSTYPE)(ref current2)).ToString());
if (effectColorsByStr3 != EffectColors.CRAB)
{
val = itemInfoDisplayTextMesh;
((TMP_Text)val).text = ((TMP_Text)val).text + "、" + effectColorsByStr3.HexTag() + EffectColorLocalName(effectColorsByStr3) + "</color>";
}
}
TextMeshProUGUI obj46 = itemInfoDisplayTextMesh;
((TMP_Text)obj46).text = ((TMP_Text)obj46).text + ")";
}
else
{
text5 += ProcessAffliction(val11.affliction);
}
continue;
}
text5 += "<#CCCCCC>附近的玩家將會收到:</color>\n";
text5 += ProcessAffliction(((Action_ApplyAffliction)val10).affliction);
if (((Action_ApplyAffliction)val10).extraAfflictions.Length == 0)
{
continue;
}
for (int k = 0; k < ((Action_ApplyAffliction)val10).extraAfflictions.Length; k++)
{
if (text5.EndsWith('\n'))
{
text5 = text5.Remove(text5.Length - 1);
}
text5 = text5 + ",\n" + ProcessAffliction(((Action_ApplyAffliction)val10).extraAfflictions[k]);
}
}
else
{
text = text + ProcessEffect(val9.changeAmount, GetEffectColorsByStr(((object)(STATUSTYPE)(ref val9.statusType)).ToString())) + "\n";
}
}
else
{
text = text + ProcessEffect((float)val8.thornCount * 0.05f, EffectColors.THORNS) + "\n";
}
}
else
{
text = text + "經過 " + val7.delay + " 秒後," + ProcessEffectOverTime(val7.poisonPerSecond, 1f, val7.inflictionTime, EffectColors.POISON) + "\n";
}
}
else
{
text = text + ProcessEffect(val6.amount, EffectColors.EXTRA_STAMINA) + "\n";
}
}
else
{
text = text + ProcessEffect(val5.restorationAmount * -1f, EffectColors.HUNGER) + "\n";
}
}
else
{
flag = true;
}
}
else
{
flag = val3.useAnimation.Equals("Eat") || val3.useAnimation.Equals("Drink") || val3.useAnimation.Equals("Heal");
}
}
if (text.Length > 0 && flag)
{
((TMP_Text)itemInfoDisplayTextMesh).text = text + ((TMP_Text)itemInfoDisplayTextMesh).text;
}
if (text5.Length > 0)
{
TextMeshProUGUI obj47 = itemInfoDisplayTextMesh;
((TMP_Text)obj47).text = ((TMP_Text)obj47).text + "\n" + text5;
}
val = itemInfoDisplayTextMesh;
((TMP_Text)val).text = ((TMP_Text)val).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, EffectColors effect)
{
string text = "";
if (amount == 0f)
{
return text;
}
text += ((effect == EffectColors.EXTRA_STAMINA) ? EffectColors.ITEM_INFO_DISPLAY_POSITIVE.HexTag() : EffectColors.ITEM_INFO_DISPLAY_NEGATIVE.HexTag());
text += ((amount > 0f) ? "獲得</color> " : "移除</color> ");
return text + effect.HexTag() + PrettyCount(Mathf.Abs(amount) * 100f, 1) + " 點" + EffectColorLocalName(effect);
}
private static string ProcessEffectOverTime(float amountPerSecond, float rate, float time, EffectColors effect)
{
string text = "";
if (amountPerSecond == 0f || time == 0f)
{
return text;
}
text = text + time + "秒内合共";
text += ((effect == EffectColors.EXTRA_STAMINA) ? EffectColors.ITEM_INFO_DISPLAY_POSITIVE.HexTag() : EffectColors.ITEM_INFO_DISPLAY_NEGATIVE.HexTag());
text += ((amountPerSecond > 0f) ? "獲得</color> " : "移除</color> ");
return text + effect.HexTag() + PrettyCount(Mathf.Abs(amountPerSecond) * time * (1f / rate) * 100f, 1) + " 點" + EffectColorLocalName(effect);
}
private static string ProcessAffliction(Affliction affliction)
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: Expected I4, but got Unknown
//IL_021a: Unknown result type (might be due to invalid IL or missing references)
//IL_0221: Expected O, but got Unknown
//IL_004f: Unknown result type (might be due to invalid IL or missing references)
//IL_0055: Expected O, but got Unknown
//IL_04a7: Unknown result type (might be due to invalid IL or missing references)
//IL_04ae: Expected O, but got Unknown
//IL_033a: Unknown result type (might be due to invalid IL or missing references)
//IL_0341: Expected O, but got Unknown
//IL_0173: Unknown result type (might be due to invalid IL or missing references)
//IL_0179: Expected O, but got Unknown
//IL_01bd: Unknown result type (might be due to invalid IL or missing references)
//IL_01c4: Expected O, but got Unknown
//IL_03fb: Unknown result type (might be due to invalid IL or missing references)
//IL_0402: Expected O, but got Unknown
//IL_0616: Unknown result type (might be due to invalid IL or missing references)
//IL_061d: Expected O, but got Unknown
string text = "";
AfflictionType afflictionType = affliction.GetAfflictionType();
switch (afflictionType - 1)
{
case 1:
{
Affliction_FasterBoi val7 = (Affliction_FasterBoi)affliction;
text = text + EffectColors.ITEM_INFO_DISPLAY_POSITIVE.HexTag() + "獲得</color> " + PrettyCount(((Affliction)val7).totalTime + val7.climbDelay, 1) + " 秒的 " + EffectColors.EXTRA_STAMINA.HexTag() + PrettyCount(Mathf.Round(val7.moveSpeedMod * 100f), 1) + "% 奔跑速度加成</color>,\n" + EffectColors.ITEM_INFO_DISPLAY_POSITIVE.HexTag() + "或者獲得</color> " + PrettyCount(((Affliction)val7).totalTime, 1) + " 秒的 " + EffectColors.EXTRA_STAMINA.HexTag() + PrettyCount(Mathf.Round(val7.climbSpeedMod * 100f), 1) + "% 攀爬速度加成</color>\n" + EffectColors.ITEM_INFO_DISPLAY_NEGATIVE.HexTag() + "然後獲得</color> " + EffectColors.DROWSY.HexTag() + PrettyCount(val7.drowsyOnEnd * 100f, 1) + " 秒的昏睡效果</color>\n";
break;
}
case 7:
{
Affliction_ClearAllStatus val8 = (Affliction_ClearAllStatus)affliction;
text = text + EffectColors.ITEM_INFO_DISPLAY_POSITIVE.HexTag() + "清除所有狀態</color>" + (val8.excludeCurse ? ("(除了" + EffectColors.CURSE.HexTag() + "詛咒</color>)\n") : "\n");
break;
}
case 9:
{
Affliction_AddBonusStamina val4 = (Affliction_AddBonusStamina)affliction;
text = text + EffectColors.ITEM_INFO_DISPLAY_POSITIVE.HexTag() + "獲得</color> " + EffectColors.EXTRA_STAMINA.HexTag() + PrettyCount(val4.staminaAmount * 100f, 1) + " 點額外體力</color>\n";
break;
}
case 0:
{
Affliction_InfiniteStamina val5 = (Affliction_InfiniteStamina)affliction;
text = ((!(val5.climbDelay > 0f)) ? (text + EffectColors.ITEM_INFO_DISPLAY_POSITIVE.HexTag() + "獲得</color> " + PrettyCount(((Affliction)val5).totalTime, 1) + "秒的" + EffectColors.EXTRA_STAMINA.HexTag() + "無限體力</color>\n") : (text + EffectColors.ITEM_INFO_DISPLAY_POSITIVE.HexTag() + "獲得</color> " + PrettyCount(((Affliction)val5).totalTime + val5.climbDelay, 1) + "秒的" + EffectColors.EXTRA_STAMINA.HexTag() + "無限奔跑體力</color>,或獲得 " + PrettyCount(((Affliction)val5).totalTime, 1) + "秒的" + EffectColors.EXTRA_STAMINA.HexTag() + "無限攀爬體力</color>\n"));
if (val5.drowsyAffliction != null)
{
text = text + "然後獲得" + ProcessAffliction(val5.drowsyAffliction);
}
break;
}
case 6:
{
Affliction_AdjustStatus val3 = (Affliction_AdjustStatus)affliction;
EffectColors effectColorsByStr = GetEffectColorsByStr(((object)(STATUSTYPE)(ref val3.statusType)).ToString());
text += ((effectColorsByStr == EffectColors.EXTRA_STAMINA) ? EffectColors.ITEM_INFO_DISPLAY_POSITIVE.HexTag().ToString() : EffectColors.ITEM_INFO_DISPLAY_NEGATIVE.HexTag());
text += ((val3.statusAmount > 0f) ? "獲得</color> " : "移除</color> ");
text = text + effectColorsByStr.HexTag() + PrettyCount(Mathf.Abs(val3.statusAmount) * 100f, 1) + " 點" + EffectColorLocalName(effectColorsByStr) + "</color>\n";
break;
}
case 10:
{
Affliction_AdjustDrowsyOverTime val6 = (Affliction_AdjustDrowsyOverTime)affliction;
text = text + PrettyCount(((Affliction)val6).totalTime, 1) + " 秒内合共 ";
text += ((val6.statusPerSecond > 0f) ? (EffectColors.ITEM_INFO_DISPLAY_POSITIVE.HexTag() + "獲得</color> ") : (EffectColors.ITEM_INFO_DISPLAY_NEGATIVE.HexTag() + "移除</color> "));
text = text + EffectColors.DROWSY.HexTag() + PrettyCount(Mathf.Round(Mathf.Abs(val6.statusPerSecond) * ((Affliction)val6).totalTime * 100f * 0.4f) / 0.4f, 1) + " 點昏睡效果</color>\n";
break;
}
case 4:
{
Affliction_AdjustColdOverTime val2 = (Affliction_AdjustColdOverTime)affliction;
text = text + PrettyCount(((Affliction)val2).totalTime, 1) + " 秒内合共 ";
text += ((val2.statusPerSecond > 0f) ? (EffectColors.ITEM_INFO_DISPLAY_POSITIVE.HexTag() + "獲得</color> ") : (EffectColors.ITEM_INFO_DISPLAY_NEGATIVE.HexTag() + "移除</color> "));
text = text + EffectColors.COLD.HexTag() + PrettyCount(Mathf.Round(Mathf.Abs(val2.statusPerSecond) * ((Affliction)val2).totalTime * 100f * 0.4f) / 0.4f, 1) + " 點寒冷效果</color>\n";
break;
}
case 5:
text = text + EffectColors.ITEM_INFO_DISPLAY_POSITIVE.HexTag() + "清除所有狀態</color>,然後隨機獲得\n" + EffectColors.HUNGER.HexTag() + "飢餓</color>," + EffectColors.EXTRA_STAMINA.HexTag() + "額外體力</color>," + EffectColors.INJURY.HexTag() + "受傷</color>," + EffectColors.POISON.HexTag() + "中毒</color>," + EffectColors.COLD.HexTag() + "寒冷</color>," + EffectColors.HEAT.HexTag() + "炎熱</color>," + EffectColors.DROWSY.HexTag() + "昏睡</color>\n";
break;
case 12:
{
Affliction_Sunscreen val = (Affliction_Sunscreen)affliction;
text = text + "慎防中暑!在台地的太陽下逗留超過 " + PrettyCount(((Affliction)val).totalTime, 1) + " 秒後會開始獲得" + EffectColors.HEAT.HexTag() + "炎熱效果</color>\n";
break;
}
}
return text;
}
private static EffectColors GetEffectColorsByStr(string effect)
{
return (EffectColors)Enum.Parse(typeof(EffectColors), effect.ToUpper());
}
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 string EffectColorLocalName(EffectColors eff)
{
return eff switch
{
EffectColors.HUNGER => "饑餓",
EffectColors.EXTRA_STAMINA => "額外體力",
EffectColors.INJURY => "受傷",
EffectColors.CRAB => "蟹蟹",
EffectColors.POISON => "中毒",
EffectColors.COLD => "寒冷",
EffectColors.HEAT => "高溫",
EffectColors.SLEEPY => "倦睏",
EffectColors.DROWSY => "昏睡",
EffectColors.CURSE => "詛咒",
EffectColors.WEIGHT => "負重",
EffectColors.THORNS => "荊棘",
EffectColors.SHIELD => "護盾",
EffectColors.ITEM_INFO_DISPLAY_POSITIVE => "正面效果",
EffectColors.ITEM_INFO_DISPLAY_NEGATIVE => "負面效果",
_ => eff.ToString(),
};
}
private static string PrettyCount(float num, int dec)
{
return num.ToString("F" + dec).Replace(".0", "");
}
}
}
namespace System.Runtime.CompilerServices
{
[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
internal sealed class IgnoresAccessChecksToAttribute : Attribute
{
public IgnoresAccessChecksToAttribute(string assemblyName)
{
}
}
}