using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using System.Text;
using BepInEx;
using BepInEx.Logging;
using HarmonyLib;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("OutwardModTemplate")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("OutwardModTemplate")]
[assembly: AssemblyCopyright("Copyright © 2021")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("c5450fe0-edcf-483f-b9ea-4b1ef9d36da7")]
[assembly: AssemblyFileVersion("1.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace ReplaceItemDescriptions;
[BepInPlugin("theGrungler.ReplaceItemDescriptions", "ReplaceItemDescriptions", "1.0.0")]
public class ReplaceItemDescriptions : BaseUnityPlugin
{
[HarmonyPatch(typeof(Character), "Awake")]
public class ReplacePrefabDescriptions
{
[HarmonyPostfix]
public static void Awake(Character __instance)
{
if (runAlready)
{
return;
}
Log.LogMessage((object)"Loading ResourcesPrefabManager");
ResourcesPrefabManager instance = ResourcesPrefabManager.Instance;
if (!instance.Loaded)
{
Log.LogMessage((object)"Manager not Initialized");
return;
}
Dictionary<string, Item> iTEM_PREFABS = ResourcesPrefabManager.ITEM_PREFABS;
KeyValuePair<string, Item>[] array = iTEM_PREFABS.ToArray();
for (int i = 0; i < array.Length; i++)
{
KeyValuePair<string, Item> keyValuePair = array[i];
try
{
Item itemPrefab = instance.GetItemPrefab(keyValuePair.Value.ItemID);
if (!itemPrefab.IsUsable)
{
continue;
}
Transform transform = ((Component)itemPrefab).transform;
if ((Object)(object)transform == (Object)null)
{
continue;
}
Transform val = transform.Find("Effects");
if ((Object)(object)val == (Object)null)
{
continue;
}
Effect[] components = ((Component)val).GetComponents<Effect>();
if (components.Length != 0)
{
StringBuilder stringBuilder = new StringBuilder();
Effect[] array2 = components;
foreach (Effect effect in array2)
{
appendStatusText(stringBuilder, effect);
}
if (stringBuilder.Length != 0)
{
stringBuilder.Append("\n");
stringBuilder.Append(itemPrefab.Description);
AccessTools.Field(typeof(Item), "m_localizedDescription").SetValue(itemPrefab, stringBuilder.ToString());
}
}
}
catch (Exception)
{
}
}
runAlready = true;
}
}
[HarmonyPatch(typeof(Item), "BaseInit")]
public class Item_BaseInit
{
[HarmonyPostfix]
public static void BaseInit(Item __instance)
{
try
{
if (!__instance.IsUsable)
{
return;
}
Transform transform = ((Component)__instance).transform;
if ((Object)(object)transform == (Object)null)
{
return;
}
Transform val = transform.Find("Effects");
if ((Object)(object)val == (Object)null)
{
return;
}
Effect[] components = ((Component)val).GetComponents<Effect>();
if (components.Length != 0)
{
StringBuilder stringBuilder = new StringBuilder();
Log.LogMessage((object)((Object)__instance).name);
Effect[] array = components;
foreach (Effect effect in array)
{
appendStatusText(stringBuilder, effect);
}
if (stringBuilder.Length != 0)
{
stringBuilder.Append("\n");
stringBuilder.Append(__instance.Description);
AccessTools.Field(typeof(Item), "m_localizedDescription").SetValue(__instance, stringBuilder.ToString());
}
}
}
catch (Exception)
{
}
}
}
public const string GUID = "theGrungler.ReplaceItemDescriptions";
public const string NAME = "ReplaceItemDescriptions";
public const string VERSION = "1.0.0";
public const string DISPLAY_NAME = "ReplaceItemDescriptions";
internal static bool runAlready;
internal static ManualLogSource Log;
private static Harmony _harmony;
internal void Awake()
{
//IL_0028: Unknown result type (might be due to invalid IL or missing references)
//IL_0032: Expected O, but got Unknown
Log = ((BaseUnityPlugin)this).Logger;
Log.LogMessage((object)"Starting ReplaceItemDescriptions 1.0.0!");
InitializeConfig();
_harmony = new Harmony("theGrungler.ReplaceItemDescriptions");
_harmony.PatchAll();
}
private static void appendStatusText(StringBuilder sb, Effect effect)
{
//IL_001c: Unknown result type (might be due to invalid IL or missing references)
//IL_0055: Unknown result type (might be due to invalid IL or missing references)
//IL_0090: Unknown result type (might be due to invalid IL or missing references)
//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
//IL_0119: Unknown result type (might be due to invalid IL or missing references)
//IL_0165: Unknown result type (might be due to invalid IL or missing references)
//IL_01b1: Unknown result type (might be due to invalid IL or missing references)
//IL_020c: Unknown result type (might be due to invalid IL or missing references)
//IL_0258: Unknown result type (might be due to invalid IL or missing references)
//IL_02a9: Unknown result type (might be due to invalid IL or missing references)
//IL_02f5: Unknown result type (might be due to invalid IL or missing references)
//IL_0300: Expected O, but got Unknown
//IL_0324: Unknown result type (might be due to invalid IL or missing references)
//IL_0373: Unknown result type (might be due to invalid IL or missing references)
if (((object)effect).GetType() == typeof(AddStatusEffect))
{
StatusEffect status = ((AddStatusEffect)effect).Status;
sb.AppendLine(status.IdentifierName);
}
else if (((object)effect).GetType() == typeof(AddBoonEffect))
{
StatusEffect status2 = ((AddStatusEffect)(AddBoonEffect)effect).Status;
sb.AppendLine(status2.StatusName);
}
else if (((object)effect).GetType() == typeof(ImbueWeapon))
{
ImbueEffectPreset imbuedEffect = ((ImbueObject)(ImbueWeapon)effect).ImbuedEffect;
sb.AppendLine(imbuedEffect.Name);
}
else if (((object)effect).GetType() == typeof(AffectBurntHealth))
{
float affectQuantity = ((AffectBurntHealth)effect).AffectQuantity;
sb.AppendLine("Burnt Health " + affectQuantity.ToString("-#;+#;0"));
}
else if (((object)effect).GetType() == typeof(AffectBurntMana))
{
float affectQuantity2 = ((AffectBurntMana)effect).AffectQuantity;
sb.AppendLine("Burnt Mana " + affectQuantity2.ToString("-#;+#;0"));
}
else if (((object)effect).GetType() == typeof(AffectBurntStamina))
{
float affectQuantity3 = ((AffectBurntStamina)effect).AffectQuantity;
sb.AppendLine("Burnt Stamina " + affectQuantity3.ToString("-#;+#;0"));
}
else if (((object)effect).GetType() == typeof(AffectCorruption))
{
float affectQuantity4 = ((AffectCorruption)effect).AffectQuantity;
sb.AppendLine("Corruption " + (affectQuantity4 / 10f).ToString("+#;-#;0") + "%");
}
else if (((object)effect).GetType() == typeof(AffectHealth))
{
float affectQuantity5 = ((AffectHealth)effect).AffectQuantity;
sb.AppendLine("Health " + affectQuantity5.ToString("+#;-#;0"));
}
else if (((object)effect).GetType() == typeof(AffectMana))
{
float value = ((AffectMana)effect).Value;
sb.AppendLine("Mana " + value.ToString("+#;-#;0") + "%");
}
else if (((object)effect).GetType() == typeof(AffectStamina))
{
float affectQuantity6 = ((AffectStamina)effect).AffectQuantity;
sb.AppendLine("Stamina " + affectQuantity6.ToString("+#;-#;0"));
}
else if (((object)effect).GetType() == typeof(RemoveStatusEffect))
{
appendRemoveStatusEffect((RemoveStatusEffect)effect, sb);
}
else if (((object)effect).GetType() == typeof(AffectFood))
{
sb.AppendLine("Food " + ((AffectNeed)(AffectFood)effect).m_affectQuantity / 10f + "%");
}
else if (((object)effect).GetType() == typeof(AffectDrink))
{
sb.AppendLine("Drink " + ((AffectNeed)(AffectDrink)effect).m_affectQuantity / 10f + "%");
}
}
private static void appendRemoveStatusEffect(RemoveStatusEffect effect, StringBuilder sb)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_000a: Invalid comparison between Unknown and I4
//IL_0038: Unknown result type (might be due to invalid IL or missing references)
//IL_003a: Invalid comparison between Unknown and I4
//IL_001d: Unknown result type (might be due to invalid IL or missing references)
//IL_0065: Unknown result type (might be due to invalid IL or missing references)
//IL_0067: Invalid comparison between Unknown and I4
//IL_008d: Unknown result type (might be due to invalid IL or missing references)
//IL_008f: Invalid comparison between Unknown and I4
//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
//IL_00b4: Invalid comparison between Unknown and I4
RemoveTypes cleanseType = effect.CleanseType;
if ((int)cleanseType == 2)
{
sb.AppendLine("Remove " + effect.StatusType.Tag.TagName);
}
else if ((int)cleanseType == 1)
{
sb.AppendLine("Remove " + ((UidSelector<StatusEffectFamily>)(object)effect.StatusFamily).Internal_Get().Name);
}
else if ((int)cleanseType == 0)
{
sb.AppendLine("Remove " + effect.StatusEffect.IdentifierName);
}
else if ((int)cleanseType == 3)
{
sb.AppendLine("Remove " + effect.StatusName);
}
else if ((int)cleanseType == 4)
{
sb.AppendLine("Remove negative statuses");
}
}
internal void OnDestroy()
{
Harmony harmony = _harmony;
if (harmony != null)
{
harmony.UnpatchSelf();
}
Log.LogMessage((object)"Destoryed");
((BaseUnityPlugin)this).Config.Clear();
}
private void InitializeConfig()
{
}
internal void Update()
{
}
}