using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
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.Json;
using System.Threading.Tasks;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Core.Logging.Interpolation;
using BepInEx.Logging;
using BepInEx.Unity.IL2CPP;
using CrimsonLog.Services;
using CrimsonLog.Structs;
using CrimsonLog.Systems;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using ProjectM;
using ProjectM.CastleBuilding;
using ProjectM.CastleBuilding.Rebuilding;
using ProjectM.Gameplay.Clan;
using ProjectM.Gameplay.Systems;
using ProjectM.Network;
using Unity.Collections;
using Unity.Entities;
using UnityEngine;
using VAMP;
using VAMP.Services;
using VAMP.Utilities;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")]
[assembly: AssemblyCompany("CrimsonLog")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyDescription("A simplistic logger for V Rising")]
[assembly: AssemblyFileVersion("1.3.3.0")]
[assembly: AssemblyInformationalVersion("1.3.3+1.Branch.master.Sha.bae547c8e23a978f2e836ec1b3035ebb744cc564.bae547c8e23a978f2e836ec1b3035ebb744cc564")]
[assembly: AssemblyProduct("CrimsonLog")]
[assembly: AssemblyTitle("CrimsonLog")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.3.3.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
internal sealed class RefSafetyRulesAttribute : Attribute
{
public readonly int Version;
public RefSafetyRulesAttribute(int P_0)
{
Version = P_0;
}
}
}
namespace CrimsonLog
{
[BepInPlugin("CrimsonLog", "CrimsonLog", "1.3.3")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
public class Plugin : BasePlugin
{
private Harmony _harmony;
public static readonly string ConfigFiles = Path.Combine(Paths.ConfigPath, "CrimsonLog");
internal static Plugin Instance { get; private set; }
public static Settings Settings { get; private set; }
public static Harmony Harmony => Instance._harmony;
public static ManualLogSource LogInstance => ((BasePlugin)Instance).Log;
public static Tracked Tracked { get; private set; }
public override void Load()
{
//IL_0033: Unknown result type (might be due to invalid IL or missing references)
//IL_0039: Expected O, but got Unknown
Instance = this;
Settings = default(Settings);
_harmony = Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), (string)null);
Settings.InitConfig();
ManualLogSource logInstance = LogInstance;
bool flag = default(bool);
BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(7, 1, ref flag);
if (flag)
{
((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>("CrimsonLog");
((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" loaded");
}
logInstance.LogInfo(val);
Events.OnCoreLoaded = (Action)Delegate.Combine(Events.OnCoreLoaded, new Action(Loaded));
}
public void Loaded()
{
Tracked = new Tracked();
}
public override bool Unload()
{
((BasePlugin)this).Config.Clear();
Harmony harmony = _harmony;
if (harmony != null)
{
harmony.UnpatchSelf();
}
return true;
}
}
public static class MyPluginInfo
{
public const string PLUGIN_GUID = "CrimsonLog";
public const string PLUGIN_NAME = "CrimsonLog";
public const string PLUGIN_VERSION = "1.3.3";
}
}
namespace CrimsonLog.Structs
{
[StructLayout(LayoutKind.Sequential, Size = 1)]
public readonly struct Settings
{
public static ConfigEntry<bool> ToggleLog { get; private set; }
public static ConfigEntry<int> DaysToKeep { get; private set; }
public static ConfigEntry<bool> ChatSingleFile { get; private set; }
public static ConfigEntry<bool> GlobalChat { get; private set; }
public static ConfigEntry<bool> WhisperChat { get; private set; }
public static ConfigEntry<bool> RegionChat { get; private set; }
public static ConfigEntry<bool> LocalChat { get; private set; }
public static ConfigEntry<bool> TeamChat { get; private set; }
public static ConfigEntry<bool> CastleHeart { get; private set; }
public static ConfigEntry<bool> BloodTransfer { get; private set; }
public static ConfigEntry<bool> ClanMembership { get; private set; }
public static void InitConfig()
{
ToggleLog = InitConfigEntry("_Config", "ToggleLog", defaultValue: true, "Enable or disable the mod overall");
DaysToKeep = InitConfigEntry("_Config", "DaysToKeep", 5, "How many days (server time) to keep logs before automated delete. -1 to set to manually delete only.");
ChatSingleFile = InitConfigEntry("Chat", "SingleFile", defaultValue: true, "If this is true, all chats will go to a single file; otherwise they will have their own files");
GlobalChat = InitConfigEntry("Chat", "Global", defaultValue: true, "Log the global chat");
WhisperChat = InitConfigEntry("Chat", "Whisper", defaultValue: false, "Log player whispers");
RegionChat = InitConfigEntry("Chat", "Region", defaultValue: false, "Log region chat");
LocalChat = InitConfigEntry("Chat", "Local", defaultValue: false, "Log local chat");
TeamChat = InitConfigEntry("Chat", "Team", defaultValue: false, "Log team chat");
CastleHeart = InitConfigEntry("CastleHeart", "CastleHeart", defaultValue: true, "Log castle heart activity");
BloodTransfer = InitConfigEntry("CastleHeart", "BloodTransfer", defaultValue: false, "Logs transfers of Blood Essense in and out of castle hearts (seperate file from heart activity)");
ClanMembership = InitConfigEntry("Clans", "Membership", defaultValue: true, "Log clan membership changes");
}
private static ConfigEntry<T> InitConfigEntry<T>(string section, string key, T defaultValue, string description)
{
//IL_002e: Unknown result type (might be due to invalid IL or missing references)
ConfigEntry<T> val = ((BasePlugin)Plugin.Instance).Config.Bind<T>(section, key, defaultValue, description);
string text = Path.Combine(Paths.ConfigPath, "CrimsonLog.cfg");
ConfigEntry<T> val2 = default(ConfigEntry<T>);
if (File.Exists(text) && new ConfigFile(text, true).TryGetEntry<T>(section, key, ref val2))
{
val.Value = val2.Value;
}
return val;
}
}
public class Tracked
{
public static string DecayFile = Path.Combine(Plugin.ConfigFiles, "DoNotTouch.json");
public static List<string> Decaying;
public Tracked()
{
CreateDirectories(Path.GetDirectoryName(DecayFile));
LoadDatabase();
}
private static bool LoadDatabase()
{
if (!File.Exists(DecayFile))
{
Decaying = new List<string>();
return false;
}
Decaying = JsonSerializer.Deserialize<List<string>>(File.ReadAllText(DecayFile));
return true;
}
public static bool SaveDatabase()
{
File.WriteAllText(DecayFile, JsonSerializer.Serialize(Decaying));
return true;
}
private static void CreateDirectories(string path)
{
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
}
}
}
namespace CrimsonLog.Systems
{
public static class Logger
{
public static Task<string> CreateDirectory(string folderName)
{
if (!Directory.Exists("CrimsonLogs/" + folderName))
{
Directory.CreateDirectory("CrimsonLogs/" + folderName);
}
return Task.FromResult("CrimsonLogs/" + folderName);
}
public static async void Record(string folderName, string recordName, string message)
{
string text = await CreateDirectory(folderName);
string path = $"{text}/{recordName}_{DateTime.Now:yyyy-MM-dd}";
if (!File.Exists(path))
{
File.Create(path).Dispose();
DeleteOldLogs(text, recordName);
}
File.AppendAllText(path, Time() + " | " + message);
}
public static string Time()
{
return $"{DateTime.Now:HH:mm.ss}";
}
public static void DeleteOldLogs(string folderPath, string prefix)
{
int value = Settings.DaysToKeep.Value;
if (value < 0)
{
return;
}
string[] files = Directory.GetFiles(folderPath, prefix + "*");
foreach (string text in files)
{
FileInfo fileInfo = new FileInfo(text);
if ((DateTime.Now - fileInfo.CreationTime).Days > value)
{
File.Delete(text);
}
}
}
}
}
namespace CrimsonLog.Services
{
public static class Chat
{
private static readonly bool SingleFile = Settings.ChatSingleFile.Value;
private static readonly bool LogGlobal = Settings.GlobalChat.Value;
private static readonly bool LogWhisper = Settings.WhisperChat.Value;
private static readonly bool LogRegion = Settings.RegionChat.Value;
private static readonly bool LogLocal = Settings.LocalChat.Value;
private static readonly bool LogTeam = Settings.TeamChat.Value;
private static async void LogMessage(string chatType, string prefix, string message, string characterName, string additionalInfo = "")
{
string text = await Logger.CreateDirectory("Chat");
string value = (SingleFile ? (Logger.Time() + " | " + chatType) : Logger.Time());
string contents = $"{value} | {characterName}{additionalInfo} | {message}\n";
string path = $"{text}/{(SingleFile ? "chat_" : prefix)}{DateTime.Now:yyy-MM-dd}";
if (!File.Exists(path))
{
File.Create(path).Dispose();
Logger.DeleteOldLogs(text, prefix);
}
File.AppendAllText(path, contents);
}
public static void Global(ChatMessageEvent message, User fromUser)
{
if (LogGlobal)
{
LogMessage("Global", "global_", ((object)(FixedString512Bytes)(ref message.MessageText)).ToString(), ((object)(FixedString64Bytes)(ref fromUser.CharacterName)).ToString());
}
}
public static void Region(ChatMessageEvent message, User fromUser)
{
if (LogRegion)
{
LogMessage("Region", "region_", ((object)(FixedString512Bytes)(ref message.MessageText)).ToString(), ((object)(FixedString64Bytes)(ref fromUser.CharacterName)).ToString());
}
}
public static void Local(ChatMessageEvent message, User fromUser)
{
if (LogLocal)
{
LogMessage("Local", "local_", ((object)(FixedString512Bytes)(ref message.MessageText)).ToString(), ((object)(FixedString64Bytes)(ref fromUser.CharacterName)).ToString());
}
}
public static void Team(ChatMessageEvent message, User fromUser)
{
//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_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Unknown result type (might be due to invalid IL or missing references)
//IL_0017: Unknown result type (might be due to invalid IL or missing references)
if (LogTeam)
{
ClanTeam val = EntityUtil.Read<ClanTeam>(fromUser.ClanEntity._Entity);
string value = ((FixedString64Bytes)(ref val.Name)).Value;
LogMessage("Clan", "clan_", ((object)(FixedString512Bytes)(ref message.MessageText)).ToString(), ((object)(FixedString64Bytes)(ref fromUser.CharacterName)).ToString(), " | " + value);
}
}
public static void Whisper(ChatMessageEvent message, User fromUser)
{
//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_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Unknown result type (might be due to invalid IL or missing references)
//IL_0017: Unknown result type (might be due to invalid IL or missing references)
if (LogWhisper)
{
User val = EntityUtil.Read<User>(GetEntityFromNetworkId(message.ReceiverEntity));
string text = ((object)(FixedString64Bytes)(ref val.CharacterName)).ToString();
LogMessage("Whisper", "whisper_", ((object)(FixedString512Bytes)(ref message.MessageText)).ToString(), ((object)(FixedString64Bytes)(ref fromUser.CharacterName)).ToString(), " -> " + text);
}
}
public static Entity GetEntityFromNetworkId(NetworkId networkid)
{
//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_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
//IL_0015: Unknown result type (might be due to invalid IL or missing references)
//IL_0018: Unknown result type (might be due to invalid IL or missing references)
//IL_001d: Unknown result type (might be due to invalid IL or missing references)
//IL_0020: Unknown result type (might be due to invalid IL or missing references)
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
Singleton val = EntityUtil.Read<Singleton>(EntityUtil.GetEntitiesByComponentTypes<Singleton>((EntityQueryOptions)16)[0]);
NetworkIdLookupMap networkIdLookupRW = ((Singleton)(ref val)).GetNetworkIdLookupRW();
Entity result = default(Entity);
((NetworkIdLookupMap)(ref networkIdLookupRW)).TryGetValue(networkid, ref result);
return result;
}
}
}
namespace CrimsonLog.Hooks
{
[HarmonyPatch(typeof(CastleRebuildRegistryOnDestroySystem), "OnUpdate")]
internal class DismantlePatch
{
private static void Prefix(CastleRebuildRegistryOnDestroySystem __instance)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_000a: 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_0014: Unknown result type (might be due to invalid IL or missing references)
//IL_0017: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Unknown result type (might be due to invalid IL or missing references)
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_002a: Unknown result type (might be due to invalid IL or missing references)
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Unknown result type (might be due to invalid IL or missing references)
//IL_003b: Unknown result type (might be due to invalid IL or missing references)
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
//IL_003f: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: Unknown result type (might be due to invalid IL or missing references)
//IL_0050: Unknown result type (might be due to invalid IL or missing references)
//IL_0052: Unknown result type (might be due to invalid IL or missing references)
//IL_0057: Unknown result type (might be due to invalid IL or missing references)
//IL_005c: Unknown result type (might be due to invalid IL or missing references)
//IL_0061: Unknown result type (might be due to invalid IL or missing references)
//IL_0063: Unknown result type (might be due to invalid IL or missing references)
//IL_006b: Unknown result type (might be due to invalid IL or missing references)
//IL_006c: Unknown result type (might be due to invalid IL or missing references)
//IL_0071: Unknown result type (might be due to invalid IL or missing references)
//IL_0093: Unknown result type (might be due to invalid IL or missing references)
//IL_0095: Unknown result type (might be due to invalid IL or missing references)
EntityQuery _query_1821521061_ = __instance.__query_1821521061_0;
Enumerator<Entity> enumerator = ((EntityQuery)(ref _query_1821521061_)).ToEntityArray(AllocatorHandle.op_Implicit((Allocator)2)).GetEnumerator();
while (enumerator.MoveNext())
{
Entity current = enumerator.Current;
if (!EntityUtil.Has<UserOwner>(current))
{
continue;
}
UserOwner val = EntityUtil.Read<UserOwner>(current);
if (EntityUtil.Has<User>(val.Owner._Entity))
{
User val2 = EntityUtil.Read<User>(val.Owner._Entity);
if (EntityUtil.Has<CastleHeart>(current) && EntityUtil.Read<CastleHeart>(current).CastleTerritoryId.ZoneId == 0)
{
Logger.Record("CastleHeart", "heart_events", $"{val2.CharacterName} has relocated their own castle.");
}
}
}
}
}
[HarmonyPatch(typeof(CastleHeartEventSystem), "OnUpdate")]
internal class CastleHeartEventSystemPatch
{
public static void Prefix(CastleHeartEventSystem __instance)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0009: Unknown result type (might be due to invalid IL or missing references)
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Unknown result type (might be due to invalid IL or missing references)
//IL_0017: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Unknown result type (might be due to invalid IL or missing references)
//IL_001f: Unknown result type (might be due to invalid IL or missing references)
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_0031: Unknown result type (might be due to invalid IL or missing references)
//IL_0032: Unknown result type (might be due to invalid IL or missing references)
//IL_003d: Unknown result type (might be due to invalid IL or missing references)
//IL_0048: Unknown result type (might be due to invalid IL or missing references)
//IL_0053: Unknown result type (might be due to invalid IL or missing references)
//IL_0054: Unknown result type (might be due to invalid IL or missing references)
//IL_0059: Unknown result type (might be due to invalid IL or missing references)
//IL_005b: Unknown result type (might be due to invalid IL or missing references)
//IL_005c: Unknown result type (might be due to invalid IL or missing references)
//IL_0061: Unknown result type (might be due to invalid IL or missing references)
//IL_0063: 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_0074: Unknown result type (might be due to invalid IL or missing references)
//IL_0076: Unknown result type (might be due to invalid IL or missing references)
//IL_0085: Unknown result type (might be due to invalid IL or missing references)
//IL_0087: Unknown result type (might be due to invalid IL or missing references)
//IL_008c: Unknown result type (might be due to invalid IL or missing references)
//IL_0091: Unknown result type (might be due to invalid IL or missing references)
//IL_0093: Unknown result type (might be due to invalid IL or missing references)
//IL_0095: Unknown result type (might be due to invalid IL or missing references)
//IL_0097: Unknown result type (might be due to invalid IL or missing references)
//IL_0099: Unknown result type (might be due to invalid IL or missing references)
//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
//IL_0108: Unknown result type (might be due to invalid IL or missing references)
//IL_010a: Unknown result type (might be due to invalid IL or missing references)
//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
//IL_0130: Unknown result type (might be due to invalid IL or missing references)
//IL_0132: Unknown result type (might be due to invalid IL or missing references)
//IL_0137: Unknown result type (might be due to invalid IL or missing references)
//IL_0139: Unknown result type (might be due to invalid IL or missing references)
//IL_0158: Expected I4, but got Unknown
//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
//IL_00c0: Unknown result type (might be due to invalid IL or missing references)
//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
//IL_0173: Unknown result type (might be due to invalid IL or missing references)
//IL_0175: 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_01f2: Unknown result type (might be due to invalid IL or missing references)
//IL_01f4: Unknown result type (might be due to invalid IL or missing references)
//IL_0246: Unknown result type (might be due to invalid IL or missing references)
//IL_0248: Unknown result type (might be due to invalid IL or missing references)
//IL_029a: Unknown result type (might be due to invalid IL or missing references)
//IL_029c: Unknown result type (might be due to invalid IL or missing references)
//IL_02ee: Unknown result type (might be due to invalid IL or missing references)
//IL_02f0: Unknown result type (might be due to invalid IL or missing references)
//IL_033f: Unknown result type (might be due to invalid IL or missing references)
//IL_0341: Unknown result type (might be due to invalid IL or missing references)
//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
NativeArray<Entity> val = default(NativeArray<Entity>);
try
{
EntityQuery castleHeartInteractEventQuery = __instance._CastleHeartInteractEventQuery;
val = ((EntityQuery)(ref castleHeartInteractEventQuery)).ToEntityArray(AllocatorHandle.op_Implicit((Allocator)2));
Enumerator<Entity> enumerator = val.GetEnumerator();
Entity val6 = default(Entity);
while (enumerator.MoveNext())
{
Entity current = enumerator.Current;
if (!EntityUtil.Exists(current) || !EntityUtil.Has<CastleHeartInteractEvent>(current) || !EntityUtil.Has<FromCharacter>(current))
{
continue;
}
CastleHeartInteractEvent val2 = EntityUtil.Read<CastleHeartInteractEvent>(current);
FromCharacter val3 = EntityUtil.Read<FromCharacter>(current);
if (!EntityUtil.Exists(val3.User) || !EntityUtil.Has<User>(val3.User))
{
continue;
}
User val4 = EntityUtil.Read<User>(val3.User);
User val5 = val4;
if (CastleHeartService.TryGetByID(val2.CastleHeart, ref val6) && EntityUtil.Exists(val6) && EntityUtil.Has<UserOwner>(val6))
{
UserOwner val7 = EntityUtil.Read<UserOwner>(val6);
if (EntityUtil.Exists(val7.Owner._Entity))
{
val5 = EntityUtil.Read<User>(val7.Owner._Entity);
}
}
CastleHeart val8 = EntityUtil.Read<CastleHeart>(val6);
string text = ((val5 == val4) ? "their own castle." : $"{val4.CharacterName}'s castle.");
CastleHeartInteractEventType eventType = val2.EventType;
switch ((int)eventType)
{
case 0:
Logger.Record("CastleHeart", "heart_events", $"{val4.CharacterName} has upgraded {text.Replace(".", "")} to Level {val8.Level + 1}.\n");
break;
case 1:
Logger.Record("CastleHeart", "heart_events", $"{val4.CharacterName} has abandoned {text}\n");
break;
case 2:
Logger.Record("CastleHeart", "heart_events", $"{val4.CharacterName} has exposed {text}\n");
break;
case 3:
Logger.Record("CastleHeart", "heart_events", $"{val4.CharacterName} has claimed {text}\n");
break;
case 4:
Logger.Record("CastleHeart", "heart_events", $"{val4.CharacterName} has disabled defenses of {text}\n");
break;
case 5:
Logger.Record("CastleHeart", "heart_events", $"{val4.CharacterName} has destroyed {text}\n");
break;
}
}
}
catch (Exception ex)
{
Plugin.LogInstance.LogError((object)ex);
}
finally
{
val.Dispose();
}
}
}
[HarmonyPatch(typeof(CastleHeartStateUpdateSystem), "OnUpdate")]
internal class CastleHeartStateUpdateSystemPatch
{
public static void Prefix(CastleHeartStateUpdateSystem __instance)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_000a: 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_0014: Unknown result type (might be due to invalid IL or missing references)
//IL_0017: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Unknown result type (might be due to invalid IL or missing references)
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_0031: Unknown result type (might be due to invalid IL or missing references)
//IL_0050: Unknown result type (might be due to invalid IL or missing references)
//IL_005b: Unknown result type (might be due to invalid IL or missing references)
//IL_0066: Unknown result type (might be due to invalid IL or missing references)
//IL_0067: Unknown result type (might be due to invalid IL or missing references)
//IL_006c: Unknown result type (might be due to invalid IL or missing references)
//IL_006e: Unknown result type (might be due to invalid IL or missing references)
//IL_0070: Unknown result type (might be due to invalid IL or missing references)
//IL_0075: Unknown result type (might be due to invalid IL or missing references)
//IL_0084: Unknown result type (might be due to invalid IL or missing references)
//IL_0085: Unknown result type (might be due to invalid IL or missing references)
//IL_008a: Unknown result type (might be due to invalid IL or missing references)
//IL_008e: 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_0095: Unknown result type (might be due to invalid IL or missing references)
//IL_009a: Unknown result type (might be due to invalid IL or missing references)
//IL_009f: Unknown result type (might be due to invalid IL or missing references)
//IL_017f: Unknown result type (might be due to invalid IL or missing references)
//IL_0114: Unknown result type (might be due to invalid IL or missing references)
EntityQuery stateUpdateQuery = __instance._StateUpdateQuery;
Enumerator<Entity> enumerator = ((EntityQuery)(ref stateUpdateQuery)).ToEntityArray(AllocatorHandle.op_Implicit((Allocator)2)).GetEnumerator();
while (enumerator.MoveNext())
{
Entity current = enumerator.Current;
if (!EntityUtil.Exists(current) || Plugin.Tracked == null || Tracked.Decaying == null || !EntityUtil.Has<CastleHeart>(current) || !EntityUtil.Has<UserOwner>(current))
{
continue;
}
UserOwner val = EntityUtil.Read<UserOwner>(current);
if (!EntityUtil.Exists(val.Owner._Entity))
{
continue;
}
CastleHeart val2 = EntityUtil.Read<CastleHeart>(current);
User user = EntityUtil.Read<User>(val.Owner._Entity);
if (((CastleHeart)(ref val2)).IsPhased())
{
continue;
}
if (Tracked.Decaying.Exists((string x) => x == ((FixedString64Bytes)(ref user.CharacterName)).Value))
{
if (!((CastleHeart)(ref val2)).IsDecaying())
{
Tracked.Decaying.Remove(((FixedString64Bytes)(ref user.CharacterName)).Value);
Tracked.SaveDatabase();
Logger.Record("CastleHeart", "heart_events", $"{user.CharacterName}'s castle has stopped decaying.\n");
}
}
else if (((CastleHeart)(ref val2)).IsDecaying())
{
Tracked.Decaying.Add(((FixedString64Bytes)(ref user.CharacterName)).Value);
Tracked.SaveDatabase();
Logger.Record("CastleHeart", "heart_events", $"{user.CharacterName}'s castle has begun to decay.\n");
}
}
}
}
[HarmonyPatch]
public static class ChatMessageSystem_Patch
{
[HarmonyPatch(typeof(ChatMessageSystem), "OnUpdate")]
[HarmonyPrefix]
public static bool OnUpdate(ChatMessageSystem __instance)
{
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
//IL_001f: Unknown result type (might be due to invalid IL or missing references)
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_0031: Unknown result type (might be due to invalid IL or missing references)
//IL_0039: Unknown result type (might be due to invalid IL or missing references)
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_0040: Unknown result type (might be due to invalid IL or missing references)
//IL_0045: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: Unknown result type (might be due to invalid IL or missing references)
//IL_004a: Unknown result type (might be due to invalid IL or missing references)
//IL_004f: Unknown result type (might be due to invalid IL or missing references)
//IL_0052: Unknown result type (might be due to invalid IL or missing references)
//IL_0057: Unknown result type (might be due to invalid IL or missing references)
//IL_005b: Unknown result type (might be due to invalid IL or missing references)
//IL_005d: Unknown result type (might be due to invalid IL or missing references)
//IL_0062: Unknown result type (might be due to invalid IL or missing references)
//IL_0067: Unknown result type (might be due to invalid IL or missing references)
//IL_006a: Unknown result type (might be due to invalid IL or missing references)
//IL_006f: Unknown result type (might be due to invalid IL or missing references)
//IL_0073: Unknown result type (might be due to invalid IL or missing references)
//IL_0074: Unknown result type (might be due to invalid IL or missing references)
//IL_0079: Unknown result type (might be due to invalid IL or missing references)
//IL_007b: Unknown result type (might be due to invalid IL or missing references)
//IL_007d: Unknown result type (might be due to invalid IL or missing references)
//IL_008f: Unknown result type (might be due to invalid IL or missing references)
//IL_0091: Unknown result type (might be due to invalid IL or missing references)
//IL_0097: Invalid comparison between Unknown and I4
//IL_0084: Unknown result type (might be due to invalid IL or missing references)
//IL_0086: Unknown result type (might be due to invalid IL or missing references)
//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
//IL_00ac: Invalid comparison between Unknown and I4
//IL_0099: Unknown result type (might be due to invalid IL or missing references)
//IL_009b: Unknown result type (might be due to invalid IL or missing references)
//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
//IL_00c1: Invalid comparison between Unknown and I4
//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
//IL_00de: Unknown result type (might be due to invalid IL or missing references)
if (!Settings.ToggleLog.Value)
{
return true;
}
_ = __instance.__query_661171423_0;
EntityQuery _query_661171423_ = __instance.__query_661171423_0;
Enumerator<Entity> enumerator = ((EntityQuery)(ref _query_661171423_)).ToEntityArray(AllocatorHandle.op_Implicit((Allocator)2)).GetEnumerator();
while (enumerator.MoveNext())
{
Entity current = enumerator.Current;
EntityManager entityManager = ((ComponentSystemBase)__instance).EntityManager;
FromCharacter componentData = ((EntityManager)(ref entityManager)).GetComponentData<FromCharacter>(current);
entityManager = ((ComponentSystemBase)__instance).EntityManager;
User componentData2 = ((EntityManager)(ref entityManager)).GetComponentData<User>(componentData.User);
entityManager = ((ComponentSystemBase)__instance).EntityManager;
ChatMessageEvent componentData3 = ((EntityManager)(ref entityManager)).GetComponentData<ChatMessageEvent>(current);
if ((int)componentData3.MessageType == 0)
{
Chat.Global(componentData3, componentData2);
}
else if ((int)componentData3.MessageType == 1)
{
Chat.Region(componentData3, componentData2);
}
else if ((int)componentData3.MessageType == 4)
{
Chat.Region(componentData3, componentData2);
}
else if ((int)componentData3.MessageType == 2)
{
Chat.Team(componentData3, componentData2);
}
else if (((NetworkId)(ref componentData3.ReceiverEntity)).IsValid)
{
Chat.Whisper(componentData3, componentData2);
}
}
return true;
}
}
[HarmonyPatch(typeof(ClanSystem_Server), "OnUpdate")]
internal class ClanSystemServerPatch
{
public static void Prefix(ClanSystem_Server __instance)
{
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
//IL_002d: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: Unknown result type (might be due to invalid IL or missing references)
//IL_005b: Unknown result type (might be due to invalid IL or missing references)
//IL_007c: Unknown result type (might be due to invalid IL or missing references)
//IL_0081: Unknown result type (might be due to invalid IL or missing references)
//IL_008b: 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_0095: Unknown result type (might be due to invalid IL or missing references)
//IL_0099: Unknown result type (might be due to invalid IL or missing references)
//IL_009e: Unknown result type (might be due to invalid IL or missing references)
//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
if (!Settings.ClanMembership.Value)
{
return;
}
(EntityQuery, string)[] array = new(EntityQuery, string)[4]
{
(__instance._ClanInviteResponseQuery, "Response"),
(__instance._KickRequestQuery, "Kick"),
(__instance._CreateClanEventQuery, "Create"),
(__instance._LeaveClanEventQuery, "Leave")
};
for (int i = 0; i < array.Length; i++)
{
(EntityQuery, string) tuple = array[i];
EntityQuery item = tuple.Item1;
string item2 = tuple.Item2;
NativeArray<Entity> val = ((EntityQuery)(ref item)).ToEntityArray(AllocatorHandle.op_Implicit((Allocator)2));
Enumerator<Entity> enumerator = val.GetEnumerator();
while (enumerator.MoveNext())
{
Log(enumerator.Current, item2);
}
val.Dispose();
}
}
private static void Log(Entity entity, string type)
{
//IL_0000: Unknown result type (might be due to invalid IL or missing references)
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_0010: Unknown result type (might be due to invalid IL or missing references)
//IL_004f: Unknown result type (might be due to invalid IL or missing references)
//IL_0054: Unknown result type (might be due to invalid IL or missing references)
//IL_0058: Unknown result type (might be due to invalid IL or missing references)
//IL_0061: Unknown result type (might be due to invalid IL or missing references)
//IL_0062: Unknown result type (might be due to invalid IL or missing references)
//IL_0067: Unknown result type (might be due to invalid IL or missing references)
//IL_007e: Unknown result type (might be due to invalid IL or missing references)
//IL_007f: Unknown result type (might be due to invalid IL or missing references)
//IL_00c1: Unknown result type (might be due to invalid IL or missing references)
//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
//IL_01b3: Unknown result type (might be due to invalid IL or missing references)
//IL_01b8: Unknown result type (might be due to invalid IL or missing references)
//IL_01bc: Unknown result type (might be due to invalid IL or missing references)
//IL_0148: Unknown result type (might be due to invalid IL or missing references)
//IL_0149: Unknown result type (might be due to invalid IL or missing references)
//IL_014e: Unknown result type (might be due to invalid IL or missing references)
//IL_0153: Unknown result type (might be due to invalid IL or missing references)
//IL_0158: Unknown result type (might be due to invalid IL or missing references)
//IL_0170: Unknown result type (might be due to invalid IL or missing references)
//IL_0171: Unknown result type (might be due to invalid IL or missing references)
//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
//IL_00e8: Unknown result type (might be due to invalid IL or missing references)
//IL_00ed: Unknown result type (might be due to invalid IL or missing references)
//IL_0105: Unknown result type (might be due to invalid IL or missing references)
//IL_0106: Unknown result type (might be due to invalid IL or missing references)
//IL_01c5: Unknown result type (might be due to invalid IL or missing references)
//IL_01c6: Unknown result type (might be due to invalid IL or missing references)
//IL_01cb: Unknown result type (might be due to invalid IL or missing references)
//IL_029a: Unknown result type (might be due to invalid IL or missing references)
//IL_029f: Unknown result type (might be due to invalid IL or missing references)
//IL_02a3: Unknown result type (might be due to invalid IL or missing references)
//IL_01e7: Unknown result type (might be due to invalid IL or missing references)
//IL_01e8: Unknown result type (might be due to invalid IL or missing references)
//IL_02ac: Unknown result type (might be due to invalid IL or missing references)
//IL_02ad: Unknown result type (might be due to invalid IL or missing references)
//IL_02b2: Unknown result type (might be due to invalid IL or missing references)
//IL_02b4: Unknown result type (might be due to invalid IL or missing references)
//IL_02b5: Unknown result type (might be due to invalid IL or missing references)
//IL_02ba: Unknown result type (might be due to invalid IL or missing references)
//IL_02bf: Unknown result type (might be due to invalid IL or missing references)
//IL_02c4: Unknown result type (might be due to invalid IL or missing references)
//IL_02c6: Unknown result type (might be due to invalid IL or missing references)
//IL_02cb: Unknown result type (might be due to invalid IL or missing references)
//IL_02cf: Unknown result type (might be due to invalid IL or missing references)
//IL_02d0: Unknown result type (might be due to invalid IL or missing references)
//IL_02d5: Unknown result type (might be due to invalid IL or missing references)
//IL_02db: Unknown result type (might be due to invalid IL or missing references)
//IL_02e0: Unknown result type (might be due to invalid IL or missing references)
//IL_02e2: Unknown result type (might be due to invalid IL or missing references)
//IL_02e7: Unknown result type (might be due to invalid IL or missing references)
//IL_02eb: Unknown result type (might be due to invalid IL or missing references)
//IL_02ec: Unknown result type (might be due to invalid IL or missing references)
//IL_02f1: Unknown result type (might be due to invalid IL or missing references)
//IL_02f7: Unknown result type (might be due to invalid IL or missing references)
//IL_02fc: Unknown result type (might be due to invalid IL or missing references)
//IL_0238: Unknown result type (might be due to invalid IL or missing references)
//IL_023a: Unknown result type (might be due to invalid IL or missing references)
//IL_023f: Unknown result type (might be due to invalid IL or missing references)
//IL_0257: 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_0200: Unknown result type (might be due to invalid IL or missing references)
//IL_0207: Expected O, but got Unknown
//IL_0219: Unknown result type (might be due to invalid IL or missing references)
//IL_021a: Unknown result type (might be due to invalid IL or missing references)
//IL_030a: Unknown result type (might be due to invalid IL or missing references)
//IL_0314: Unknown result type (might be due to invalid IL or missing references)
//IL_0324: Unknown result type (might be due to invalid IL or missing references)
//IL_0329: Unknown result type (might be due to invalid IL or missing references)
//IL_032e: Unknown result type (might be due to invalid IL or missing references)
//IL_0333: Unknown result type (might be due to invalid IL or missing references)
//IL_034b: Unknown result type (might be due to invalid IL or missing references)
//IL_034d: Unknown result type (might be due to invalid IL or missing references)
//IL_0384: Unknown result type (might be due to invalid IL or missing references)
//IL_0385: Unknown result type (might be due to invalid IL or missing references)
User val = EntityUtil.Read<User>(EntityUtil.Read<FromCharacter>(entity).User);
EntityManager entityManager;
switch (type)
{
case "Create":
entityManager = Core.EntityManager;
if (((EntityManager)(ref entityManager)).Exists(entity))
{
CreateClan_Request val8 = EntityUtil.Read<CreateClan_Request>(entity);
Logger.Record("Clans", "clan", $"{val.CharacterName} created the \"{((FixedString64Bytes)(ref val8.ClanName)).Value}.\" clan.\n");
}
break;
case "Leave":
entityManager = Core.EntityManager;
if (((EntityManager)(ref entityManager)).Exists(entity))
{
Entity val5 = default(Entity);
if (CastleHeartService.TryGetByID(EntityUtil.Read<LeaveClan>(entity).ClanId, ref val5))
{
ClanTeam val6 = EntityUtil.Read<ClanTeam>(val5);
Logger.Record("Clans", "clan", $"{val.CharacterName} left the \"{((FixedString64Bytes)(ref val6.Name)).Value}\" clan.\n");
}
else
{
ClanTeam val7 = EntityUtil.Read<ClanTeam>(val.ClanEntity._Entity);
Logger.Record("Clans", "clan", $"{val.CharacterName} left the \"{((FixedString64Bytes)(ref val7.Name)).Value}\" clan.\n");
}
}
break;
case "Response":
{
entityManager = Core.EntityManager;
if (!((EntityManager)(ref entityManager)).Exists(entity))
{
break;
}
ClanInviteResponse val9 = EntityUtil.Read<ClanInviteResponse>(entity);
if (!((object)(InviteRequestResponse)(ref val9.Response)).Equals((object)(InviteRequestResponse)1))
{
break;
}
Entity val10 = default(Entity);
if (!CastleHeartService.TryGetByID(val9.ClanId, ref val10))
{
ManualLogSource logInstance = Plugin.LogInstance;
bool flag = default(bool);
BepInExErrorLogInterpolatedStringHandler val11 = new BepInExErrorLogInterpolatedStringHandler(38, 1, ref flag);
if (flag)
{
((BepInExLogInterpolatedStringHandler)val11).AppendLiteral("Couldn't find clan for ");
((BepInExLogInterpolatedStringHandler)val11).AppendFormatted<FixedString64Bytes>(val.CharacterName);
((BepInExLogInterpolatedStringHandler)val11).AppendLiteral(" join response.");
}
logInstance.LogError(val11);
}
else
{
ClanTeam val12 = EntityUtil.Read<ClanTeam>(val10);
Logger.Record("Clans", "clan", $"{val.CharacterName} joined \"{((FixedString64Bytes)(ref val12.Name)).Value}\" clan.\n");
}
break;
}
case "Kick":
{
entityManager = Core.EntityManager;
if (!((EntityManager)(ref entityManager)).Exists(entity))
{
break;
}
Kick_Request val2 = EntityUtil.Read<Kick_Request>(entity);
ClanTeam val3 = EntityUtil.Read<ClanTeam>(val.ClanEntity._Entity);
entityManager = Core.EntityManager;
DynamicBuffer<ClanMemberStatus> buffer = ((EntityManager)(ref entityManager)).GetBuffer<ClanMemberStatus>(val.ClanEntity._Entity, false);
entityManager = Core.EntityManager;
DynamicBuffer<SyncToUserBuffer> buffer2 = ((EntityManager)(ref entityManager)).GetBuffer<SyncToUserBuffer>(val.ClanEntity._Entity, false);
for (int i = 0; i < buffer.Length; i++)
{
if (buffer[i].UserIndex == val2.TargetUserIndex)
{
User val4 = EntityUtil.Read<User>(buffer2[i].UserEntity);
Logger.Record("Clans", "clan", $"{val4.CharacterName} was kicked from \"{((FixedString64Bytes)(ref val3.Name)).Value}\" clan by {val.CharacterName}.\n");
break;
}
}
break;
}
}
}
}
[HarmonyPatch(typeof(ReactToInventoryChangedSystem), "OnUpdate")]
internal class ReactToInventoryChangedPatch
{
public static void Prefix(ReactToInventoryChangedSystem __instance)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Unknown result type (might be due to invalid IL or missing references)
//IL_000a: 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_0014: Unknown result type (might be due to invalid IL or missing references)
//IL_0017: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: Unknown result type (might be due to invalid IL or missing references)
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: Unknown result type (might be due to invalid IL or missing references)
//IL_0045: Unknown result type (might be due to invalid IL or missing references)
//IL_0059: Unknown result type (might be due to invalid IL or missing references)
//IL_005a: Unknown result type (might be due to invalid IL or missing references)
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0064: Unknown result type (might be due to invalid IL or missing references)
//IL_0069: Unknown result type (might be due to invalid IL or missing references)
//IL_006b: Unknown result type (might be due to invalid IL or missing references)
//IL_0077: Unknown result type (might be due to invalid IL or missing references)
//IL_0079: Unknown result type (might be due to invalid IL or missing references)
//IL_007e: Unknown result type (might be due to invalid IL or missing references)
//IL_0080: Unknown result type (might be due to invalid IL or missing references)
//IL_0082: Unknown result type (might be due to invalid IL or missing references)
//IL_0088: Unknown result type (might be due to invalid IL or missing references)
//IL_008a: Unknown result type (might be due to invalid IL or missing references)
//IL_008f: Unknown result type (might be due to invalid IL or missing references)
//IL_0094: Unknown result type (might be due to invalid IL or missing references)
//IL_0099: Unknown result type (might be due to invalid IL or missing references)
//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
//IL_00e9: Unknown result type (might be due to invalid IL or missing references)
//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
//IL_0129: Unknown result type (might be due to invalid IL or missing references)
//IL_014a: Unknown result type (might be due to invalid IL or missing references)
//IL_0168: Unknown result type (might be due to invalid IL or missing references)
//IL_016a: Unknown result type (might be due to invalid IL or missing references)
EntityQuery _query_2096870026_ = __instance.__query_2096870026_0;
NativeArray<Entity> val = ((EntityQuery)(ref _query_2096870026_)).ToEntityArray(AllocatorHandle.op_Implicit((Allocator)2));
try
{
Enumerator<Entity> enumerator = val.GetEnumerator();
InventoryChangedEvent val2 = default(InventoryChangedEvent);
while (enumerator.MoveNext())
{
if (!EntityUtil.TryGetComponent<InventoryChangedEvent>(enumerator.Current, ref val2) || !Settings.BloodTransfer.Value || val2.Item._Value != 862477668)
{
continue;
}
Entity inventoryOwner = EntityUtil.Read<InventoryConnection>(val2.InventoryEntity).InventoryOwner;
if (!EntityUtil.Has<CastleHeart>(inventoryOwner))
{
continue;
}
UserOwner val3 = EntityUtil.Read<UserOwner>(inventoryOwner);
EntityUtil.Read<CastleHeart>(inventoryOwner);
User val4 = EntityUtil.Read<User>(val3.Owner._Entity);
if (((object)(InventoryChangedEventType)(ref val2.ChangeType)).Equals((object)(InventoryChangedEventType)1))
{
Logger.Record("CastleHeart", "blood_transfer", $"{Mathf.Abs(val2.Amount)} Blood Essence has been added to {val4.CharacterName}'s Castle.\n");
}
else if (((object)(InventoryChangedEventType)(ref val2.ChangeType)).Equals((object)(InventoryChangedEventType)0))
{
if (val2.Amount == -1)
{
return;
}
Logger.Record("CastleHeart", "blood_transfer", $"{Mathf.Abs(val2.Amount)} Blood Essence has been removed from {val4.CharacterName}'s Castle.\n");
}
}
val.Dispose();
}
catch (Exception)
{
}
}
}
}