Decompiled source of Better Wisps v1.0.27
plugins/Digitalroot.Valheim.BetterWisps.dll
Decompiled 5 hours ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; 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 System.Threading; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using Digitalroot.Valheim.Common; using Digitalroot.Valheim.Common.Json; using Digitalroot.Valheim.Common.Names.Vanilla; using HarmonyLib; using JetBrains.Annotations; using Jotunn.Managers; using Jotunn.Utils; using SimpleJson; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("Digitalroot.ValheimBetterWisps")] [assembly: AssemblyDescription("Better Wisps")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("Digitalroot Technologies")] [assembly: AssemblyProduct("Digitalroot Valheim Mods")] [assembly: AssemblyCopyright("Copyright © Digitalroot Technologies 2021 - 2024")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("3ccc4dc1-5b17-47c1-b996-ca03b8639a61")] [assembly: AssemblyFileVersion("1.0.27")] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.27.0")] [module: UnverifiableCode] namespace Digitalroot.Valheim.BetterWisps { [BepInPlugin("digitalroot.mods.betterWisps", "Better Wisps", "1.0.27")] [BepInDependency("com.jotunn.jotunn", "2.10.0")] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] public class Main : BaseUnityPlugin, ITraceableLogging { private Harmony _harmony; [UsedImplicitly] public static ConfigEntry<int> NexusId; public static ConfigEntry<float> BaseRange; public static ConfigEntry<float> IncreasedRangePerLevel; public static ConfigEntry<int> MaxLevel; public static ConfigEntry<int> WispsPerLevel; public static ConfigEntry<int> SilverPerLevel; public static Main Instance; public const string Version = "1.0.27"; public const string Name = "Better Wisps"; public const string Guid = "digitalroot.mods.betterWisps"; public const string Namespace = "Digitalroot.ValheimBetterWisps"; public string Source => "Digitalroot.ValheimBetterWisps"; public bool EnableTrace { get; } public Main() { try { Instance = this; EnableTrace = false; Log.Trace(Instance, "Digitalroot.ValheimBetterWisps." + MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name); } catch (Exception ex) { ZLog.LogError((object)ex); } } [UsedImplicitly] private void Awake() { //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_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Expected O, but got Unknown //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Expected O, but got Unknown //IL_00c8: 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_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Expected O, but got Unknown //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Expected O, but got Unknown //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_012e: Unknown result type (might be due to invalid IL or missing references) //IL_013c: Expected O, but got Unknown //IL_013c: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Expected O, but got Unknown //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Unknown result type (might be due to invalid IL or missing references) //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_0189: Unknown result type (might be due to invalid IL or missing references) //IL_0196: Expected O, but got Unknown //IL_0196: Unknown result type (might be due to invalid IL or missing references) //IL_01a0: Expected O, but got Unknown //IL_01cb: Unknown result type (might be due to invalid IL or missing references) //IL_01d0: Unknown result type (might be due to invalid IL or missing references) //IL_01d7: Unknown result type (might be due to invalid IL or missing references) //IL_01e3: Unknown result type (might be due to invalid IL or missing references) //IL_01f0: Expected O, but got Unknown //IL_01f0: Unknown result type (might be due to invalid IL or missing references) //IL_01fa: Expected O, but got Unknown //IL_0226: Unknown result type (might be due to invalid IL or missing references) //IL_022b: Unknown result type (might be due to invalid IL or missing references) //IL_0232: Unknown result type (might be due to invalid IL or missing references) //IL_023e: Unknown result type (might be due to invalid IL or missing references) //IL_024b: Expected O, but got Unknown //IL_024b: Unknown result type (might be due to invalid IL or missing references) //IL_0255: Expected O, but got Unknown try { Log.Trace(Instance, "Digitalroot.ValheimBetterWisps." + MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name); NexusId = ((BaseUnityPlugin)this).Config.Bind<int>("General", "NexusID", 2150, new ConfigDescription("Nexus mod ID for updates", (AcceptableValueBase)null, new object[1] { (object)new ConfigurationManagerAttributes { Browsable = false, ReadOnly = true } })); BaseRange = ((BaseUnityPlugin)this).Config.Bind<float>("General", "Base Range", 15f, new ConfigDescription("Base clear range of the Wisp Light.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 100f), new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true, Order = 11 } })); IncreasedRangePerLevel = ((BaseUnityPlugin)this).Config.Bind<float>("General", "Increased Range Per Level", 5f, new ConfigDescription("How much the clear range is Increased per level of the Wisp Light.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 100f), new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true, Order = 10 } })); MaxLevel = ((BaseUnityPlugin)this).Config.Bind<int>("Advanced", "Max Level", 5, new ConfigDescription("Max level of the Wisp Light.", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 25), new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true, IsAdvanced = true, Order = 4 } })); WispsPerLevel = ((BaseUnityPlugin)this).Config.Bind<int>("Advanced", "Wisps Per Level", 5, new ConfigDescription("Amount of Wisps needed per level.", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 50), new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true, IsAdvanced = true, Order = 3 } })); SilverPerLevel = ((BaseUnityPlugin)this).Config.Bind<int>("Advanced", "Silver Per Level", 10, new ConfigDescription("Amount of Silver needed per level.", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 50), new object[1] { (object)new ConfigurationManagerAttributes { IsAdminOnly = true, IsAdvanced = true, Order = 2 } })); _harmony = Harmony.CreateAndPatchAll(typeof(Main).Assembly, "digitalroot.mods.betterWisps"); ItemManager.OnItemsRegisteredFejd += OnItemsRegisteredFejd; } catch (Exception e) { Log.Error(Instance, e); } } private void OnItemsRegisteredFejd() { try { Log.Trace(Instance, "Digitalroot.ValheimBetterWisps." + MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name); UpdateWisp(); MaxLevel.SettingChanged += UpdateSettings; WispsPerLevel.SettingChanged += UpdateSettings; SilverPerLevel.SettingChanged += UpdateSettings; ItemManager.OnItemsRegisteredFejd -= OnItemsRegisteredFejd; } catch (Exception e) { Log.Error(Instance, e); } } private static void UpdateSettings(object sender, EventArgs e) { try { Log.Trace(Instance, "Digitalroot.ValheimBetterWisps." + MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name); UpdateWisp(); } catch (Exception e2) { Log.Error(Instance, e2); } } [UsedImplicitly] private void OnDestroy() { try { Log.Trace(Instance, "Digitalroot.ValheimBetterWisps." + MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name); Harmony harmony = _harmony; if (harmony != null) { harmony.UnpatchSelf(); } } catch (Exception e) { Log.Error(Instance, e); } } private static void UpdateWisp() { try { Log.Trace(Instance, "Digitalroot.ValheimBetterWisps." + MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name); foreach (Recipe item2 in ObjectDB.instance.m_recipes.Where(delegate(Recipe r) { ItemDrop item = r.m_item; return ((item != null) ? ((Object)item).name : null) == ItemDropNames.Demister; })) { Requirement val = ((IEnumerable<Requirement>)item2.m_resources).FirstOrDefault((Func<Requirement, bool>)((Requirement r) => ((Object)r.m_resItem).name == ItemDropNames.Wisp)); if (val != null) { val.m_amountPerLevel = WispsPerLevel.Value; } Log.Trace(Instance, $"Updated {((Object)item2.m_item).name} of {((Object)item2).name}, set {((val != null) ? ((Object)val.m_resItem).name : null)} m_amountPerLevel to {val?.m_amountPerLevel}"); Requirement val2 = ((IEnumerable<Requirement>)item2.m_resources).FirstOrDefault((Func<Requirement, bool>)((Requirement r) => Object.op_Implicit((Object)(object)(r.m_resItem = Cache.GetPrefab<ItemDrop>(ItemDropNames.Silver))))); if (val2 != null) { val2.m_amountPerLevel = SilverPerLevel.Value; } Log.Trace(Instance, $"Updated {((Object)item2.m_item).name} of {((Object)item2).name}, set {((val2 != null) ? ((Object)val2.m_resItem).name : null)} m_amountPerLevel to {val2?.m_amountPerLevel}"); } GameObject val3 = ((IEnumerable<GameObject>)ObjectDB.instance.m_items).FirstOrDefault((Func<GameObject, bool>)((GameObject i) => ((Object)i).name == ItemDropNames.Demister)); ItemDrop val4 = ((val3 != null) ? val3.GetComponent<ItemDrop>() : null); if (!((Object)(object)val4 == (Object)null)) { val4.m_itemData.m_shared.m_maxQuality = MaxLevel.Value; Log.Trace(Instance, $"Updated {((Object)val3).name} set m_maxQuality to {val4.m_itemData.m_shared.m_maxQuality}"); } } catch (Exception e) { Log.Error(Instance, e); } } } [UsedImplicitly] public class Patch { [UsedImplicitly] [HarmonyPatch(typeof(Demister))] public static class PatchDemisterOnEnable { [HarmonyPostfix] [HarmonyPriority(400)] [HarmonyPatch(typeof(Demister), "OnEnable")] public static void Postfix([NotNull] ref Demister __instance) { try { Log.Trace(Main.Instance, "Digitalroot.ValheimBetterWisps." + MethodBase.GetCurrentMethod()?.DeclaringType?.Name + "." + MethodBase.GetCurrentMethod()?.Name); if (!Utils.IsHeadless() && Utils.IsZNetSceneReady() && Utils.IsPlayerReady()) { ItemData val = ((IEnumerable<ItemData>)((Humanoid)Utils.GetLocalPlayer()).GetInventory().GetEquippedItems()).FirstOrDefault((Func<ItemData, bool>)((ItemData i) => ((Object)i.m_dropPrefab).name == ItemDropNames.Demister)); if (((Behaviour)__instance).isActiveAndEnabled && val != null) { __instance.m_forceField.endRange = Main.BaseRange.Value + Main.IncreasedRangePerLevel.Value * (float)(val.m_quality - 1); Log.Trace(Main.Instance, $"[{MethodBase.GetCurrentMethod()?.DeclaringType?.Name}.{MethodBase.GetCurrentMethod()?.Name}] Updated {((Object)val.m_dropPrefab).name} range to {__instance.m_forceField.endRange}."); } } } catch (Exception e) { Log.Error(Main.Instance, e); } } } } } namespace Digitalroot.Valheim.Common { internal interface ITraceableLogging { string Source { get; } bool EnableTrace { get; } } internal sealed class Log { private static readonly Dictionary<string, TraceLogger> TraceLoggers; [UsedImplicitly] private static Log Instance { get; } static Log() { TraceLoggers = new Dictionary<string, TraceLogger>(); Instance = new Log(); } private Log() { TraceLoggers.Add("Digitalroot", new TraceLogger("Digitalroot", enableTrace: false)); } public static void RegisterSource(ITraceableLogging sender) { if ((!TraceLoggers.ContainsKey(sender.Source) || TraceLoggers[sender.Source].IsTraceEnabled != sender.EnableTrace) && (!TraceLoggers.ContainsKey(sender.Source) || sender.EnableTrace)) { if (TraceLoggers.ContainsKey(sender.Source) && sender.EnableTrace) { TraceLoggers[sender.Source].EnableTrace(); } else { TraceLoggers.Add(sender.Source, new TraceLogger(sender.Source, sender.EnableTrace)); } } } private static TraceLogger GetTraceLogger(ITraceableLogging sender) { if (!TraceLoggers.ContainsKey(sender.Source)) { return TraceLoggers["Digitalroot"]; } return TraceLoggers[sender.Source]; } [UsedImplicitly] public static void SetEnableTrace(ITraceableLogging sender, bool value) { if (value) { GetTraceLogger(sender).EnableTrace(); } else { GetTraceLogger(sender).DisableTrace(); } } [UsedImplicitly] public static void SetEnableTraceForAllLoggers(bool value) { foreach (TraceLogger value2 in TraceLoggers.Values) { if (value) { value2.EnableTrace(); } else { value2.DisableTrace(); } } } [UsedImplicitly] public static void Debug(ITraceableLogging sender, object value) { GetTraceLogger(sender).LoggerRef.LogDebug(value); } [UsedImplicitly] public static void Error(ITraceableLogging sender, Exception e, int i = 1) { Error(sender, "Message: " + e.Message); Error(sender, $"TargetSite: {e.TargetSite}"); Error(sender, "StackTrace: " + e.StackTrace); Error(sender, "Source: " + e.Source); if (e.Data.Count > 0) { foreach (object key in e.Data.Keys) { Error(sender, $"key: {key}, value: {e.Data[key]}"); } } if (e.InnerException != null) { Error(sender, $"--- InnerException [{i}][Start] ---"); Error(sender, e.InnerException, ++i); } } [UsedImplicitly] public static void Error(ITraceableLogging sender, object value) { GetTraceLogger(sender).LoggerRef.LogError(value); } [UsedImplicitly] public static void Info(ITraceableLogging sender, object value) { GetTraceLogger(sender).LoggerRef.LogInfo(value); } [UsedImplicitly] public static void Fatal(ITraceableLogging sender, Exception e, int i = 1) { Fatal(sender, "Message: " + e.Message); Fatal(sender, $"TargetSite: {e.TargetSite}"); Fatal(sender, "StackTrace: " + e.StackTrace); Fatal(sender, "Source: " + e.Source); if (e.Data.Count > 0) { foreach (object key in e.Data.Keys) { Fatal(sender, $"key: {key}, value: {e.Data[key]}"); } } if (e.InnerException != null) { Fatal(sender, $"--- InnerException [{i}][Start] ---"); Fatal(sender, e.InnerException, ++i); } } [UsedImplicitly] public static void Fatal(ITraceableLogging sender, object value) { GetTraceLogger(sender).LoggerRef.LogFatal(value); } [UsedImplicitly] public static void Message(ITraceableLogging sender, object value) { GetTraceLogger(sender).LoggerRef.LogMessage(value); } [UsedImplicitly] public static void Trace(ITraceableLogging sender, object value) { if (GetTraceLogger(sender).IsTraceEnabled || sender.EnableTrace) { GetTraceLogger(sender).LoggerRef.Log((LogLevel)63, value); } } [UsedImplicitly] public static void Warning(ITraceableLogging sender, object value) { GetTraceLogger(sender).LoggerRef.LogWarning(value); } } internal class TraceLogger { internal readonly ManualLogSource LoggerRef; private readonly string _source; private readonly FileInfo _traceFileInfo; public bool IsTraceEnabled { get; private set; } private DirectoryInfo AssemblyDirectory => new FileInfo(Uri.UnescapeDataString(new UriBuilder(Assembly.GetExecutingAssembly().CodeBase).Path)).Directory; public TraceLogger(string source, bool enableTrace) { _source = source; IsTraceEnabled = enableTrace; LoggerRef = Logger.CreateLogSource(_source); _traceFileInfo = new FileInfo(Path.Combine(Paths.BepInExRootPath ?? AssemblyDirectory.FullName, "logs", _source + ".Trace.log")); if (_traceFileInfo.DirectoryName != null) { Directory.CreateDirectory(_traceFileInfo.DirectoryName); } if (_traceFileInfo.Exists) { _traceFileInfo.Delete(); _traceFileInfo.Refresh(); } LoggerRef.LogEvent += OnLogEvent; } public void EnableTrace() { IsTraceEnabled = true; } public void DisableTrace() { IsTraceEnabled = false; } [UsedImplicitly] public void StopTrace() { LoggerRef.LogEvent -= OnLogEvent; } private void OnLogEvent(object sender, LogEventArgs e) { //IL_00b0: 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) if (e.Source.SourceName != _source || !IsTraceEnabled) { return; } using Mutex mutex = new Mutex(initiallyOwned: false, "Digitalroot.Valheim.Common.TraceLogger." + _source); mutex.WaitOne(); try { if (e.Data is string) { string contents = $"[{e.Level,-7}:{e.Source.SourceName,10}] {e.Data}{Environment.NewLine}"; File.AppendAllText(_traceFileInfo.FullName, contents, Encoding.UTF8); } else { string contents2 = $"[{e.Level,-7}:{e.Source.SourceName,10}] {JsonSerializationProvider.Serialize(e.Data)}{Environment.NewLine}"; File.AppendAllText(_traceFileInfo.FullName, contents2, Encoding.UTF8); } } finally { mutex.ReleaseMutex(); } } } } namespace Digitalroot.Valheim.Common.Json { [UsedImplicitly] internal static class JsonSerializationProvider { [Obsolete("Use Deserialize<T>()")] public static T FromJson<T>(string json) { return Deserialize<T>(json); } public static T Deserialize<T>(string json) { return SimpleJson.DeserializeObject<T>(json, (IJsonSerializerStrategy)(object)new DigitalrootJsonSerializerStrategy()); } [Obsolete("Use Serialize()")] public static string ToJson(object obj, bool pretty = false) { return Serialize(obj); } public static string Serialize(object obj) { return SimpleJson.SerializeObject(obj, (IJsonSerializerStrategy)(object)new DigitalrootJsonSerializerStrategy()); } } internal class DigitalrootJsonSerializerStrategy : PocoJsonSerializerStrategy { public override bool TrySerializeNonPrimitiveObject(object input, out object output) { //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_001a: 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_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0034: 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_0050: 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_0062: 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) if (!(input is Vector3 val)) { if (input is Quaternion val2) { output = new float[4] { val2.x, val2.y, val2.z, val2.w }; return true; } return ((PocoJsonSerializerStrategy)this).TrySerializeNonPrimitiveObject(input, ref output); } output = new float[3] { val.x, val.y, val.z }; return true; } public override object DeserializeObject(object value, Type type) { //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) if (type == null) { throw new ArgumentNullException("type"); } if (value == null) { throw new ArgumentNullException("value"); } if (value is string value2) { if (string.IsNullOrWhiteSpace(value2)) { throw new ArgumentNullException("value"); } if (type == typeof(Vector3)) { if (!(((PocoJsonSerializerStrategy)this).DeserializeObject(value, typeof(float[])) is float[] array) || (array != null && array.Length != 3)) { throw new ArgumentException(string.Format("The value '{0}' can be converted to a {1}.", value, "Vector3"), "value"); } return (object)new Vector3(array[0], array[1], array[2]); } if (type == typeof(Quaternion)) { if (!(((PocoJsonSerializerStrategy)this).DeserializeObject(value, typeof(float[])) is float[] array2) || (array2 != null && array2.Length != 4)) { throw new ArgumentException(string.Format("The value '{0}' can be converted to a {1}.", value, "Quaternion"), "value"); } return (object)new Quaternion(array2[0], array2[1], array2[2], array2[3]); } return ((PocoJsonSerializerStrategy)this).DeserializeObject(value, type); } throw new ArgumentException($"The value '{value}' can be converted to a {type.Name}.", "value"); } } } namespace Digitalroot.Valheim.Common.Names.Vanilla { internal static class ItemDropNames { public static readonly IEnumerable<string> AllNames = Utils.AllNames(typeof(ItemDropNames)); public static string Acorn = PrefabNames.Acorn; public static string Amber = PrefabNames.Amber; public static string AmberPearl = PrefabNames.AmberPearl; public static string AncientSkull = PrefabNames.AncientSkull; public static string AncientSeed = PrefabNames.AncientSeed; public static string ArmorCarapaceChest = PrefabNames.ArmorCarapaceChest; public static string ArmorCarapaceLegs = PrefabNames.ArmorCarapaceLegs; public static string ArmorBronzeChest = PrefabNames.ArmorBronzeChest; public static string ArmorBronzeLegs = PrefabNames.ArmorBronzeLegs; public static string ArmorIronChest = PrefabNames.ArmorIronChest; public static string ArmorIronLegs = PrefabNames.ArmorIronLegs; public static string ArmorMageChest = PrefabNames.ArmorMageChest; public static string ArmorMageLegs = PrefabNames.ArmorMageLegs; public static string ArmorLeatherChest = PrefabNames.ArmorLeatherChest; public static string ArmorLeatherLegs = PrefabNames.ArmorLeatherLegs; public static string ArmorPaddedCuirass = PrefabNames.ArmorPaddedCuirass; public static string ArmorPaddedGreaves = PrefabNames.ArmorPaddedGreaves; public static string ArmorRagsChest = PrefabNames.ArmorRagsChest; public static string ArmorRagsLegs = PrefabNames.ArmorRagsLegs; public static string ArmorRootChest = PrefabNames.ArmorRootChest; public static string ArmorRootLegs = PrefabNames.ArmorRootLegs; public static string ArmorTrollLeatherChest = PrefabNames.ArmorTrollLeatherChest; public static string ArmorTrollLeatherLegs = PrefabNames.ArmorTrollLeatherLegs; public static string ArmorWolfChest = PrefabNames.ArmorWolfChest; public static string ArmorWolfLegs = PrefabNames.ArmorWolfLegs; public static string ArrowBronze = PrefabNames.ArrowBronze; public static string ArrowCarapace = PrefabNames.ArrowCarapace; public static string ArrowFire = PrefabNames.ArrowFire; public static string ArrowFlint = PrefabNames.ArrowFlint; public static string ArrowFrost = PrefabNames.ArrowFrost; public static string ArrowIron = PrefabNames.ArrowIron; public static string ArrowNeedle = PrefabNames.ArrowNeedle; public static string ArrowObsidian = PrefabNames.ArrowObsidian; public static string ArrowPoison = PrefabNames.ArrowPoison; public static string ArrowSilver = PrefabNames.ArrowSilver; public static string ArrowWood = PrefabNames.ArrowWood; public static string AtgeirBlackmetal = PrefabNames.AtgeirBlackmetal; public static string AtgeirBronze = PrefabNames.AtgeirBronze; public static string AtgeirHimminAfl = PrefabNames.AtgeirHimminAfl; public static string AtgeirIron = PrefabNames.AtgeirIron; public static string AxeBlackMetal = PrefabNames.AxeBlackMetal; public static string AxeBronze = PrefabNames.AxeBronze; public static string AxeFlint = PrefabNames.AxeFlint; public static string AxeIron = PrefabNames.AxeIron; public static string AxeJotunBane = PrefabNames.AxeJotunBane; public static string AxeStone = PrefabNames.AxeStone; public static string Barley = PrefabNames.Barley; public static string BarleyFlour = PrefabNames.BarleyFlour; public static string BarleyWine = PrefabNames.BarleyWine; public static string BarleyWineBase = PrefabNames.BarleyWineBase; public static string Battleaxe = PrefabNames.Battleaxe; public static string BattleaxeCrystal = PrefabNames.BattleaxeCrystal; public static string BeechSeeds = PrefabNames.BeechSeeds; public static string BeltStrength = PrefabNames.BeltStrength; public static string Bilebag = PrefabNames.Bilebag; public static string BirchSeeds = PrefabNames.BirchSeeds; public static string BlackCore = PrefabNames.BlackCore; public static string BlackMarble = PrefabNames.BlackMarble; public static string BlackMetal = PrefabNames.BlackMetal; public static string BlackMetalScrap = PrefabNames.BlackMetalScrap; public static string BlackSoup = PrefabNames.BlackSoup; public static string Bloodbag = PrefabNames.Bloodbag; public static string BloodPudding = PrefabNames.BloodPudding; public static string Blueberries = PrefabNames.Blueberries; public static string BoarJerky = PrefabNames.BoarJerky; public static string BoltBlackmetal = PrefabNames.BoltBlackmetal; public static string BoltBone = PrefabNames.BoltBone; public static string BoltCarapace = PrefabNames.BoltCarapace; public static string BoltIron = PrefabNames.BoltIron; public static string BombBile = PrefabNames.BombBile; public static string BombOoze = PrefabNames.BombOoze; public static string BoneFragments = PrefabNames.BoneFragments; public static string Bow = PrefabNames.Bow; public static string BowDraugrFang = PrefabNames.BowDraugrFang; public static string BowFineWood = PrefabNames.BowFineWood; public static string BowHuntsman = PrefabNames.BowHuntsman; public static string BowSpineSnap = PrefabNames.BowSpineSnap; public static string Bread = PrefabNames.Bread; public static string BreadDough = PrefabNames.BreadDough; public static string Bronze = PrefabNames.Bronze; public static string BronzeNails = PrefabNames.BronzeNails; public static string BronzeScrap = PrefabNames.BronzeScrap; public static string BugMeat = PrefabNames.BugMeat; public static string CapeDeerHide = PrefabNames.CapeDeerHide; public static string CapeFeather = PrefabNames.CapeFeather; public static string CapeLinen = PrefabNames.CapeLinen; public static string CapeLox = PrefabNames.CapeLox; public static string CapeOdin = PrefabNames.CapeOdin; public static string CapeTest = PrefabNames.CapeTest; public static string CapeTrollHide = PrefabNames.CapeTrollHide; public static string CapeWolf = PrefabNames.CapeWolf; public static string Carapace = PrefabNames.Carapace; public static string Carrot = PrefabNames.Carrot; public static string CarrotSeeds = PrefabNames.CarrotSeeds; public static string CarrotSoup = PrefabNames.CarrotSoup; public static string Chain = PrefabNames.Chain; public static string Chicken = PrefabNames.Chicken; public static string ChickenEgg = PrefabNames.ChickenEgg; public static string ChickenMeat = PrefabNames.ChickenMeat; public static string Chitin = PrefabNames.Chitin; public static string Cloudberry = PrefabNames.Cloudberry; public static string Club = PrefabNames.Club; public static string Coal = PrefabNames.Coal; public static string Coins = PrefabNames.Coins; public static string CookedBugMeat = PrefabNames.CookedBugMeat; public static string CookedChickenMeat = PrefabNames.CookedChickenMeat; public static string CookedDeerMeat = PrefabNames.CookedDeerMeat; public static string CookedEgg = PrefabNames.CookedEgg; public static string CookedHareMeat = PrefabNames.CookedHareMeat; public static string CookedLoxMeat = PrefabNames.CookedLoxMeat; public static string CookedWolfMeat = PrefabNames.CookedWolfMeat; public static string CookedMeat = PrefabNames.CookedMeat; public static string Copper = PrefabNames.Copper; public static string CopperOre = PrefabNames.CopperOre; public static string CopperScrap = PrefabNames.CopperScrap; public static string CrossbowArbalest = PrefabNames.CrossbowArbalest; public static string CryptKey = PrefabNames.CryptKey; public static string Crystal = PrefabNames.Crystal; public static string Cultivator = PrefabNames.Cultivator; public static string Dandelion = PrefabNames.Dandelion; public static string DeerHide = PrefabNames.DeerHide; public static string DeerMeat = PrefabNames.DeerMeat; public static string DeerStew = PrefabNames.DeerStew; public static string Demister = PrefabNames.Demister; public static string DragonEgg = PrefabNames.DragonEgg; public static string DragonTear = PrefabNames.DragonTear; public static string DvergrKey = PrefabNames.DvergrKey; public static string DvergrKeyFragment = PrefabNames.DvergrKeyFragment; public static string DvergrNeedle = PrefabNames.DvergrNeedle; public static string Eitr = PrefabNames.Eitr; public static string ElderBark = PrefabNames.ElderBark; public static string Entrails = PrefabNames.Entrails; public static string Eyescream = PrefabNames.Eyescream; public static string Feathers = PrefabNames.Feathers; public static string FineWood = PrefabNames.FineWood; public static string FirCone = PrefabNames.FirCone; public static string FishAndBread = PrefabNames.FishAndBread; public static string FishAndBreadUncooked = PrefabNames.FishAndBreadUncooked; public static string FishAnglerRaw = PrefabNames.FishAnglerRaw; public static string FishCooked = PrefabNames.FishCooked; public static string FishingBait = PrefabNames.FishingBait; public static string FishingBaitAshlands = PrefabNames.FishingBaitAshlands; public static string FishingBaitCave = PrefabNames.FishingBaitCave; public static string FishingBaitDeepNorth = PrefabNames.FishingBaitDeepNorth; public static string FishingBaitForest = PrefabNames.FishingBaitForest; public static string FishingBaitMistlands = PrefabNames.FishingBaitMistlands; public static string FishingBaitOcean = PrefabNames.FishingBaitOcean; public static string FishingBaitPlains = PrefabNames.FishingBaitPlains; public static string FishingBaitSwamp = PrefabNames.FishingBaitSwamp; public static string FishingRod = PrefabNames.FishingRod; public static string FishRaw = PrefabNames.FishRaw; public static string FishWraps = PrefabNames.FishWraps; public static string Flametal = PrefabNames.Flametal; public static string FlametalOre = PrefabNames.FlametalOre; public static string Flax = PrefabNames.Flax; public static string Flint = PrefabNames.Flint; public static string FreezeGland = PrefabNames.FreezeGland; public static string GiantBloodSack = PrefabNames.GiantBloodSack; public static string GoblinTotem = PrefabNames.GoblinTotem; public static string GreydwarfEye = PrefabNames.GreydwarfEye; public static string Guck = PrefabNames.Guck; public static string Hammer = PrefabNames.Hammer; public static string HareMeat = PrefabNames.HareMeat; public static string HardAntler = PrefabNames.HardAntler; public static string HelmetBronze = PrefabNames.HelmetBronze; public static string HelmetCarapace = PrefabNames.HelmetCarapace; public static string HelmetDrake = PrefabNames.HelmetDrake; public static string HelmetDverger = PrefabNames.HelmetDverger; public static string HelmetIron = PrefabNames.HelmetIron; public static string HelmetLeather = PrefabNames.HelmetLeather; public static string HelmetMage = PrefabNames.HelmetMage; public static string HelmetOdin = PrefabNames.HelmetOdin; public static string HelmetPadded = PrefabNames.HelmetPadded; public static string HelmetRoot = PrefabNames.HelmetRoot; public static string HelmetTrollLeather = PrefabNames.HelmetTrollLeather; public static string HelmetYule = PrefabNames.HelmetYule; public static string Hoe = PrefabNames.Hoe; public static string Honey = PrefabNames.Honey; public static string HoneyGlazedChicken = PrefabNames.HoneyGlazedChicken; public static string HoneyGlazedChickenUncooked = PrefabNames.HoneyGlazedChickenUncooked; public static string Iron = PrefabNames.Iron; public static string IronNails = PrefabNames.IronNails; public static string IronOre = PrefabNames.IronOre; public static string IronScrap = PrefabNames.IronScrap; public static string JuteBlue = PrefabNames.JuteBlue; public static string JuteRed = PrefabNames.JuteRed; public static string KnifeBlackMetal = PrefabNames.KnifeBlackMetal; public static string KnifeButcher = PrefabNames.KnifeButcher; public static string KnifeChitin = PrefabNames.KnifeChitin; public static string KnifeCopper = PrefabNames.KnifeCopper; public static string KnifeFlint = PrefabNames.KnifeFlint; public static string KnifeSilver = PrefabNames.KnifeSilver; public static string KnifeSkollAndHati = PrefabNames.KnifeSkollAndHati; public static string Lantern = PrefabNames.Lantern; public static string Larva = PrefabNames.Larva; public static string LeatherScraps = PrefabNames.LeatherScraps; public static string LinenThread = PrefabNames.LinenThread; public static string LoxMeat = PrefabNames.LoxMeat; public static string LoxPelt = PrefabNames.LoxPelt; public static string LoxPie = PrefabNames.LoxPie; public static string LoxPieUncooked = PrefabNames.LoxPieUncooked; public static string MaceBronze = PrefabNames.MaceBronze; public static string MaceIron = PrefabNames.MaceIron; public static string MaceNeedle = PrefabNames.MaceNeedle; public static string MaceSilver = PrefabNames.MaceSilver; public static string MagicallyStuffedShroom = PrefabNames.MagicallyStuffedShroom; public static string MagicallyStuffedShroomUncooked = PrefabNames.MagicallyStuffedShroomUncooked; public static string Mandible = PrefabNames.Mandible; public static string MeadBaseEitrMinor = PrefabNames.MeadBaseEitrMinor; public static string MeadBaseFrostResist = PrefabNames.MeadBaseFrostResist; public static string MeadBaseHealthMajor = PrefabNames.MeadBaseHealthMajor; public static string MeadBaseHealthMedium = PrefabNames.MeadBaseHealthMedium; public static string MeadBaseHealthMinor = PrefabNames.MeadBaseHealthMinor; public static string MeadBasePoisonResist = PrefabNames.MeadBasePoisonResist; public static string MeadBaseStaminaLingering = PrefabNames.MeadBaseStaminaLingering; public static string MeadBaseStaminaMedium = PrefabNames.MeadBaseStaminaMedium; public static string MeadBaseStaminaMinor = PrefabNames.MeadBaseStaminaMinor; public static string MeadBaseTasty = PrefabNames.MeadBaseTasty; public static string MeadEitrMinor = PrefabNames.MeadEitrMinor; public static string MeadFrostResist = PrefabNames.MeadFrostResist; public static string MeadHealthMedium = PrefabNames.MeadHealthMedium; public static string MeadHealthMinor = PrefabNames.MeadHealthMinor; public static string MeadPoisonResist = PrefabNames.MeadPoisonResist; public static string MeadStaminaLingering = PrefabNames.MeadStaminaLingering; public static string MeadStaminaMedium = PrefabNames.MeadStaminaMedium; public static string MeadStaminaMinor = PrefabNames.MeadStaminaMinor; public static string MeadTasty = PrefabNames.MeadTasty; public static string MeatPlatter = PrefabNames.MeatPlatter; public static string MeatPlatterUncooked = PrefabNames.MeatPlatterUncooked; public static string MechanicalSpring = PrefabNames.MechanicalSpring; public static string MinceMeatSauce = PrefabNames.MinceMeatSauce; public static string MisthareSupreme = PrefabNames.MisthareSupreme; public static string MisthareSupremeUncooked = PrefabNames.MisthareSupremeUncooked; public static string MistileKamikaze = PrefabNames.MistileKamikaze; public static string Mushroom = PrefabNames.Mushroom; public static string MushroomBlue = PrefabNames.MushroomBlue; public static string MushroomJotunPuffs = PrefabNames.MushroomJotunPuffs; public static string MushroomMagecap = PrefabNames.MushroomMagecap; public static string MushroomOmelette = PrefabNames.MushroomOmelette; public static string MushroomYellow = PrefabNames.MushroomYellow; public static string NeckTail = PrefabNames.NeckTail; public static string NeckTailGrilled = PrefabNames.NeckTailGrilled; public static string Needle = PrefabNames.Needle; public static string Obsidian = PrefabNames.Obsidian; public static string Onion = PrefabNames.Onion; public static string OnionSeeds = PrefabNames.OnionSeeds; public static string OnionSoup = PrefabNames.OnionSoup; public static string Ooze = PrefabNames.Ooze; public static string PickaxeAntler = PrefabNames.PickaxeAntler; public static string PickaxeBronze = PrefabNames.PickaxeBronze; public static string PickaxeIron = PrefabNames.PickaxeIron; public static string PickaxeStone = PrefabNames.PickaxeStone; public static string PineCone = PrefabNames.PineCone; public static string PukeBerries = PrefabNames.Pukeberries; public static string QueenBee = PrefabNames.QueenBee; public static string QueenDrop = PrefabNames.QueenDrop; public static string QueensJam = PrefabNames.QueensJam; public static string Raspberry = PrefabNames.Raspberry; public static string RawMeat = PrefabNames.RawMeat; public static string Resin = PrefabNames.Resin; public static string RoundLog = PrefabNames.RoundLog; public static string RoyalJelly = PrefabNames.RoyalJelly; public static string Ruby = PrefabNames.Ruby; public static string SaddleLox = PrefabNames.SaddleLox; public static string Salad = PrefabNames.Salad; public static string Sap = PrefabNames.Sap; public static string Sausages = PrefabNames.Sausages; public static string ScaleHide = PrefabNames.ScaleHide; public static string SerpentMeat = PrefabNames.SerpentMeat; public static string SerpentMeatCooked = PrefabNames.SerpentMeatCooked; public static string SerpentScale = PrefabNames.SerpentScale; public static string SerpentStew = PrefabNames.SerpentStew; public static string SharpeningStone = PrefabNames.SharpeningStone; public static string ShieldBanded = PrefabNames.ShieldBanded; public static string ShieldBlackmetal = PrefabNames.ShieldBlackmetal; public static string ShieldBlackmetalTower = PrefabNames.ShieldBlackmetalTower; public static string ShieldBoneTower = PrefabNames.ShieldBoneTower; public static string ShieldBronzeBuckler = PrefabNames.ShieldBronzeBuckler; public static string ShieldCarapace = PrefabNames.ShieldCarapace; public static string ShieldCarapaceBuckler = PrefabNames.ShieldCarapaceBuckler; public static string ShieldIronBuckler = PrefabNames.ShieldIronBuckler; public static string ShieldIronSquare = PrefabNames.ShieldIronSquare; public static string ShieldIronTower = PrefabNames.ShieldIronTower; public static string ShieldKnight = PrefabNames.ShieldKnight; public static string ShieldSerpentscale = PrefabNames.ShieldSerpentscale; public static string ShieldSilver = PrefabNames.ShieldSilver; public static string ShieldWood = PrefabNames.ShieldWood; public static string ShieldWoodTower = PrefabNames.ShieldWoodTower; public static string ShocklateSmoothie = PrefabNames.ShocklateSmoothie; public static string Silver = PrefabNames.Silver; public static string SilverNecklace = PrefabNames.SilverNecklace; public static string SilverOre = PrefabNames.SilverOre; public static string SledgeCheat = PrefabNames.SledgeCheat; public static string SledgeDemolisher = PrefabNames.SledgeDemolisher; public static string SledgeIron = PrefabNames.SledgeIron; public static string SledgeStagbreaker = PrefabNames.SledgeStagbreaker; public static string Softtissue = PrefabNames.Softtissue; public static string SpearBronze = PrefabNames.SpearBronze; public static string SpearChitin = PrefabNames.SpearChitin; public static string SpearElderbark = PrefabNames.SpearElderbark; public static string SpearFlint = PrefabNames.SpearFlint; public static string SpearWolfFang = PrefabNames.SpearWolfFang; public static string StaffFireball = PrefabNames.StaffFireball; public static string StaffIceShards = PrefabNames.StaffIceShards; public static string StaffShield = PrefabNames.StaffShield; public static string StaffSkeleton = PrefabNames.StaffSkeleton; public static string Stone = PrefabNames.Stone; public static string SurtlingCore = PrefabNames.SurtlingCore; public static string SwordBlackmetal = PrefabNames.SwordBlackmetal; public static string SwordBronze = PrefabNames.SwordBronze; public static string SwordCheat = PrefabNames.SwordCheat; public static string SwordIron = PrefabNames.SwordIron; public static string SwordIronFire = PrefabNames.SwordIronFire; public static string SwordMistwalker = PrefabNames.SwordMistwalker; public static string SwordSilver = PrefabNames.SwordSilver; public static string Tankard = PrefabNames.Tankard; public static string TankardDvergr = PrefabNames.TankardDvergr; public static string TankardAnniversary = PrefabNames.TankardAnniversary; public static string TankardOdin = PrefabNames.TankardOdin; public static string Tar = PrefabNames.Tar; public static string ThSwordKrom = PrefabNames.ThSwordKrom; public static string Thistle = PrefabNames.Thistle; public static string Thunderstone = PrefabNames.Thunderstone; public static string Tin = PrefabNames.Tin; public static string TinOre = PrefabNames.TinOre; public static string Torch = PrefabNames.Torch; public static string TorchMist = PrefabNames.TorchMist; public static string TrollHide = PrefabNames.TrollHide; public static string TrophyAbomination = PrefabNames.TrophyAbomination; public static string TrophyBlob = PrefabNames.TrophyBlob; public static string TrophyBoar = PrefabNames.TrophyBoar; public static string TrophyBonemass = PrefabNames.TrophyBonemass; public static string TrophyDeathsquito = PrefabNames.TrophyDeathsquito; public static string TrophyDeer = PrefabNames.TrophyDeer; public static string TrophyDragonQueen = PrefabNames.TrophyDragonQueen; public static string TrophyDraugr = PrefabNames.TrophyDraugr; public static string TrophyDraugrElite = PrefabNames.TrophyDraugrElite; public static string TrophyDraugrFem = PrefabNames.TrophyDraugrFem; public static string TrophyDvergr = PrefabNames.TrophyDvergr; public static string TrophyEikthyr = PrefabNames.TrophyEikthyr; public static string TrophyFenring = PrefabNames.TrophyFenring; public static string TrophyForestTroll = PrefabNames.TrophyForestTroll; public static string TrophyFrostTroll = PrefabNames.TrophyFrostTroll; public static string TrophyGjall = PrefabNames.TrophyGjall; public static string TrophyGoblin = PrefabNames.TrophyGoblin; public static string TrophyGoblinBrute = PrefabNames.TrophyGoblinBrute; public static string TrophyGoblinKing = PrefabNames.TrophyGoblinKing; public static string TrophyGoblinShaman = PrefabNames.TrophyGoblinShaman; public static string TrophyGreydwarf = PrefabNames.TrophyGreydwarf; public static string TrophyGreydwarfBrute = PrefabNames.TrophyGreydwarfBrute; public static string TrophyGreydwarfShaman = PrefabNames.TrophyGreydwarfShaman; public static string TrophyGrowth = PrefabNames.TrophyGrowth; public static string TrophyHare = PrefabNames.TrophyHare; public static string TrophyHatchling = PrefabNames.TrophyHatchling; public static string TrophyLeech = PrefabNames.TrophyLeech; public static string TrophyLox = PrefabNames.TrophyLox; public static string TrophyNeck = PrefabNames.TrophyNeck; public static string TrophySeeker = PrefabNames.TrophySeeker; public static string TrophySeekerBrute = PrefabNames.TrophySeekerBrute; public static string TrophySeekerQueen = PrefabNames.TrophySeekerQueen; public static string TrophySerpent = PrefabNames.TrophySerpent; public static string TrophySGolem = PrefabNames.TrophySGolem; public static string TrophySkeleton = PrefabNames.TrophySkeleton; public static string TrophySkeletonPoison = PrefabNames.TrophySkeletonPoison; public static string TrophySurtling = PrefabNames.TrophySurtling; public static string TrophyTheElder = PrefabNames.TrophyTheElder; public static string TrophyTick = PrefabNames.TrophyTick; public static string TrophyWolf = PrefabNames.TrophyWolf; public static string TrophyWraith = PrefabNames.TrophyWraith; public static string Turnip = PrefabNames.Turnip; public static string TurnipSeeds = PrefabNames.TurnipSeeds; public static string TurnipStew = PrefabNames.TurnipStew; public static string TurretBolt = PrefabNames.TurretBolt; public static string TurretBoltWood = PrefabNames.TurretBoltWood; public static string VegvisirShardBonemass = PrefabNames.VegvisirShardBonemass; public static string Wishbone = PrefabNames.Wishbone; public static string Wisp = PrefabNames.Wisp; public static string WitheredBone = PrefabNames.WitheredBone; public static string WolfFang = PrefabNames.WolfFang; public static string WolfJerky = PrefabNames.WolfJerky; public static string WolfMeat = PrefabNames.WolfMeat; public static string WolfMeatSkewer = PrefabNames.WolfMeatSkewer; public static string WolfPelt = PrefabNames.WolfPelt; public static string Wood = PrefabNames.Wood; public static string YagluthDrop = PrefabNames.YagluthDrop; public static string YggdrasilPorridge = PrefabNames.YggdrasilPorridge; public static string YggdrasilWood = PrefabNames.YggdrasilWood; public static string YmirRemains = PrefabNames.YmirRemains; } } namespace Digitalroot.Valheim.Common { internal static class Utils { private static readonly ITraceableLogging Logger = GetLogger(); [UsedImplicitly] public static DirectoryInfo AssemblyDirectory => new FileInfo(Uri.UnescapeDataString(new UriBuilder(Assembly.GetExecutingAssembly().CodeBase).Path)).Directory; [UsedImplicitly] public static bool IsDedicated => ZNet.instance.IsDedicated(); [UsedImplicitly] public static bool IsServer => ZNet.instance.IsServer(); public static bool IsRunningFromNUnit => AppDomain.CurrentDomain.GetAssemblies().Any((Assembly a) => a.FullName.ToLowerInvariant().StartsWith("nunit.framework")); public static string Namespace => "Digitalroot.Valheim.Common"; private static ITraceableLogging GetLogger() { return new StaticSourceLogger(); } [UsedImplicitly] public static bool IsHeadless() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Invalid comparison between Unknown and I4 return (int)SystemInfo.graphicsDeviceType == 4; } [UsedImplicitly] public static List<T> AllOf<T>() { return Enum.GetValues(typeof(T)).OfType<T>().ToList(); } [UsedImplicitly] public static IEnumerable<string> AllNames(Type type) { foreach (FieldInfo item in from f1 in type.GetFields() where f1.FieldType == typeof(string) select f1) { yield return item.GetValue(null).ToString(); } } [UsedImplicitly] public static bool DoesPluginExist(string pluginGuid) { return Chainloader.PluginInfos.Any((KeyValuePair<string, PluginInfo> keyValuePair) => keyValuePair.Value.Metadata.GUID == pluginGuid); } [UsedImplicitly] public static Vector3 GetGroundHeight(int x, int z) { //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) return Utils.GetGroundHeight(new Vector3Int(x, 500, z)); } [UsedImplicitly] public static Vector3 GetGroundHeight(float x, float z) { //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) return Utils.GetGroundHeight(new Vector3(x, 500f, z)); } public static Vector3 GetGroundHeight(Vector3Int vector3) { //IL_000d: 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_0020: Unknown result type (might be due to invalid IL or missing references) return new Vector3((float)((Vector3Int)(ref vector3)).x, ZoneSystem.instance.GetGroundHeight(Vector3Int.op_Implicit(vector3)), (float)((Vector3Int)(ref vector3)).z); } public static Vector3 GetGroundHeight(Vector3 vector3) { //IL_0000: 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_0011: 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) return new Vector3(vector3.x, ZoneSystem.instance.GetGroundHeight(vector3), vector3.z); } [UsedImplicitly] public static GameObject GetItemPrefab(string itemName) { if (!IsObjectDBReady()) { return null; } return GetObjectDB().GetItemPrefab(itemName); } [UsedImplicitly] public static GameObject GetItemPrefab(int hash) { if (!IsObjectDBReady()) { return null; } return GetObjectDB().GetItemPrefab(hash); } [UsedImplicitly] public static Player GetLocalPlayer() { return Player.m_localPlayer; } [UsedImplicitly] public static Vector3 GetLocalPlayersPosition() { //IL_000a: Unknown result type (might be due to invalid IL or missing references) return ((Component)Player.m_localPlayer).transform.position; } [UsedImplicitly] public static ObjectDB GetObjectDB() { return ObjectDB.instance; } [UsedImplicitly] public static string GetPluginPath(Type modPluginType) { return Path.GetDirectoryName(modPluginType.Assembly.Location); } [UsedImplicitly] public static GameObject GetPrefab(string itemName) { if (!IsZNetSceneReady()) { return null; } return ZNetScene.instance.GetPrefab(itemName); } [UsedImplicitly] public static GameObject GetPrefab(int hash) { if (!IsZNetSceneReady()) { return null; } return ZNetScene.instance.GetPrefab(hash); } [UsedImplicitly] public static T GetPrivateField<T>(object instance, string name) { FieldInfo field = instance.GetType().GetField(name, BindingFlags.Instance | BindingFlags.NonPublic); if (field != null) { return (T)field.GetValue(instance); } Log.Error(Logger, "Variable " + name + " does not exist on type: " + instance.GetType()); return default(T); } [UsedImplicitly] public static object InvokePrivate(object instance, string name, object[] args = null) { MethodInfo method = instance.GetType().GetMethod(name, BindingFlags.Instance | BindingFlags.NonPublic); if (method == null) { Type[] types = ((args == null) ? Type.EmptyTypes : args.Select((object arg) => arg.GetType()).ToArray()); method = instance.GetType().GetMethod(name, types); } if (method == null) { Log.Error(Logger, "Method " + name + " does not exist on type: " + instance.GetType()); return null; } return method.Invoke(instance, args); } [UsedImplicitly] public static bool IsGameInMainScene() { return (Object)(object)ZNetScene.instance != (Object)null; } [UsedImplicitly] public static bool IsObjectDBReady() { if (!((Object)(object)GetObjectDB() != (Object)null) || GetObjectDB().m_items.Count == 0 || !((Object)(object)GetItemPrefab("Amber") != (Object)null)) { return IsRunningFromNUnit; } return true; } [UsedImplicitly] public static bool IsPlayerReady() { return (Object)(object)GetLocalPlayer() != (Object)null; } [UsedImplicitly] public static bool IsZNetSceneReady() { if ((Object)(object)ZNetScene.instance != (Object)null) { List<GameObject> list = ZNetScene.instance?.m_prefabs; if (list != null) { return list.Count > 0; } return false; } return false; } [UsedImplicitly] public static bool IsZNetReady() { return (Object)(object)ZNet.instance != (Object)null; } [UsedImplicitly] public static string Localize(string value) { return Localization.instance.Localize(value); } [UsedImplicitly] public static Vector3 GetStartTemplesPosition() { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) LocationInstance val = default(LocationInstance); if (ZoneSystem.instance.FindClosestLocation("StartTemple", Vector3.zero, ref val)) { Log.Trace(Logger, $"[GetStartTemplesPosition] StartTemple at {val.m_position}"); return val.m_position; } Log.Error(Logger, "[GetStartTemplesPosition] Can't find StartTemple"); return Vector3.zero; } [UsedImplicitly] public static void SetPrivateField(object instance, string name, object value) { FieldInfo field = instance.GetType().GetField(name, BindingFlags.Instance | BindingFlags.NonPublic); if (field == null) { Log.Error(Logger, "Variable " + name + " does not exist on type: " + instance.GetType()); } else { field.SetValue(instance, value); } } [UsedImplicitly] public static GameObject Spawn([NotNull] string prefabName, Vector3 location, [CanBeNull] Transform parent = null) { //IL_0044: 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) Log.Trace(Logger, $"{Namespace}.{MethodBase.GetCurrentMethod().DeclaringType?.Name}.{MethodBase.GetCurrentMethod().Name}({prefabName}, {location}, {((parent != null) ? ((Object)parent).name : null)})"); GameObject itemPrefab = ObjectDB.instance.GetItemPrefab(StringExtensionMethods.GetStableHashCode(prefabName)); if (!((Object)(object)itemPrefab == (Object)null)) { return Spawn(itemPrefab, location, parent); } return null; } [UsedImplicitly] public static GameObject Spawn([NotNull] GameObject prefab, Vector3 location, [CanBeNull] Transform parent = null) { //IL_0049: 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_0081: 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) Log.Trace(Logger, $"{Namespace}.{MethodBase.GetCurrentMethod().DeclaringType?.Name}.{MethodBase.GetCurrentMethod().Name}({((Object)prefab).name}, {location}, {((parent != null) ? ((Object)parent).name : null)})"); if ((Object)(object)parent == (Object)null) { return Object.Instantiate<GameObject>(prefab, location, Quaternion.identity); } return Object.Instantiate<GameObject>(prefab, location, Quaternion.identity, parent); } public static AssetBundle LoadAssetBundleFromResources(string bundleName, Assembly resourceAssembly) { if (resourceAssembly == null) { throw new ArgumentNullException("resourceAssembly"); } string text = null; try { text = resourceAssembly.GetManifestResourceNames().Single((string str) => str.EndsWith(bundleName)); } catch (Exception) { } if (text == null) { Log.Error(Logger, "AssetBundle " + bundleName + " not found in assembly manifest"); return null; } using Stream stream = resourceAssembly.GetManifestResourceStream(text); return AssetBundle.LoadFromStream(stream); } } } namespace Digitalroot.Valheim.Common.Names.Vanilla { internal static class PrefabNames { public static readonly IEnumerable<string> AllNames = Utils.AllNames(typeof(PrefabNames)); public static readonly string EventzoneBossBase = "_eventzone_boss_base"; public static readonly string TerrainCompiler = "_TerrainCompiler"; public static readonly string ZoneCtrl = "_ZoneCtrl"; public static readonly string AbandonedLogCabin02 = "AbandonedLogCabin02"; public static readonly string AbandonedLogCabin03 = "AbandonedLogCabin03"; public static readonly string AbandonedLogCabin04 = "AbandonedLogCabin04"; public static readonly string Abomination = "Abomination"; public static readonly string AbominationAttack1 = "Abomination_attack1"; public static readonly string AbominationAttack2 = "Abomination_attack2"; public static readonly string AbominationAttack3 = "Abomination_attack3"; public static readonly string AbominationRagdoll = "Abomination_ragdoll"; public static readonly string Acorn = "Acorn"; public static readonly string Amber = "Amber"; public static readonly string AmberPearl = "AmberPearl"; public static readonly string AncientSkull = "ancient_skull"; public static readonly string AncientbarkspearProjectile = "ancientbarkspear_projectile"; public static readonly string AncientSeed = "AncientSeed"; public static readonly string AoeNova = "aoe_nova"; public static readonly string ArbalestProjectileBlackmetal = "arbalest_projectile_blackmetal"; public static readonly string ArbalestProjectileBone = "arbalest_projectile_bone"; public static readonly string ArbalestProjectileCarapace = "arbalest_projectile_carapace"; public static readonly string ArmorBronzeChest = "ArmorBronzeChest"; public static readonly string ArmorBronzeLegs = "ArmorBronzeLegs"; public static readonly string ArmorCarapaceChest = "ArmorCarapaceChest"; public static readonly string ArmorCarapaceLegs = "ArmorCarapaceLegs"; public static readonly string ArmorDress1 = "ArmorDress1"; public static readonly string ArmorDress10 = "ArmorDress10"; public static readonly string ArmorDress2 = "ArmorDress2"; public static readonly string ArmorDress3 = "ArmorDress3"; public static readonly string ArmorDress4 = "ArmorDress4"; public static readonly string ArmorDress5 = "ArmorDress5"; public static readonly string ArmorDress6 = "ArmorDress6"; public static readonly string ArmorDress7 = "ArmorDress7"; public static readonly string ArmorDress8 = "ArmorDress8"; public static readonly string ArmorDress9 = "ArmorDress9"; public static readonly string ArmorFenringChest = "ArmorFenringChest"; public static readonly string ArmorFenringLegs = "ArmorFenringLegs"; public static readonly string ArmorIronChest = "ArmorIronChest"; public static readonly string ArmorIronLegs = "ArmorIronLegs"; public static readonly string ArmorLeatherChest = "ArmorLeatherChest"; public static readonly string ArmorLeatherLegs = "ArmorLeatherLegs"; public static readonly string ArmorMageChest = "ArmorMageChest"; public static readonly string ArmorMageLegs = "ArmorMageLegs"; public static readonly string ArmorPaddedCuirass = "ArmorPaddedCuirass"; public static readonly string ArmorPaddedGreaves = "ArmorPaddedGreaves"; public static readonly string ArmorRagsChest = "ArmorRagsChest"; public static readonly string ArmorRagsLegs = "ArmorRagsLegs"; public static readonly string ArmorRootChest = "ArmorRootChest"; public static readonly string ArmorRootLegs = "ArmorRootLegs"; public static readonly string ArmorStand = "ArmorStand"; public static readonly string ArmorStandFemale = "ArmorStand_Female"; public static readonly string ArmorStandMale = "ArmorStand_Male"; public static readonly string ArmorTrollLeatherChest = "ArmorTrollLeatherChest"; public static readonly string ArmorTrollLeatherLegs = "ArmorTrollLeatherLegs"; public static readonly string ArmorTunic1 = "ArmorTunic1"; public static readonly string ArmorTunic10 = "ArmorTunic10"; public static readonly string ArmorTunic2 = "ArmorTunic2"; public static readonly string ArmorTunic3 = "ArmorTunic3"; public static readonly string ArmorTunic4 = "ArmorTunic4"; public static readonly string ArmorTunic5 = "ArmorTunic5"; public static readonly string ArmorTunic6 = "ArmorTunic6"; public static readonly string ArmorTunic7 = "ArmorTunic7"; public static readonly string ArmorTunic8 = "ArmorTunic8"; public static readonly string ArmorTunic9 = "ArmorTunic9"; public static readonly string ArmorWolfChest = "ArmorWolfChest"; public static readonly string ArmorWolfLegs = "ArmorWolfLegs"; public static readonly string ArrowBronze = "ArrowBronze"; public static readonly string ArrowCarapace = "ArrowCarapace"; public static readonly string ArrowFire = "ArrowFire"; public static readonly string ArrowFlint = "ArrowFlint"; public static readonly string ArrowFrost = "ArrowFrost"; public static readonly string ArrowIron = "ArrowIron"; public static readonly string ArrowNeedle = "ArrowNeedle"; public static readonly string ArrowObsidian = "ArrowObsidian"; public static readonly string ArrowPoison = "ArrowPoison"; public static readonly string ArrowSilver = "ArrowSilver"; public static readonly string ArrowWood = "ArrowWood"; public static readonly string AtgeirBlackmetal = "AtgeirBlackmetal"; public static readonly string AtgeirBronze = "AtgeirBronze"; public static readonly string AtgeirHimminAfl = "AtgeirHimminAfl"; public static readonly string AtgeirIron = "AtgeirIron"; public static readonly string AxeBlackMetal = "AxeBlackMetal"; public static readonly string AxeBronze = "AxeBronze"; public static readonly string AxeFlint = "AxeFlint"; public static readonly string AxeIron = "AxeIron"; public static readonly string AxeJotunBane = "AxeJotunBane"; public static readonly string AxeStone = "AxeStone"; public static readonly string BarberKit = "BarberKit"; public static readonly string Barley = "Barley"; public static readonly string BarleyFlour = "BarleyFlour"; public static readonly string BarleyWine = "BarleyWine"; public static readonly string BarleyWineBase = "BarleyWineBase"; public static readonly string Barrell = "barrell"; public static readonly string Bat = "Bat"; public static readonly string BatMelee = "bat_melee"; public static readonly string Battleaxe = "Battleaxe"; public static readonly string BattleaxeCrystal = "BattleaxeCrystal"; public static readonly string Bed = "bed"; public static readonly string BeeAoe = "bee_aoe"; public static readonly string BeechLog = "beech_log"; public static readonly string BeechLogHalf = "beech_log_half"; public static readonly string BeechSapling = "Beech_Sapling"; public static readonly string BeechSmall1 = "Beech_small1"; public static readonly string BeechSmall2 = "Beech_small2"; public static readonly string BeechStub = "Beech_Stub"; public static readonly string Beech1 = "Beech1"; public static readonly string BeechSeeds = "BeechSeeds"; public static readonly string Beehive = "Beehive"; public static readonly string BeltStrength = "BeltStrength"; public static readonly string Bilebag = "Bilebag"; public static readonly string BilebombExplosion = "bilebomb_explosion"; public static readonly string BilebombProjectile = "bilebomb_projectile"; public static readonly string BirchLog = "Birch_log"; public static readonly string BirchLogHalf = "Birch_log_half"; public static readonly string BirchSapling = "Birch_Sapling"; public static readonly string Birch1 = "Birch1"; public static readonly string Birch1Aut = "Birch1_aut"; public static readonly string Birch2 = "Birch2"; public static readonly string Birch2Aut = "Birch2_aut"; public static readonly string BirchSeeds = "BirchSeeds"; public static readonly string BirchStub = "BirchStub"; public static readonly string BlackCore = "BlackCore"; public static readonly string BlackForestLocationMusic = "BlackForestLocationMusic"; public static readonly string Blackforge = "blackforge"; public static readonly string BlackforgeExt1 = "blackforge_ext1"; public static readonly string BlackforgeExt2Vise = "blackforge_ext2_vise"; public static readonly string BlackMarble = "BlackMarble"; public static readonly string Blackmarble1X1 = "blackmarble_1x1"; public static readonly string Blackmarble2X1X1 = "blackmarble_2x1x1"; public static readonly string Blackmarble2X2Enforced = "blackmarble_2x2_enforced"; public static readonly string Blackmarble2X2X1 = "blackmarble_2x2x1"; public static readonly string Blackmarble2X2X2 = "blackmarble_2x2x2"; public static readonly string BlackmarbleAltarCrystal = "blackmarble_altar_crystal"; public static readonly string BlackmarbleAltarCrystalBroken = "blackmarble_altar_crystal_broken"; public static readonly string BlackmarbleArch = "blackmarble_arch"; public static readonly string BlackmarbleBase1 = "blackmarble_base_1"; public static readonly string BlackmarbleBase2 = "blackmarble_base_2"; public static readonly string BlackmarbleBasecorner = "blackmarble_basecorner"; public static readonly string BlackmarbleColumn1 = "blackmarble_column_1"; public static readonly string BlackmarbleColumn2 = "blackmarble_column_2"; public static readonly string BlackmarbleColumn3 = "blackmarble_column_3"; public static readonly string BlackmarbleCreep4X1X1 = "blackmarble_creep_4x1x1"; public static readonly string BlackmarbleCreep4X2X1 = "blackmarble_creep_4x2x1"; public static readonly string BlackmarbleCreepSlopeInverted1X1X2 = "blackmarble_creep_slope_inverted_1x1x2"; public static readonly string BlackmarbleCreepSlopeInverted2X2X1 = "blackmarble_creep_slope_inverted_2x2x1"; public static readonly string BlackmarbleCreepStair = "blackmarble_creep_stair"; public static readonly string BlackmarbleFloor = "blackmarble_floor"; public static readonly string BlackmarbleFloorLarge = "blackmarble_floor_large"; public static readonly string BlackmarbleFloorTriangle = "blackmarble_floor_triangle"; public static readonly string BlackmarbleHeadBig01 = "blackmarble_head_big01"; public static readonly string BlackmarbleHeadBig02 = "blackmarble_head_big02"; public static readonly string BlackmarbleHead01 = "blackmarble_head01"; public static readonly string BlackmarbleHead02 = "blackmarble_head02"; public static readonly string BlackmarbleOut1 = "blackmarble_out_1"; public static readonly string BlackmarbleOut2 = "blackmarble_out_2"; public static readonly string BlackmarbleOutcorner = "blackmarble_outcorner"; public static readonly string BlackmarblePile = "blackmarble_pile"; public static readonly string BlackmarblePost01 = "blackmarble_post01"; public static readonly string BlackmarbleSlope1X2 = "blackmarble_slope_1x2"; public static readonly string BlackmarbleSlopeInverted1X2 = "blackmarble_slope_inverted_1x2"; public static readonly string BlackmarbleStair = "blackmarble_stair"; public static readonly string BlackmarbleStairCorner = "blackmarble_stair_corner"; public static readonly string BlackmarbleStairCornerLeft = "blackmarble_stair_corner_left"; public static readonly string BlackmarbleTileFloor1X1 = "blackmarble_tile_floor_1x1"; public static readonly string BlackmarbleTileFloor2X2 = "blackmarble_tile_floor_2x2"; public static readonly string BlackmarbleTileWall1X1 = "blackmarble_tile_wall_1x1"; public static readonly string BlackmarbleTileWall2X2 = "blackmarble_tile_wall_2x2"; public static readonly string BlackmarbleTileWall2X4 = "blackmarble_tile_wall_2x4"; public static readonly string BlackmarbleTip = "blackmarble_tip"; public static readonly string BlackMetal = "BlackMetal"; public static readonly string BlackMetalScrap = "BlackMetalScrap"; public static readonly string BlackSoup = "BlackSoup"; public static readonly string Blastfurnace = "blastfurnace"; public static readonly string Blob = "Blob"; public static readonly string BlobAoe = "blob_aoe"; public static readonly string BlobElite = "BlobElite"; public static readonly string BlobTar = "BlobTar"; public static readonly string BlobtarProjectileTarball = "blobtar_projectile_tarball"; public static readonly string Bloodbag = "Bloodbag"; public static readonly string BloodPudding = "BloodPudding"; public static readonly string Blueberries = "Blueberries"; public static readonly string BlueberryBush = "BlueberryBush"; public static readonly string Boar = "Boar"; public static readonly string BoarPiggy = "Boar_piggy"; public static readonly string BoarRagdoll = "boar_ragdoll"; public static readonly string BoarJerky = "BoarJerky"; public static readonly string BoltBlackmetal = "BoltBlackmetal"; public static readonly string BoltBone = "BoltBone"; public static readonly string BoltCarapace = "BoltCarapace"; public static readonly string BoltIron = "BoltIron"; public static readonly string BombBile = "BombBile"; public static readonly string BombOoze = "BombOoze"; public static readonly string BoneFragments = "BoneFragments"; public static readonly string Bonemass = "Bonemass"; public static readonly string Bonemass2 = "Bonemass"; public static readonly string BonemassAoe = "bonemass_aoe"; public static readonly string BonemassThrowProjectile = "bonemass_throw_projectile"; public static readonly string BonePileSpawner = "BonePileSpawner"; public static readonly string Bonfire = "bonfire"; public static readonly string BossStoneBonemass = "BossStone_Bonemass"; public static readonly string BossStoneDragonQueen = "BossStone_DragonQueen"; public static readonly string BossStoneEikthyr = "BossStone_Eikthyr"; public static readonly string BossStoneTheElder = "BossStone_TheElder"; public static readonly string BossStoneTheQueen = "BossStone_TheQueen"; public static readonly string BossStoneYagluth = "BossStone_Yagluth"; public static readonly string Bow = "Bow"; public static readonly string BowProjectile = "bow_projectile"; public static readonly string BowProjectileCarapace = "bow_projectile_carapace"; public static readonly string BowProjectileFire = "bow_projectile_fire"; public static readonly string BowProjectileFrost = "bow_projectile_frost"; public static readonly string BowProjectileNeedle = "bow_projectile_needle"; public static readonly string BowProjectilePoison = "bow_projectile_poison"; public static readonly string BowDraugrFang = "BowDraugrFang"; public static readonly string BowFineWood = "BowFineWood"; public static readonly string BowHuntsman = "BowHuntsman"; public static readonly string BowSpineSnap = "BowSpineSnap"; public static readonly string Bread = "Bread"; public static readonly string BreadDough = "BreadDough"; public static readonly string Bronze = "Bronze"; public static readonly string BronzeNails = "BronzeNails"; public static readonly string BronzeScrap = "BronzeScrap"; public static readonly string BronzespearProjectile = "bronzespear_projectile"; public static readonly string Bucket = "bucket"; public static readonly string BugMeat = "BugMeat"; public static readonly string Bush01 = "Bush01"; public static readonly string Bush01Heath = "Bush01_heath"; public static readonly string Bush02En = "Bush02_en"; public static readonly string CapeDeerHide = "CapeDeerHide"; public static readonly string CapeFeather = "CapeFeather"; public static readonly string CapeLinen = "CapeLinen"; public static readonly string CapeLox = "CapeLox"; public static readonly string CapeOdin = "CapeOdin"; public static readonly string CapeTest = "CapeTest"; public static readonly string CapeTrollHide = "CapeTrollHide"; public static readonly string CapeWolf = "CapeWolf"; public static readonly string Carapace = "Carapace"; public static readonly string CargoCrate = "CargoCrate"; public static readonly string Carrot = "Carrot"; public static readonly string CarrotSeeds = "CarrotSeeds"; public static readonly string CarrotSoup = "CarrotSoup"; public static readonly string Cart = "Cart"; public static readonly string CastleKitBraidedBox01 = "CastleKit_braided_box01"; public static readonly string CastleKitBrazier = "CastleKit_brazier"; public static readonly string CastleKitGroundtorch = "CastleKit_groundtorch"; public static readonly string CastleKitGroundtorchBlue = "CastleKit_groundtorch_blue"; public static readonly string CastleKitGroundtorchGreen = "CastleKit_groundtorch_green"; public static readonly string CastleKitGroundtorchUnlit = "CastleKit_groundtorch_unlit"; public static readonly string CastleKitMetalGroundtorchUnlit = "CastleKit_metal_groundtorch_unlit"; public static readonly string CastleKitPot03 = "CastleKit_pot03"; public static readonly string CauldronExt1Spice = "cauldron_ext1_spice"; public static readonly string CauldronExt3Butchertable = "cauldron_ext3_butchertable"; public static readonly string CauldronExt4Pots = "cauldron_ext4_pots"; public static readonly string CauldronExt5Mortarandpestle = "cauldron_ext5_mortarandpestle"; public static readonly string CaverockIcePillarWall = "caverock_ice_pillar_wall"; public static readonly string CaverockIceStalagmite = "caverock_ice_stalagmite"; public static readonly string CaverockIceStalagmiteBroken = "caverock_ice_stalagmite_broken"; public static readonly string CaverockIceStalagmiteDestruction = "caverock_ice_stalagmite_destruction"; public static readonly string CaverockIceStalagtite = "caverock_ice_stalagtite"; public static readonly string CaverockIceStalagtiteDestruction = "caverock_ice_stalagtite_destruction"; public static readonly string CaverockIceStalagtiteFalling = "caverock_ice_stalagtite_falling"; public static readonly string CaverockIceWallDestruction = "caverock_ice_wall_destruction"; public static readonly string Chain = "Chain"; public static readonly string CharcoalKiln = "charcoal_kiln"; public static readonly string Chest = "Chest"; public static readonly string ChestHildir1 = "chest_hildir1"; public static readonly string ChestHildir2 = "chest_hildir2"; public static readonly string ChestHildir3 = "chest_hildir3"; public static readonly string Chicken = "Chicken"; public static readonly string ChickenEgg = "ChickenEgg"; public static readonly string ChickenMeat = "ChickenMeat"; public static readonly string Chitin = "Chitin"; public static readonly string CliffMistlands1 = "cliff_mistlands1"; public static readonly string CliffMistlands1Creep = "cliff_mistlands1_creep"; public static readonly string CliffMistlands1CreepFrac = "cliff_mistlands1_creep_frac"; public static readonly string CliffMistlands1Frac = "cliff_mistlands1_frac"; public static readonly string CliffMistlands2 = "cliff_mistlands2"; public static readonly string CliffMistlands2Frac = "cliff_mistlands2_frac"; public static readonly string ClothHangingDoor = "cloth_hanging_door"; public static readonly string ClothHangingDoorDouble = "cloth_hanging_door_double"; public static readonly string ClothHangingLong = "cloth_hanging_long"; public static readonly string Cloudberry = "Cloudberry"; public static readonly string CloudberryBush = "CloudberryBush"; public static readonly string Club = "Club"; public static readonly string Coal = "Coal"; public static readonly string CoalPile = "coal_pile"; public static readonly string Coins = "Coins"; public static readonly string CookedBugMeat = "CookedBugMeat"; public static readonly string CookedChickenMeat = "CookedChickenMeat"; public static readonly string CookedDeerMeat = "CookedDeerMeat"; public static readonly string CookedEgg = "CookedEgg"; public static readonly string CookedHareMeat = "CookedHareMeat"; public static readonly string CookedLoxMeat = "CookedLoxMeat"; public static readonly string CookedMeat = "CookedMeat"; public static readonly string CookedWolfMeat = "CookedWolfMeat"; public static readonly string Copper = "Copper"; public static readonly string CopperOre = "CopperOre"; public static readonly string CopperScrap = "CopperScrap"; public static readonly string CreepPropEggHanging01 = "CreepProp_egg_hanging01"; public static readonly string CreepPropEggHanging02 = "CreepProp_egg_hanging02"; public static readonly string CreepPropEntrance1 = "CreepProp_entrance1"; public static readonly string CreepPropEntrance2 = "CreepProp_entrance2"; public static readonly string CreepPropHanging01 = "CreepProp_hanging01"; public static readonly string CreepPropWall01 = "CreepProp_wall01"; public static readonly string CrossbowArbalest = "CrossbowArbalest"; public static readonly string Crow = "Crow"; public static readonly string CryptSkeletonChest = "crypt_skeleton_chest"; public static readonly string Crypt2 = "Crypt2"; public static readonly string Crypt3 = "Crypt3"; public static readonly string Crypt4 = "Crypt4"; public static readonly string CryptKey = "CryptKey"; public static readonly string Crystal = "Crystal"; public static readonly string CrystalWall1X1 = "crystal_wall_1x1"; public static readonly string Cultivate = "cultivate"; public static readonly string Cultivator = "Cultivator"; public static readonly string Dandelion = "Dandelion"; public static readonly string DarkwoodArch = "darkwood_arch"; public static readonly string DarkwoodBeam = "darkwood_beam"; public static readonly string DarkwoodBeam26 = "darkwood_beam_26"; public static readonly string DarkwoodBeam45 = "darkwood_beam_45"; public static readonly string DarkwoodBeam4X4 = "darkwood_beam4x4"; public static readonly string DarkwoodDecowall = "darkwood_decowall"; public static readonly string DarkwoodGate = "darkwood_gate"; public static readonly string DarkwoodPole = "darkwood_pole"; public static readonly string DarkwoodPole4 = "darkwood_pole4"; public static readonly string DarkwoodRaven = "darkwood_raven"; public static readonly string DarkwoodRoof = "darkwood_roof"; public static readonly string DarkwoodRoof45 = "darkwood_roof_45"; public static readonly string DarkwoodRoofIcorner = "darkwood_roof_icorner"; public static readonly string DarkwoodRoofIcorner45 = "darkwood_roof_icorner_45"; public static readonly string DarkwoodRoofOcorner = "darkwood_roof_ocorner"; public static readonly string DarkwoodRoofOcorner45 = "darkwood_roof_ocorner_45"; public static readonly string DarkwoodRoofTop = "darkwood_roof_top"; public static readonly string DarkwoodRoofTop45 = "darkwood_roof_top_45"; public static readonly string DarkwoodWolf = "darkwood_wolf"; public static readonly string DeadDeer = "dead_deer"; public static readonly string Deathsquito = "Deathsquito"; public static readonly string DeathsquitoSting = "Deathsquito_sting"; public static readonly string Deer = "Deer"; public static readonly string DeerRagdoll = "deer_ragdoll"; public static readonly string DeerGodExplosion = "DeerGodExplosion"; public static readonly string DeerHide = "DeerHide"; public static readonly string DeerMeat = "DeerMeat"; public static readonly string DeerStew = "DeerStew"; public static readonly string Demister = "Demister"; public static readonly string DemisterBall = "demister_ball"; public static readonly string DevFloor1 = "DevFloor1"; public static readonly string DevGround1 = "DevGround1"; public static readonly string DevGround2 = "DevGround2"; public static readonly string DevHouse1 = "DevHouse1"; public static readonly string DevHouse2 = "DevHouse2"; public static readonly string DevHouse3 = "DevHouse3"; public static readonly string DevSoundTest = "DevSoundTest"; public static readonly string DevSpawnTest = "DevSpawnTest"; public static readonly string DevWall1 = "DevWall1"; public static readonly string DgCave = "DG_Cave"; public static readonly string DgDvergrBoss = "DG_DvergrBoss"; public static readonly string DgDvergrTown = "DG_DvergrTown"; public static readonly string DgForestCrypt = "DG_ForestCrypt"; public static readonly string DgGoblinCamp = "DG_GoblinCamp"; public static readonly string DgHildirCave = "DG_Hildir_Cave"; public static readonly string DgHildirForestCrypt = "DG_Hildir_ForestCrypt"; public static readonly string DgHildirPlainsFortress = "DG_Hildir_PlainsFortress"; public static readonly string DgMeadowsFarm = "DG_MeadowsFarm"; public static readonly string DgMeadowsVillage = "DG_MeadowsVillage"; public static readonly string DgSunkenCrypt = "DG_SunkenCrypt"; public static readonly string Digg = "digg"; public static readonly string DiggV2 = "digg_v2"; public static readonly string Dolmen01 = "Dolmen01"; public static readonly string Dolmen02 = "Dolmen02"; public static readonly string Dolmen03 = "Dolmen03"; public static readonly string Dragon = "Dragon"; public static readonly string DragonIceProjectile = "dragon_ice_projectile"; public static readonly string DragonEgg = "DragonEgg"; public static readonly string Dragoneggcup = "dragoneggcup"; public static readonly string Dragonqueen = "Dragonqueen"; public static readonly string DragonTear = "DragonTear"; public static readonly string DrakeLorestone = "DrakeLorestone"; public static readonly string DrakeNest01 = "DrakeNest01"; public static readonly string Draugr = "Draugr"; public static readonly string DraugrArrow = "draugr_arrow"; public static readonly string DraugrAxe = "draugr_axe"; public static readonly string DraugrBow = "draugr_bow"; public static readonly string DraugrBowProjectile = "draugr_bow_projectile"; public static readonly string DraugrElite = "Draugr_Elite"; public static readonly string DraugrEliteRagdoll = "Draugr_elite_ragdoll"; public static readonly string DraugrRagdoll = "Draugr_ragdoll"; public static readonly string DraugrRanged = "Draugr_Ranged"; public static readonly string DraugrRangedRagdoll = "Draugr_ranged_ragdoll"; public static readonly string DraugrSword = "draugr_sword"; public static readonly string DungeonForestcryptDoor = "dungeon_forestcrypt_door"; public static readonly string DungeonQueenDoor = "dungeon_queen_door"; public static readonly string DungeonSunkencryptIrongate = "dungeon_sunkencrypt_irongate"; public static readonly string DungeonSunkencryptIrongateRusty = "dungeon_sunkencrypt_irongate_rusty"; public static readonly string Dverger = "Dverger"; public static readonly string DvergerDemister = "dverger_demister"; public static readonly string DvergerDemisterBroken = "dverger_demister_broken"; public static readonly string DvergerDemisterLarge = "dverger_demister_large"; public static readonly string DvergerDemisterRuins = "dverger_demister_ruins"; public static readonly string DvergerGuardstone = "dverger_guardstone"; public static readonly string DvergerRagdoll = "Dverger_ragdoll"; public static readonly string DvergerArbalest = "DvergerArbalest"; public static readonly string DvergerArbalestProjectile = "DvergerArbalest_projectile"; public static readonly string DvergerArbalestShoot = "DvergerArbalest_shoot"; public static readonly string DvergerHairFemale = "DvergerHairFemale"; public static readonly string DvergerHairMale = "DvergerHairMale"; public static readonly string DvergerMage = "DvergerMage"; public static readonly string DvergerMageFire = "DvergerMageFire"; public static readonly string DvergerMageIce = "DvergerMageIce"; public static readonly string DvergerMageSupport = "DvergerMageSupport"; public static readonly string DvergerStaffBlockerBlockCircle = "DvergerStaffBlocker_blockCircle"; public static readonly string DvergerStaffBlockerBlockCircleBig = "DvergerStaffBlocker_blockCircleBig"; public static readonly string DvergerStaffBlockerBlockHemisphere = "DvergerStaffBlocker_blockHemisphere"; public static readonly string DvergerStaffBlockerBlockU = "DvergerStaffBlocker_blockU"; public static readonly string DvergerStaffBlockerBlockWall = "DvergerStaffBlocker_blockWall"; public static readonly string DvergerStaffBlockerProjectile = "DvergerStaffBlocker_projectile"; public static readonly string DvergerStaffFire = "DvergerStaffFire"; public static readonly string DvergerStaffFireClusterbombAoe = "DvergerStaffFire_clusterbomb_aoe"; public static readonly string DvergerStaffFireClusterbombProjectile = "DvergerStaffFire_clusterbomb_projectile"; public static readonly string DvergerStaffFireFireAoe = "DvergerStaffFire_fire_aoe"; public static readonly string DvergerStaffFireFireballProjectile = "DvergerStaffFire_fireball_projectile"; public static readonly string DvergerStaffHeal = "DvergerStaffHeal"; public static readonly string DvergerStaffHealAoe = "DvergerStaffHeal_aoe"; public static readonly string DvergerStaffIce = "DvergerStaffIce"; public static readonly string DvergerStaffIceProjectile = "DvergerStaffIce_projectile"; public static readonly string DvergerStaffNovaAoe = "DvergerStaffNova_aoe"; public static readonly string DvergerStaffSupport = "DvergerStaffSupport"; public static readonly string DvergerStaffSupportAoe = "DvergerStaffSupport_aoe"; public static readonly string DvergerSuitArbalest = "DvergerSuitArbalest"; public static readonly string DvergerSuitFire = "DvergerSuitFire"; public static readonly string DvergerSuitIce = "DvergerSuitIce"; public static readonly string DvergerSuitSupport = "DvergerSuitSupport"; public static readonly string DvergerTest = "DvergerTest"; public static readonly string DvergrKey = "DvergrKey"; public static readonly string DvergrKeyFragment = "DvergrKeyFragment"; public static readonly string DvergrNeedle = "DvergrNeedle"; public static readonly string DvergrpropsBanner = "dvergrprops_banner"; public static readonly string DvergrpropsBarrel = "dvergrprops_barrel"; public static readonly string DvergrpropsBed = "dvergrprops_bed"; public static readonly string DvergrpropsChair = "dvergrprops_chair"; public static readonly string DvergrpropsCrate = "dvergrprops_crate"; public static readonly string DvergrpropsCrateLong = "dvergrprops_crate_long"; public static readonly string DvergrpropsCurtain = "dvergrprops_curtain"; public static readonly string DvergrpropsHooknchain = "dvergrprops_hooknchain"; public static readonly string DvergrpropsLantern = "dvergrprops_lantern"; public static readonly string DvergrpropsLanternStanding = "dvergrprops_lantern_standing"; public static readonly string DvergrpropsPickaxe = "dvergrprops_pickaxe"; public static readonly string DvergrpropsShelf = "dvergrprops_shelf"; public static readonly string DvergrpropsStool = "dvergrprops_stool"; public static readonly string DvergrpropsTable = "dvergrprops_table"; public static readonly string DvergrpropsWoodBeam = "dvergrprops_wood_beam"; public static readonly string DvergrpropsWoodFloor = "dvergrprops_wood_floor"; public static readonly string DvergrpropsWoodPole = "dvergrprops_wood_pole"; public static readonly string DvergrpropsWoodStair = "dvergrprops_wood_stair"; public static readonly string DvergrpropsWoodStake = "dvergrprops_wood_stake"; public static readonly string DvergrpropsWoodStakewall = "dvergrprops_wood_stakewall"; public static readonly string DvergrpropsWoodWall = "dvergrprops_wood_wall"; public static readonly string DvergrtownArch = "dvergrtown_arch"; public static readonly string DvergrtownCreepDoor = "dvergrtown_creep_door"; public static readonly string DvergrtownSecretdoor = "dvergrtown_secretdoor"; public static readonly string DvergrtownSlidingdoor = "dvergrtown_slidingdoor"; public static readonly string DvergrtownStairCornerWoodLeft = "dvergrtown_stair_corner_wood_left"; public static readonly string DvergrtownWoodBeam = "dvergrtown_wood_beam"; public static readonly string DvergrtownWoodCrane = "dvergrtown_wood_crane"; public static readonly string DvergrtownWoodPole = "dvergrtown_wood_pole"; public static readonly string DvergrtownWoodStake = "dvergrtown_wood_stake"; public static readonly string DvergrtownWoodStakewall = "dvergrtown_wood_stakewall"; public static readonly string DvergrtownWoodSupport = "dvergrtown_wood_support"; public static readonly string DvergrtownWoodWall01 = "dvergrtown_wood_wall01"; public static readonly string DvergrtownWoodWall02 = "dvergrtown_wood_wall02"; public static readonly string DvergrtownWoodWall03 = "dvergrtown_wood_wall03"; public static readonly string Eikthyr = "Eikthyr"; public static readonly string EikthyrRagdoll = "eikthyr_ragdoll"; public static readonly string Eikthyrnir = "Eikthyrnir"; public static readonly string Eitr = "Eitr"; public static readonly string Eitrrefinery = "eitrrefinery"; public static readonly string ElderBark = "ElderBark"; public static readonly string Entrails = "Entrails"; public static readonly string EventzoneBonemass = "eventzone_bonemass"; public static readonly string EventzoneEikthyr = "eventzone_eikthyr"; public static readonly string EventzoneGdking = "eventzone_gdking"; public static readonly string EventzoneGoblinking = "eventzone_goblinking"; public static readonly string EventzoneModer = "eventzone_moder"; public static readonly string EventzoneQueen = "eventzone_queen"; public static readonly string EvilHeartForest = "EvilHeart_Forest"; public static readonly string EvilHeartSwamp = "EvilHeart_Swamp"; public static readonly string Eyescream = "Eyescream"; public static readonly string Feathers = "Feathers"; public static readonly string Fenring = "Fenring"; public static readonly string FenringAttackFlamesAoe = "Fenring_attack_flames_aoe"; public static readonly string FenringAttackFrostAoe = "Fenring_attack_frost_aoe"; public static readonly string FenringCultist = "Fenring_Cultist"; public static readonly string FenringCultistHildir = "Fenring_Cultist_Hildir"; public static readonly string FenringCultistHildirNochest = "Fenring_Cultist_Hildir_nochest"; public static readonly string FenringCultistRagdoll = "Fenring_cultist_ragdoll"; public static readonly string FenringCultistRagdollHildir = "Fenring_cultist_ragdoll_hildir"; public static readonly string FenringRagdoll = "Fenring_ragdoll"; public static readonly string FenringIceNovaAoe = "FenringIceNova_aoe"; public static readonly string FenrirhideHanging = "fenrirhide_hanging"; public static readonly string FenrirhideHangingDoor = "fenrirhide_hanging_door"; public static readonly string Fermenter = "fermenter"; public static readonly string FineWood = "FineWood"; public static readonly string FirCone = "FirCone"; public static readonly string FirePit = "fire_pit"; public static readonly string FirePitHaldor = "fire_pit_haldor"; public static readonly string FirePitHildir = "fire_pit_hildir"; public static readonly string FirePitIron = "fire_pit_iron"; public static readonly string FireFlies = "FireFlies"; public static readonly string FireHole = "FireHole"; public static readonly string FireworksRocketBlue = "FireworksRocket_Blue"; public static readonly string FireworksRocketCyan = "FireworksRocket_Cyan"; public static readonly string FireworksRocketGreen = "FireworksRocket_Green"; public static readonly string FireworksRocketPurple = "FireworksRocket_Purple"; public static readonly string FireworksRocketRed = "FireworksRocket_Red"; public static readonly string FireworksRocketWhite = "FireworksRocket_White"; public static readonly string FireworksRocketYellow = "FireworksRocket_Yellow"; public static readonly string FirTree = "FirTree"; public static readonly string FirTreeLog = "FirTree_log"; public static readonly string FirTreeLogHalf = "FirTree_log_half"; public static readonly string FirTreeOldLog = "FirTree_oldLog"; public static readonly string FirTreeSapling = "FirTree_Sapling"; public static readonly string FirTreeSmall = "FirTree_small"; public static readonly string FirTreeSmallDead = "FirTree_small_dead"; public static readonly string FirTreeStub = "FirTree_Stub"; public static readonly string Fish1 = "Fish1"; public static readonly string Fish10 = "Fish10"; public static readonly string Fish11 = "Fish11"; public static readonly string Fish12 = "Fish12"; public static readonly string Fish2 = "Fish2"; public static readonly string Fish3 = "Fish3"; public static readonly string Fish4Cave = "Fish4_cave"; public static readonly string Fish5 = "Fish5"; public static readonly string Fish6 = "Fish6"; public static readonly string Fish7 = "Fish7"; public static readonly string Fish8 = "Fish8"; public static readonly string Fish9 = "Fish9"; public static readonly string FishAndBread = "FishAndBread"; public static readonly string FishAndBreadUncooked = "FishAndBreadUncooked"; public static readonly string FishAnglerRaw = "FishAnglerRaw"; public static readonly string FishCooked = "FishCooked"; public static readonly string FishingBait = "FishingBait"; public static readonly string FishingBaitAshlands = "FishingBaitAshlands"; public static readonly string FishingBaitCave = "FishingBaitCave"; public static readonly string FishingBaitDeepNorth = "FishingBaitDeepNorth"; public static readonly string FishingBaitForest = "FishingBaitForest"; public static readonly string FishingBaitMistlands = "FishingBaitMistlands"; public static readonly string FishingBaitOcean = "FishingBaitOcean"; public static readonly string FishingBaitPlains = "FishingBaitPlains"; public static readonly string FishingBaitSwamp = "FishingBaitSwamp"; public static readonly string FishingRod = "FishingRod"; public static readonly string FishingRodFloat = "FishingRodFloat"; public static readonly string FishingRodFloatProjectile = "FishingRodFloatProjectile"; public static readonly string FishRaw = "FishRaw"; public static readonly string FishWraps = "FishWraps"; public static readonly string FistFenrirClaw = "FistFenrirClaw"; public static readonly string Flametal = "Flametal"; public static readonly string FlametalOre = "FlametalOre"; public static readonly string Flax = "Flax"; public static readonly string Flies = "Flies"; public static readonly string Flint = "Flint"; public static readonly string FlintspearProjectile = "flintspear_projectile"; public static readonly string FlyingCore = "flying_core"; public static readonly string Forge = "forge"; public static readonly string ForgeExt1 = "forge_ext1"; public static readonly string ForgeExt2 = "forge_ext2"; public static readonly string ForgeExt3 = "forge_ext3"; public static readonly string ForgeExt4 = "forge_ext4"; public static readonly string ForgeExt5 = "forge_ext5"; public static readonly string ForgeExt6 = "forge_ext6"; public static readonly string FreezeGland = "FreezeGland"; public static readonly string FrostCavesShrineReveal = "FrostCavesShrineReveal"; public static readonly string FulingTrap = "fuling_trap"; public static readonly string FulingTurret = "fuling_turret"; public static readonly string FxAbominationArise = "fx_Abomination_arise"; public static readonly string FxAbominationAriseEnd = "fx_Abomination_arise_end"; public static readonly string FxAbominationAttackHit = "fx_Abomination_attack_hit"; public static readonly string FxAbominationAttack1 = "fx_Abomination_attack1"; public static readonly string FxAbominationAttack1Start = "fx_Abomination_attack1_start"; public static readonly string FxAbominationAttack1Trailon = "fx_Abomination_attack1_trailon"; public static readonly string FxAbominationAttack2 = "fx_Abomination_attack2"; public static readonly string FxAbominationAttack2Lift = "fx_Abomination_attack2_lift"; public static readonly string FxAbominationAttack2Start = "fx_Abomination_attack2_start"; public static readonly string FxAbominationAttack3 = "fx_Abomination_attack3"; public static readonly string FxAbominationAttack3Start = "fx_Abomination_attack3_start"; public static readonly string FxAltarCrystalDestruction = "fx_altar_crystal_destruction"; public static readonly string FxArmorStandPick = "fx_ArmorStand_pick"; public static readonly string FxBabyseekerDeath = "fx_babyseeker_death"; public static readonly string FxBabyseekerHurt = "fx_babyseeker_hurt"; public static readonly string FxBackstab = "fx_backstab"; public static readonly string FxBatDeath = "fx_bat_death"; public static readonly string FxBatHit = "fx_bat_hit"; public static readonly string FxBlobtarTarballHit = "fx_blobtar_tarball_hit"; public static readonly string FxBoarPet = "fx_boar_pet"; public static readonly string FxBonemassAoeStart = "fx_Bonemass_aoe_start"; public static readonly string FxChickenBirth = "fx_chicken_birth"; public static readonly string FxChickenDeath = "fx_chicken_death"; public static readonly string FxChickenLayEgg = "fx_chicken_lay_egg"; public static readonly string FxChickenPet = "fx_chicken_pet"; public static readonly string FxCreatureTamed = "fx_creature_tamed"; public static readonly string FxCrit = "fx_crit"; public static readonly string FxCrystalDestruction = "fx_crystal_destruction"; public static readonly string FxDeathsquitoHit = "fx_deathsquito_hit"; public static readonly string FxDeatsquitoDeath = "fx_deatsquito_death"; public static readonly string FxDragonLand = "fx_dragon_land"; public static readonly string FxDrown = "fx_drown"; public static readonly string FxDvergerDeath = "fx_Dverger_death"; public static readonly string FxDvergerHit = "fx_Dverger_hit"; public static readonly string FxDvergerMageFireHit = "fx_DvergerMage_Fire_hit"; public static readonly string FxDvergerMageIceHit = "fx_DvergerMage_Ice_hit"; public static readonly string FxDvergerMageMistileAttack = "fx_DvergerMage_Mistile_attack"; public static readonly string FxDvergerMageMistileDie = "fx_DvergerMage_Mistile_die"; public static readonly string FxDvergerMageMistileSpawn = "fx_DvergerMage_MistileSpawn"; public static readonly string FxDvergerMageNovaRing = "fx_DvergerMage_Nova_ring"; public static readonly string FxDvergerMageSupportHit = "fx_DvergerMage_Support_hit"; public static readonly string FxDvergerMageSupportStart = "fx_DvergerMage_Support_start"; public static readonly string FxEggSplash = "fx_egg_splash"; public static readonly string FxEikthyrForwardshockwave = "fx_eikthyr_forwardshockwave"; public static readonly string FxEikthyrStomp = "fx_eikthyr_stomp"; public static readonly string FxFenringBurningHand = "fx_fenring_burning_hand"; public static readonly string FxFenringBurningHandLong = "fx_fenring_burning_hand_long"; public static readonly string FxFenringFlames = "fx_fenring_flames"; public static readonly string FxFenringFrost = "fx_fenring_frost"; public static readonly string FxFenringFrostHand = "fx_fenring_frost_hand"; public static readonly string FxFenringFrostHandAoestart = "fx_fenring_frost_hand_aoestart"; public static readonly string FxFenringFrostHandLong = "fx_fenring_frost_hand_long"; public static readonly string FxFenringIcenova = "fx_fenring_icenova"; public static readonly string FxFireballStaffExplosion = "fx_fireball_staff_explosion"; public static readonly string FxFireskeletonNova = "fx_fireskeleton_nova"; public static readonly string FxFloatHitwater = "fx_float_hitwater";