using System; using System.Collections; 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 BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using EntityStates; using EntityStates.AI.Walker; using HG; using HG.BlendableTypes; using IL.RoR2; using KinematicCharacterController; using Mono.Cecil.Cil; using MonoMod.Cil; using On.RoR2; using R2API; using R2API.Utils; using RoR2; using RoR2.Achievements; using RoR2.Audio; using RoR2.CharacterAI; using RoR2.ContentManagement; using RoR2.HudOverlay; using RoR2.Projectile; using RoR2.Skills; using RoR2.UI; using SeamstressMod.Modules; using SeamstressMod.Seamstress.Components; using SeamstressMod.Seamstress.Content; using SeamstressVariant.Modules; using SeamstressVariant.Modules.Achievements; using SeamstressVariant.Modules.BaseStates; using SeamstressVariant.Modules.Characters; using SeamstressVariant.Survivors.SeamstressVariant; using SeamstressVariant.Survivors.SeamstressVariant.Components; using SeamstressVariant.Survivors.SeamstressVariant.SkillStates; using Survariants; using TMPro; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; using UnityEngine.Rendering; using UnityEngine.UI; [assembly: AssemblyTitle("SeamstressVariant")] [assembly: AssemblyProduct("SeamstressVariant")] [assembly: AssemblyInformationalVersion("1.0.0+b6d45fe9d45e9c62d5e825be17d0a1e60afe86f5")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyCompany("SeamstressVariant")] [assembly: IgnoresAccessChecksTo("SeamstressMod")] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: CompilationRelaxations(8)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: UnverifiableCode] namespace SeamstressVariant { internal static class Log { internal static ManualLogSource _logSource; internal static void Init(ManualLogSource logSource) { _logSource = logSource; } internal static void Debug(object data) { _logSource.LogDebug(data); } internal static void Error(object data) { _logSource.LogError(data); } internal static void ErrorAssetBundle(string assetName, string bundleName) { Error("failed to load asset, " + assetName + ", because it does not exist in asset bundle, " + bundleName); } internal static void Fatal(object data) { _logSource.LogFatal(data); } internal static void Info(object data) { _logSource.LogInfo(data); } internal static void Message(object data) { _logSource.LogMessage(data); } internal static void Warning(object data) { _logSource.LogWarning(data); } } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.levinter.SeamstressVariant", "SeamstressVariant", "1.0.0")] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class SeamstressVariantPlugin : BaseUnityPlugin { public const string MODUID = "com.levinter.SeamstressVariant"; public const string MODNAME = "SeamstressVariant"; public const string MODVERSION = "1.0.0"; public const string DEVELOPER_PREFIX = "LEVINTER"; public static SeamstressVariantPlugin instance; private void Awake() { instance = this; Log.Init(((BaseUnityPlugin)this).Logger); Language.Init(); new SeamstressVariantSurvivor().Initialize(); new ContentPacks().Initialize(); } } } namespace SeamstressVariant.Modules { internal static class Asset { internal static Dictionary loadedBundles = new Dictionary(); internal static AssetBundle LoadAssetBundle(string bundleName) { if (bundleName == "myassetbundle") { Log.Error("AssetBundle name hasn't been changed. not loading any assets to avoid conflicts.\nMake sure to rename your assetbundle filename and rename the AssetBundleName field in your character setup code "); return null; } if (loadedBundles.ContainsKey(bundleName)) { return loadedBundles[bundleName]; } AssetBundle val = null; try { val = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)SeamstressVariantPlugin.instance).Info.Location), "AssetBundles", bundleName)); } catch (Exception arg) { Log.Error($"Error loading asset bundle, {bundleName}. Your asset bundle must be in a folder next to your mod dll called 'AssetBundles'. Follow the guide to build and install your mod correctly!\n{arg}"); } loadedBundles[bundleName] = val; return val; } internal static void DebugLogBundleContents(this AssetBundle assetBundle) { if ((Object)(object)assetBundle == (Object)null) { Log.Error("DebugLogBundleContents called with a null AssetBundle."); return; } string[] allAssetNames = assetBundle.GetAllAssetNames(); if (allAssetNames == null) { Log.Warning("AssetBundle '" + ((Object)assetBundle).name + "' returned null from GetAllAssetNames()."); return; } string[] array = (from name in allAssetNames where name.EndsWith(".prefab", StringComparison.OrdinalIgnoreCase) orderby name select name).ToArray(); string[] array2 = (from name in allAssetNames where name.EndsWith(".mat", StringComparison.OrdinalIgnoreCase) orderby name select name).ToArray(); string[] array3 = (from name in allAssetNames where name.EndsWith(".mesh", StringComparison.OrdinalIgnoreCase) || name.EndsWith(".fbx", StringComparison.OrdinalIgnoreCase) orderby name select name).ToArray(); string[] array4 = (from name in allAssetNames where name.EndsWith(".png", StringComparison.OrdinalIgnoreCase) || name.EndsWith(".tga", StringComparison.OrdinalIgnoreCase) || name.EndsWith(".tif", StringComparison.OrdinalIgnoreCase) orderby name select name).ToArray(); string[] array5 = (from name in allAssetNames where name.EndsWith(".anim", StringComparison.OrdinalIgnoreCase) || name.EndsWith(".controller", StringComparison.OrdinalIgnoreCase) || name.EndsWith(".mask", StringComparison.OrdinalIgnoreCase) orderby name select name).ToArray(); Log.Info($"AssetBundle '{((Object)assetBundle).name}' contains {allAssetNames.Length} assets total."); Log.Info($"Reusable groups: {array.Length} prefabs, {array2.Length} materials, {array3.Length} meshes/models, {array4.Length} textures, {array5.Length} animation assets."); if (array.Length != 0) { Log.Info("Prefabs in '" + ((Object)assetBundle).name + "':"); string[] array6 = array; foreach (string text in array6) { Log.Info("[Prefab] " + Path.GetFileNameWithoutExtension(text) + " <- " + text); } } if (array2.Length != 0) { Log.Info("Materials in '" + ((Object)assetBundle).name + "':"); string[] array7 = array2; foreach (string text2 in array7) { Log.Info("[Material] " + Path.GetFileNameWithoutExtension(text2) + " <- " + text2); } } if (array3.Length != 0) { Log.Info("Meshes/models in '" + ((Object)assetBundle).name + "':"); string[] array8 = array3; foreach (string text3 in array8) { Log.Info("[Mesh] " + Path.GetFileNameWithoutExtension(text3) + " <- " + text3); } } if (array4.Length != 0) { Log.Info("Textures in '" + ((Object)assetBundle).name + "':"); string[] array9 = array4; foreach (string text4 in array9) { Log.Info("[Texture] " + Path.GetFileNameWithoutExtension(text4) + " <- " + text4); } } if (array5.Length != 0) { Log.Info("Animation assets in '" + ((Object)assetBundle).name + "':"); string[] array10 = array5; foreach (string text5 in array10) { Log.Info("[Animation] " + Path.GetFileNameWithoutExtension(text5) + " <- " + text5); } } } internal static GameObject CloneTracer(string originalTracerName, string newTracerName) { if ((Object)(object)LegacyResourcesAPI.Load("Prefabs/Effects/Tracers/" + originalTracerName) == (Object)null) { return null; } GameObject val = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load("Prefabs/Effects/Tracers/" + originalTracerName), newTracerName, true); if (!Object.op_Implicit((Object)(object)val.GetComponent())) { val.AddComponent(); } if (!Object.op_Implicit((Object)(object)val.GetComponent())) { val.AddComponent(); } if (!Object.op_Implicit((Object)(object)val.GetComponent())) { val.AddComponent(); } val.GetComponent().speed = 250f; val.GetComponent().length = 50f; Content.CreateAndAddEffectDef(val); return val; } internal static void ConvertAllRenderersToHopooShader(GameObject objectToConvert) { if (!Object.op_Implicit((Object)(object)objectToConvert)) { return; } MeshRenderer[] componentsInChildren = objectToConvert.GetComponentsInChildren(); foreach (MeshRenderer val in componentsInChildren) { if (Object.op_Implicit((Object)(object)val) && Object.op_Implicit((Object)(object)((Renderer)val).sharedMaterial)) { ((Renderer)val).sharedMaterial.ConvertDefaultShaderToHopoo(); } } SkinnedMeshRenderer[] componentsInChildren2 = objectToConvert.GetComponentsInChildren(); foreach (SkinnedMeshRenderer val2 in componentsInChildren2) { if (Object.op_Implicit((Object)(object)val2) && Object.op_Implicit((Object)(object)((Renderer)val2).sharedMaterial)) { ((Renderer)val2).sharedMaterial.ConvertDefaultShaderToHopoo(); } } } internal static GameObject LoadCrosshair(string crosshairName) { GameObject val = LegacyResourcesAPI.Load("Prefabs/Crosshair/" + crosshairName + "Crosshair"); if ((Object)(object)val == (Object)null) { Log.Error("could not load crosshair with the name " + crosshairName + ". defaulting to Standard"); return LegacyResourcesAPI.Load("Prefabs/Crosshair/StandardCrosshair"); } return val; } internal static GameObject LoadEffect(this AssetBundle assetBundle, string resourceName, bool parentToTransform) { return assetBundle.LoadEffect(resourceName, "", parentToTransform); } internal static GameObject LoadEffect(this AssetBundle assetBundle, string resourceName, string soundName = "", bool parentToTransform = false) { //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) GameObject val = assetBundle.LoadAsset(resourceName); if (!Object.op_Implicit((Object)(object)val)) { Log.ErrorAssetBundle(resourceName, ((Object)assetBundle).name); return null; } val.AddComponent().duration = 12f; val.AddComponent(); val.AddComponent().vfxPriority = (VFXPriority)2; EffectComponent val2 = val.AddComponent(); val2.applyScale = false; val2.effectIndex = (EffectIndex)(-1); val2.parentToReferencedTransform = parentToTransform; val2.positionAtReferencedTransform = true; val2.soundName = soundName; Content.CreateAndAddEffectDef(val); return val; } internal static GameObject CreateProjectileGhostPrefab(this AssetBundle assetBundle, string ghostName) { GameObject val = assetBundle.LoadAsset(ghostName); if ((Object)(object)val == (Object)null) { Log.Error("Failed to load ghost prefab " + ghostName); } if (!Object.op_Implicit((Object)(object)val.GetComponent())) { val.AddComponent(); } if (!Object.op_Implicit((Object)(object)val.GetComponent())) { val.AddComponent(); } ConvertAllRenderersToHopooShader(val); return val; } internal static GameObject CloneProjectilePrefab(string prefabName, string newPrefabName) { return PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load("Prefabs/Projectiles/" + prefabName), newPrefabName); } internal static GameObject LoadAndAddProjectilePrefab(this AssetBundle assetBundle, string newPrefabName) { GameObject val = assetBundle.LoadAsset(newPrefabName); if ((Object)(object)val == (Object)null) { Log.ErrorAssetBundle(newPrefabName, ((Object)assetBundle).name); return null; } Content.AddProjectilePrefab(val); return val; } } public static class Config { public static ConfigFile MyConfig = ((BaseUnityPlugin)SeamstressVariantPlugin.instance).Config; public static ConfigEntry CharacterEnableConfig(string section, string characterName, string description = "", bool enabledByDefault = true) { if (string.IsNullOrEmpty(description)) { description = "Set to false to disable this character and as much of its code and content as possible"; } return BindAndOptions(section, "Enable " + characterName, enabledByDefault, description, restartRequired: true); } public static ConfigEntry BindAndOptions(string section, string name, T defaultValue, string description = "", bool restartRequired = false) { return BindAndOptions(section, name, defaultValue, 0f, 20f, description, restartRequired); } public static ConfigEntry BindAndOptions(string section, string name, T defaultValue, float min, float max, string description = "", bool restartRequired = false) { if (string.IsNullOrEmpty(description)) { description = name; } if (restartRequired) { description += " (restart required)"; } ConfigEntry result = MyConfig.Bind(section, name, defaultValue, description); if (Chainloader.PluginInfos.ContainsKey("com.rune580.riskofoptions")) { } return result; } public static ConfigEntry BindAndOptionsSlider(string section, string name, float defaultValue, string description, float min = 0f, float max = 20f, bool restartRequired = false) { return BindAndOptions(section, name, defaultValue, min, max, description, restartRequired); } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] private static void TryRegisterOption(ConfigEntry entry, float min, float max, bool restartRequired) { } public static bool GetKeyPressed(KeyboardShortcut entry) { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) foreach (KeyCode modifier in ((KeyboardShortcut)(ref entry)).Modifiers) { if (!Input.GetKey(modifier)) { return false; } } return Input.GetKeyDown(((KeyboardShortcut)(ref entry)).MainKey); } } internal class Content { internal static void AddCharacterBodyPrefab(GameObject bprefab) { ContentPacks.bodyPrefabs.Add(bprefab); } internal static void AddMasterPrefab(GameObject prefab) { ContentPacks.masterPrefabs.Add(prefab); } internal static void AddProjectilePrefab(GameObject prefab) { ContentPacks.projectilePrefabs.Add(prefab); } internal static void AddSurvivorDef(SurvivorDef survivorDef) { ContentPacks.survivorDefs.Add(survivorDef); } internal static void CreateSurvivor(GameObject bodyPrefab, GameObject displayPrefab, Color charColor, string tokenPrefix) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) CreateSurvivor(bodyPrefab, displayPrefab, charColor, tokenPrefix, null, 100f); } internal static void CreateSurvivor(GameObject bodyPrefab, GameObject displayPrefab, Color charColor, string tokenPrefix, float sortPosition) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) CreateSurvivor(bodyPrefab, displayPrefab, charColor, tokenPrefix, null, sortPosition); } internal static void CreateSurvivor(GameObject bodyPrefab, GameObject displayPrefab, Color charColor, string tokenPrefix, UnlockableDef unlockableDef) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) CreateSurvivor(bodyPrefab, displayPrefab, charColor, tokenPrefix, unlockableDef, 100f); } internal static void CreateSurvivor(GameObject bodyPrefab, GameObject displayPrefab, Color charColor, string tokenPrefix, UnlockableDef unlockableDef, float sortPosition) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) SurvivorDef val = ScriptableObject.CreateInstance(); val.bodyPrefab = bodyPrefab; val.displayPrefab = displayPrefab; val.primaryColor = charColor; val.cachedName = ((Object)bodyPrefab).name.Replace("Body", ""); val.displayNameToken = tokenPrefix + "NAME"; val.descriptionToken = tokenPrefix + "DESCRIPTION"; val.outroFlavorToken = tokenPrefix + "OUTRO_FLAVOR"; val.mainEndingEscapeFailureFlavorToken = tokenPrefix + "OUTRO_FAILURE"; val.desiredSortPosition = sortPosition; val.unlockableDef = unlockableDef; AddSurvivorDef(val); if ((Object)(object)bodyPrefab != (Object)null) { SurvivorVariantDef val2 = ScriptableObject.CreateInstance(); ((Object)val2).name = "SeamstressVariant"; val2.DisplayName = "Seamstress Variant"; val2.VariantSurvivor = val; val2.Color = charColor; SurvivorDef targetSurvivor = ContentPacks.survivorDefs[0]; val2.TargetSurvivor = targetSurvivor; val2.Description = "And so they will witness your defiance."; SurvivorVariantCatalog.AddSurvivorVariant(val2); val.hidden = true; } else { Log.Error("SeamstressVariant: bodyPrefab is null, skipping SurvivorVariantDef registration."); } } internal static void AddUnlockableDef(UnlockableDef unlockableDef) { ContentPacks.unlockableDefs.Add(unlockableDef); } internal static UnlockableDef CreateAndAddUnlockbleDef(string identifier, string nameToken, Sprite achievementIcon) { UnlockableDef val = ScriptableObject.CreateInstance(); val.cachedName = identifier; val.nameToken = nameToken; val.achievementIcon = achievementIcon; AddUnlockableDef(val); return val; } internal static void AddSkillDef(SkillDef skillDef) { ContentPacks.skillDefs.Add(skillDef); } internal static void AddSkillFamily(SkillFamily skillFamily) { ContentPacks.skillFamilies.Add(skillFamily); } internal static void AddEntityState(Type entityState) { ContentPacks.entityStates.Add(entityState); } internal static void AddBuffDef(BuffDef buffDef) { ContentPacks.buffDefs.Add(buffDef); } internal static BuffDef CreateAndAddBuff(string buffName, Sprite buffIcon, Color buffColor, bool canStack, bool isDebuff) { //IL_0010: 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) BuffDef val = ScriptableObject.CreateInstance(); ((Object)val).name = buffName; val.buffColor = buffColor; val.canStack = canStack; val.isDebuff = isDebuff; val.eliteDef = null; val.iconSprite = buffIcon; AddBuffDef(val); return val; } internal static void AddEffectDef(EffectDef effectDef) { ContentPacks.effectDefs.Add(effectDef); } internal static EffectDef CreateAndAddEffectDef(GameObject effectPrefab) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown EffectDef val = new EffectDef(effectPrefab); AddEffectDef(val); return val; } internal static void AddNetworkSoundEventDef(NetworkSoundEventDef networkSoundEventDef) { ContentPacks.networkSoundEventDefs.Add(networkSoundEventDef); } internal static NetworkSoundEventDef CreateAndAddNetworkSoundEventDef(string eventName) { NetworkSoundEventDef val = ScriptableObject.CreateInstance(); val.akId = AkSoundEngine.GetIDFromString(eventName); val.eventName = eventName; AddNetworkSoundEventDef(val); return val; } } internal class ContentPacks : IContentPackProvider { internal ContentPack contentPack = new ContentPack(); public static List bodyPrefabs = new List(); public static List masterPrefabs = new List(); public static List projectilePrefabs = new List(); public static List survivorDefs = new List(); public static List unlockableDefs = new List(); public static List skillFamilies = new List(); public static List skillDefs = new List(); public static List entityStates = new List(); public static List buffDefs = new List(); public static List effectDefs = new List(); public static List networkSoundEventDefs = new List(); public string identifier => "com.levinter.SeamstressVariant"; public void Initialize() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown ContentManager.collectContentPackProviders += new CollectContentPackProvidersDelegate(ContentManager_collectContentPackProviders); } private void ContentManager_collectContentPackProviders(AddContentPackProviderDelegate addContentPackProvider) { addContentPackProvider.Invoke((IContentPackProvider)(object)this); } public IEnumerator LoadStaticContentAsync(LoadStaticContentAsyncArgs args) { contentPack.identifier = identifier; contentPack.bodyPrefabs.Add(bodyPrefabs.ToArray()); contentPack.masterPrefabs.Add(masterPrefabs.ToArray()); contentPack.projectilePrefabs.Add(projectilePrefabs.ToArray()); contentPack.survivorDefs.Add(survivorDefs.ToArray()); contentPack.unlockableDefs.Add(unlockableDefs.ToArray()); contentPack.skillDefs.Add(skillDefs.ToArray()); contentPack.skillFamilies.Add(skillFamilies.ToArray()); contentPack.entityStateTypes.Add(entityStates.ToArray()); contentPack.buffDefs.Add(buffDefs.ToArray()); contentPack.effectDefs.Add(effectDefs.ToArray()); contentPack.networkSoundEventDefs.Add(networkSoundEventDefs.ToArray()); args.ReportProgress(1f); yield break; } public IEnumerator GenerateContentPackAsync(GetContentPackAsyncArgs args) { ContentPack.Copy(contentPack, args.output); args.ReportProgress(1f); yield break; } public IEnumerator FinalizeAsync(FinalizeAsyncArgs args) { args.ReportProgress(1f); yield break; } } internal static class ItemDisplayCheck { public static List allDisplayedItems; public static void PrintUnused(ItemDisplayRuleSet itemDisplayRuleSet, string bodyName = "") { PrintUnused((IEnumerable)itemDisplayRuleSet.keyAssetRuleGroups.ToList(), bodyName); } public static void PrintUnused(IEnumerable ruleSet = null, string bodyName = "") { //IL_0048: 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_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) string text = "generating item displays for " + bodyName; if (allDisplayedItems == null) { LazyGatherAllItems(); } List list = new List(allDisplayedItems); string text2 = ""; if (ruleSet != null) { foreach (KeyAssetRuleGroup item in ruleSet) { if (item.displayRuleGroup.rules.Length != 0) { list.Remove(item.keyAsset); if (string.IsNullOrEmpty(text2)) { text2 = item.displayRuleGroup.rules[0].childName; } } } } if (string.IsNullOrEmpty(text2)) { text2 = "Chest"; } foreach (Object item2 in list) { string text3 = ""; if (ItemDisplays.KeyAssetDisplayPrefabs.ContainsKey(item2)) { text3 += SpitOutNewRule(item2, text2, ItemDisplays.KeyAssetDisplayPrefabs[item2]); } else { Log.Error($"COULD NOT FIND DISPLAY PREFABS FOR KEYASSET {item2}"); } text += text3; } Log.Message(text); } private static void LazyGatherAllItems() { allDisplayedItems = new List(ItemDisplays.KeyAssetDisplayPrefabs.Keys); allDisplayedItems.Sort(delegate(Object item1, Object item2) { if (item1 is ItemDef && item2 is ItemDef) { return item1.name.CompareTo(item2.name); } if (item1 is EquipmentDef && item2 is EquipmentDef) { return item1.name.CompareTo(item2.name); } if (item1 is ItemDef && item2 is EquipmentDef) { return -1; } return (item1 is EquipmentDef && item2 is ItemDef) ? 1 : 0; }); } private static string SpitOutNewRule(Object asset, string firstCompatibleChild, ItemDisplayRule[] displayRules) { //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Invalid comparison between Unknown and I4 //IL_00a5: Unknown result type (might be due to invalid IL or missing references) if (displayRules.Length == 0) { return $"\n[NO DISPLAY RULES FOUND FOR THE KEYASSET {asset}"; } string text = "\n itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets[\"" + asset.name + "\"]"; for (int i = 0; i < displayRules.Length; i++) { text = (((int)displayRules[i].limbMask != 0) ? (text + ",\n" + $" ItemDisplays.CreateLimbMaskDisplayRule(LimbFlags.{displayRules[i].limbMask})") : (text + ",\n ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay(\"" + ((Object)displayRules[i].followerPrefab).name + "\"),\n \"" + firstCompatibleChild + "\",\n new Vector3(2, 2, 2),\n new Vector3(0, 0, 0),\n new Vector3(1, 1, 1)\n )")); } return text + "\n ));"; } } internal static class ItemDisplays { private static Dictionary itemDisplayPrefabs = new Dictionary(); public static Dictionary KeyAssetDisplayPrefabs = new Dictionary(); public static Dictionary KeyAssets = new Dictionary(); public static int queuedDisplays; public static bool initialized = false; public static void LazyInit() { if (!initialized) { initialized = true; PopulateDisplays(); } } internal static void DisposeWhenDone() { queuedDisplays--; if (queuedDisplays <= 0 && initialized) { initialized = false; itemDisplayPrefabs = null; KeyAssetDisplayPrefabs = null; KeyAssets = null; } } internal static void PopulateDisplays() { PopulateFromBody("LoaderBody"); } private static void PopulateFromBody(string bodyName) { ItemDisplayRuleSet itemDisplayRuleSet = ((Component)LegacyResourcesAPI.Load("Prefabs/CharacterBodies/" + bodyName).GetComponent().modelTransform).GetComponent().itemDisplayRuleSet; KeyAssetRuleGroup[] keyAssetRuleGroups = itemDisplayRuleSet.keyAssetRuleGroups; for (int i = 0; i < keyAssetRuleGroups.Length; i++) { ItemDisplayRule[] rules = keyAssetRuleGroups[i].displayRuleGroup.rules; KeyAssetDisplayPrefabs[keyAssetRuleGroups[i].keyAsset] = rules; KeyAssets[keyAssetRuleGroups[i].keyAsset.name] = keyAssetRuleGroups[i].keyAsset; for (int j = 0; j < rules.Length; j++) { GameObject followerPrefab = rules[j].followerPrefab; if (Object.op_Implicit((Object)(object)followerPrefab)) { string key = ((Object)followerPrefab).name?.ToLowerInvariant(); if (!itemDisplayPrefabs.ContainsKey(key)) { itemDisplayPrefabs[key] = followerPrefab; } } } } } private static void PopulateCustomLightningArm() { GameObject val = PrefabAPI.InstantiateClone(itemDisplayPrefabs["displaylightningarmright"], "DisplayLightningCustom", false); LimbMatcher component = val.GetComponent(); component.limbPairs[0].targetChildLimb = "LightningArm1"; component.limbPairs[1].targetChildLimb = "LightningArm2"; component.limbPairs[2].targetChildLimb = "LightningArmEnd"; itemDisplayPrefabs["displaylightningarmcustom"] = val; } public static GameObject LoadDisplay(string name) { if (itemDisplayPrefabs.ContainsKey(name.ToLowerInvariant()) && Object.op_Implicit((Object)(object)itemDisplayPrefabs[name.ToLowerInvariant()])) { return itemDisplayPrefabs[name.ToLowerInvariant()]; } Log.Error("item display " + name + " returned null"); return null; } public static KeyAssetRuleGroup CreateDisplayRuleGroupWithRules(string itemName, params ItemDisplayRule[] rules) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) return CreateDisplayRuleGroupWithRules(GetKeyAssetFromString(itemName), rules); } public static KeyAssetRuleGroup CreateDisplayRuleGroupWithRules(Object keyAsset_, params ItemDisplayRule[] rules) { //IL_0019: 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_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) if (keyAsset_ == (Object)null) { Log.Error("could not find keyasset"); } return new KeyAssetRuleGroup { keyAsset = keyAsset_, displayRuleGroup = new DisplayRuleGroup { rules = rules } }; } public static ItemDisplayRule CreateDisplayRule(string prefabName, string childName, Vector3 position, Vector3 rotation, Vector3 scale) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0009: 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) return CreateDisplayRule(LoadDisplay(prefabName), childName, position, rotation, scale); } public static ItemDisplayRule CreateDisplayRule(GameObject itemPrefab, string childName, Vector3 position, Vector3 rotation, Vector3 scale) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0024: 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_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0033: 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_003b: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) return new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, childName = childName, followerPrefab = itemPrefab, limbMask = (LimbFlags)0, localPos = position, localAngles = rotation, localScale = scale }; } public static ItemDisplayRule CreateLimbMaskDisplayRule(LimbFlags limb) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) return new ItemDisplayRule { ruleType = (ItemDisplayRuleType)1, limbMask = limb, childName = "", followerPrefab = null }; } private static Object GetKeyAssetFromString(string itemName) { Object val = (Object)(object)LegacyResourcesAPI.Load("ItemDefs/" + itemName); if (val == (Object)null) { val = (Object)(object)LegacyResourcesAPI.Load("EquipmentDefs/" + itemName); } if (val == (Object)null) { Log.Error("Could not load keyasset for " + itemName); } return val; } } internal static class Language { public static string TokensOutput = ""; public static bool usingLanguageFolder = false; public static bool printingEnabled = false; public static void Init() { if (usingLanguageFolder) { Language.collectLanguageRootFolders += Language_collectLanguageRootFolders; } } private static void Language_collectLanguageRootFolders(List obj) { string text = Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)SeamstressVariantPlugin.instance).Info.Location), "Language"); if (Directory.Exists(text)) { obj.Add(text); } } public static void Add(string token, string text) { if (!usingLanguageFolder) { LanguageAPI.Add(token, text); } if (printingEnabled) { TokensOutput = TokensOutput + "\n \"" + token + "\" : \"" + text.Replace(Environment.NewLine, "\\n").Replace("\n", "\\n") + "\","; } } public static void PrintOutput(string fileName = "") { if (printingEnabled) { string text = "{\n strings:\n {" + TokensOutput + "\n }\n}"; Log.Message(fileName + ": \n" + text); if (!string.IsNullOrEmpty(fileName)) { string path = Path.Combine(Directory.GetParent(((BaseUnityPlugin)SeamstressVariantPlugin.instance).Info.Location).FullName, "Language", "en", fileName); File.WriteAllText(path, text); } TokensOutput = ""; } } } internal static class Materials { private static List cachedMaterials = new List(); internal static Shader hotpoo = LegacyResourcesAPI.Load("Shaders/Deferred/HGStandard"); public static Material LoadMaterial(this AssetBundle assetBundle, string materialName) { return assetBundle.CreateHopooMaterialFromBundle(materialName); } public static Material CreateHopooMaterialFromBundle(this AssetBundle assetBundle, string materialName) { //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Expected O, but got Unknown Material val = cachedMaterials.Find(delegate(Material mat) { materialName.Replace(" (Instance)", ""); return ((Object)mat).name.Contains(materialName); }); if (Object.op_Implicit((Object)(object)val)) { Log.Debug(((Object)val).name + " has already been loaded. returning cached"); return val; } val = assetBundle.LoadAsset(materialName); if (!Object.op_Implicit((Object)(object)val)) { Log.ErrorAssetBundle(materialName, ((Object)assetBundle).name); return new Material(hotpoo); } return val.ConvertDefaultShaderToHopoo(); } public static Material SetHopooMaterial(this Material tempMat) { return tempMat.ConvertDefaultShaderToHopoo(); } public static Material ConvertDefaultShaderToHopoo(this Material tempMat) { //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_015c: Unknown result type (might be due to invalid IL or missing references) if (cachedMaterials.Contains(tempMat)) { Log.Debug(((Object)tempMat).name + " has already been converted. returning cached"); return tempMat; } string text = ((Object)tempMat.shader).name.ToLowerInvariant(); if (!text.StartsWith("standard") && !text.StartsWith("autodesk")) { Log.Debug(((Object)tempMat).name + " is not unity standard shader. aborting material conversion"); return tempMat; } float? num = null; Color? val = null; if (tempMat.IsKeywordEnabled("_NORMALMAP")) { num = tempMat.GetFloat("_BumpScale"); } if (tempMat.IsKeywordEnabled("_EMISSION")) { val = tempMat.GetColor("_EmissionColor"); } tempMat.shader = hotpoo; tempMat.SetTexture("_EmTex", tempMat.GetTexture("_EmissionMap")); tempMat.EnableKeyword("DITHER"); if (num.HasValue) { tempMat.SetFloat("_NormalStrength", num.Value); tempMat.SetTexture("_NormalTex", tempMat.GetTexture("_BumpMap")); } if (val.HasValue) { tempMat.SetColor("_EmColor", val.Value); tempMat.SetFloat("_EmPower", 1f); } if (tempMat.IsKeywordEnabled("NOCULL")) { tempMat.SetInt("_Cull", 0); } if (tempMat.IsKeywordEnabled("LIMBREMOVAL")) { tempMat.SetInt("_LimbRemovalOn", 1); } cachedMaterials.Add(tempMat); return tempMat; } public static Material MakeUnique(this Material material) { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Expected O, but got Unknown if (cachedMaterials.Contains(material)) { return new Material(material); } return material; } public static Material SetColor(this Material material, Color color) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) material.SetColor("_Color", color); return material; } public static Material SetNormal(this Material material, float normalStrength = 1f) { material.SetFloat("_NormalStrength", normalStrength); return material; } public static Material SetEmission(this Material material) { return material.SetEmission(1f); } public static Material SetEmission(this Material material, float emission) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) return material.SetEmission(emission, Color.white); } public static Material SetEmission(this Material material, float emission, Color emissionColor) { //IL_0014: Unknown result type (might be due to invalid IL or missing references) material.SetFloat("_EmPower", emission); material.SetColor("_EmColor", emissionColor); return material; } public static Material SetCull(this Material material, bool cull = false) { material.SetInt("_Cull", cull ? 1 : 0); return material; } public static Material SetSpecular(this Material material, float strength) { material.SetFloat("_SpecularStrength", strength); return material; } public static Material SetSpecular(this Material material, float strength, float exponent) { material.SetFloat("_SpecularStrength", strength); material.SetFloat("SpecularExponent", exponent); return material; } } internal static class Prefabs { private static PhysicMaterial ragdollMaterial; public static GameObject CreateDisplayPrefab(AssetBundle assetBundle, string displayPrefabName, GameObject prefab) { GameObject val = assetBundle.LoadAsset(displayPrefabName); if ((Object)(object)val == (Object)null) { Log.Error("could not load display prefab " + displayPrefabName + ". Make sure this prefab exists in assetbundle " + ((Object)assetBundle).name); return null; } CharacterModel val2 = val.GetComponent(); if (!Object.op_Implicit((Object)(object)val2)) { val2 = val.AddComponent(); } val2.baseRendererInfos = prefab.GetComponentInChildren().baseRendererInfos; Asset.ConvertAllRenderersToHopooShader(val); return val; } public static GameObject LoadCharacterModel(AssetBundle assetBundle, string modelName) { GameObject val = assetBundle.LoadAsset(modelName); if ((Object)(object)val == (Object)null) { Log.Error("could not load model prefab " + modelName + ". Make sure this prefab exists in assetbundle " + ((Object)assetBundle).name); return null; } return val; } public static GameObject LoadCharacterBody(AssetBundle assetBundle, string bodyName) { GameObject val = assetBundle.LoadAsset(bodyName); if ((Object)(object)val == (Object)null) { Log.Error("could not load body prefab " + bodyName + ". Make sure this prefab exists in assetbundle " + ((Object)assetBundle).name); return null; } return val; } public static GameObject CloneCharacterBody(BodyInfo bodyInfo) { GameObject val = LegacyResourcesAPI.Load("Prefabs/CharacterBodies/" + bodyInfo.bodyNameToClone + "Body"); if (!Object.op_Implicit((Object)(object)val)) { Log.Error(bodyInfo.bodyNameToClone + " Body to clone is not a valid body, character creation failed"); return null; } GameObject val2 = PrefabAPI.InstantiateClone(val, bodyInfo.bodyName); for (int num = val2.transform.childCount - 1; num >= 0; num--) { Object.DestroyImmediate((Object)(object)((Component)val2.transform.GetChild(num)).gameObject); } return val2; } public static GameObject CreateBodyPrefab(AssetBundle assetBundle, string modelPrefabName, BodyInfo bodyInfo) { return CreateBodyPrefab(LoadCharacterModel(assetBundle, modelPrefabName), bodyInfo); } public static GameObject CreateBodyPrefab(GameObject model, BodyInfo bodyInfo) { return CreateBodyPrefab(CloneCharacterBody(bodyInfo), model, bodyInfo); } public static GameObject CreateBodyPrefab(GameObject newBodyPrefab, AssetBundle assetBundle, string modelName, BodyInfo bodyInfo) { return CreateBodyPrefab(newBodyPrefab, LoadCharacterModel(assetBundle, modelName), bodyInfo); } public static GameObject CreateBodyPrefab(AssetBundle assetBundle, string bodyPrefabName, string modelPrefabName, BodyInfo bodyInfo) { return CreateBodyPrefab(LoadCharacterBody(assetBundle, bodyPrefabName), LoadCharacterModel(assetBundle, modelPrefabName), bodyInfo); } public static GameObject CreateBodyPrefab(GameObject newBodyPrefab, GameObject model, BodyInfo bodyInfo) { if ((Object)(object)model == (Object)null || (Object)(object)newBodyPrefab == (Object)null) { Log.Error($"Character creation failed. Model: {model}, Body: {newBodyPrefab}"); return null; } SetupCharacterBody(newBodyPrefab, bodyInfo); Transform modelBaseTransform = AddCharacterModelToSurvivorBody(newBodyPrefab, model.transform, bodyInfo); SetupModelLocator(newBodyPrefab, modelBaseTransform, model.transform); SetupCharacterDirection(newBodyPrefab, modelBaseTransform, model.transform); SetupCameraTargetParams(newBodyPrefab, bodyInfo); SetupCapsuleCollider(newBodyPrefab); Content.AddCharacterBodyPrefab(newBodyPrefab); return newBodyPrefab; } private static void SetupCharacterBody(GameObject newBodyPrefab, BodyInfo bodyInfo) { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_01fd: Unknown result type (might be due to invalid IL or missing references) //IL_020b: Unknown result type (might be due to invalid IL or missing references) CharacterBody component = newBodyPrefab.GetComponent(); component.baseNameToken = bodyInfo.bodyNameToken; component.subtitleNameToken = bodyInfo.subtitleNameToken; component.portraitIcon = bodyInfo.characterPortrait; component.bodyColor = bodyInfo.bodyColor; component._defaultCrosshairPrefab = bodyInfo.crosshair; component.hideCrosshair = false; component.preferredPodPrefab = bodyInfo.podPrefab; component.baseMaxHealth = bodyInfo.maxHealth; component.baseRegen = bodyInfo.healthRegen; component.baseArmor = bodyInfo.armor; component.baseMaxShield = bodyInfo.shield; component.baseDamage = bodyInfo.damage; component.baseAttackSpeed = bodyInfo.attackSpeed; component.baseCrit = bodyInfo.crit; component.baseMoveSpeed = bodyInfo.moveSpeed; component.baseJumpPower = bodyInfo.jumpPower; component.autoCalculateLevelStats = bodyInfo.autoCalculateLevelStats; if (bodyInfo.autoCalculateLevelStats) { component.levelMaxHealth = Mathf.Round(component.baseMaxHealth * 0.3f); component.levelMaxShield = Mathf.Round(component.baseMaxShield * 0.3f); component.levelRegen = component.baseRegen * 0.2f; component.levelMoveSpeed = 0f; component.levelJumpPower = 0f; component.levelDamage = component.baseDamage * 0.2f; component.levelAttackSpeed = 0f; component.levelCrit = 0f; component.levelArmor = 0f; } else { component.levelMaxHealth = bodyInfo.healthGrowth; component.levelMaxShield = bodyInfo.shieldGrowth; component.levelRegen = bodyInfo.regenGrowth; component.levelMoveSpeed = bodyInfo.moveSpeedGrowth; component.levelJumpPower = bodyInfo.jumpPowerGrowth; component.levelDamage = bodyInfo.damageGrowth; component.levelAttackSpeed = bodyInfo.attackSpeedGrowth; component.levelCrit = bodyInfo.critGrowth; component.levelArmor = bodyInfo.armorGrowth; } component.baseAcceleration = bodyInfo.acceleration; component.baseJumpCount = bodyInfo.jumpCount; component.sprintingSpeedMultiplier = 1.45f; component.bodyFlags = (BodyFlags)16; component.rootMotionInMainState = false; component.hullClassification = (HullClassification)0; component.isChampion = false; } private static Transform AddCharacterModelToSurvivorBody(GameObject bodyPrefab, Transform modelTransform, BodyInfo bodyInfo) { //IL_0063: 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_0023: 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_0049: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Unknown result type (might be due to invalid IL or missing references) Transform val = bodyPrefab.transform.Find("ModelBase"); if ((Object)(object)val == (Object)null) { val = new GameObject("ModelBase").transform; val.parent = bodyPrefab.transform; val.localPosition = bodyInfo.modelBasePosition; val.localRotation = Quaternion.identity; } modelTransform.parent = ((Component)val).transform; modelTransform.localPosition = Vector3.zero; modelTransform.localRotation = Quaternion.identity; Transform val2 = bodyPrefab.transform.Find("CameraPivot"); if ((Object)(object)val2 == (Object)null) { val2 = new GameObject("CameraPivot").transform; val2.parent = bodyPrefab.transform; val2.localPosition = bodyInfo.cameraPivotPosition; val2.localRotation = Quaternion.identity; } Transform val3 = bodyPrefab.transform.Find("AimOrigin"); if ((Object)(object)val3 == (Object)null) { val3 = new GameObject("AimOrigin").transform; val3.parent = bodyPrefab.transform; val3.localPosition = bodyInfo.aimOriginPosition; val3.localRotation = Quaternion.identity; } bodyPrefab.GetComponent().aimOriginTransform = val3; return ((Component)val).transform; } private static void SetupCharacterDirection(GameObject prefab, Transform modelBaseTransform, Transform modelTransform) { if (Object.op_Implicit((Object)(object)prefab.GetComponent())) { CharacterDirection component = prefab.GetComponent(); component.targetTransform = modelBaseTransform; component.overrideAnimatorForwardTransform = null; component.rootMotionAccumulator = null; component.modelAnimator = ((Component)modelTransform).GetComponent(); component.driveFromRootRotation = false; component.turnSpeed = 720f; } } private static void SetupCameraTargetParams(GameObject prefab, BodyInfo bodyInfo) { CameraTargetParams component = prefab.GetComponent(); component.cameraParams = bodyInfo.cameraParams; component.cameraPivotTransform = prefab.transform.Find("CameraPivot"); } private static void SetupModelLocator(GameObject prefab, Transform modelBaseTransform, Transform modelTransform) { ModelLocator component = prefab.GetComponent(); component.modelTransform = modelTransform; component.modelBaseTransform = modelBaseTransform; } private static void SetupCapsuleCollider(GameObject prefab) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) CapsuleCollider component = prefab.GetComponent(); component.center = new Vector3(0f, 0f, 0f); component.radius = 0.5f; component.height = 1.82f; component.direction = 1; } public static CharacterModel SetupCharacterModel(GameObject bodyPrefab, CustomRendererInfo[] customInfos = null) { CharacterModel val = ((Component)bodyPrefab.GetComponent().modelTransform).gameObject.GetComponent(); bool flag = (Object)(object)val != (Object)null; if (!flag) { val = ((Component)bodyPrefab.GetComponent().modelTransform).gameObject.AddComponent(); } val.body = bodyPrefab.GetComponent(); val.autoPopulateLightInfos = true; val.invisibilityCount = 0; val.temporaryOverlays = new List(); if (!flag) { SetupCustomRendererInfos(val, customInfos); } else { SetupPreAttachedRendererInfos(val); } SetupHurtboxGroup(bodyPrefab, ((Component)val).gameObject); SetupAimAnimator(bodyPrefab, ((Component)val).gameObject); SetupFootstepController(((Component)val).gameObject); SetupRagdoll(((Component)val).gameObject); return val; } public static void SetupPreAttachedRendererInfos(CharacterModel characterModel) { for (int i = 0; i < characterModel.baseRendererInfos.Length; i++) { if ((Object)(object)characterModel.baseRendererInfos[i].defaultMaterial == (Object)null) { characterModel.baseRendererInfos[i].defaultMaterial = characterModel.baseRendererInfos[i].renderer.sharedMaterial; } if ((Object)(object)characterModel.baseRendererInfos[i].defaultMaterial == (Object)null) { Log.Error($"no material for rendererinfo of this renderer: {characterModel.baseRendererInfos[i].renderer}"); } characterModel.baseRendererInfos[i].defaultMaterial.ConvertDefaultShaderToHopoo(); } } public static void SetupCustomRendererInfos(CharacterModel characterModel, CustomRendererInfo[] customInfos) { //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) ChildLocator component = ((Component)characterModel).GetComponent(); if (!Object.op_Implicit((Object)(object)component)) { Log.Error("Failed CharacterModel setup: ChildLocator component does not exist on the model"); return; } List list = new List(); for (int i = 0; i < customInfos.Length; i++) { if (!Object.op_Implicit((Object)(object)component.FindChild(customInfos[i].childName))) { Log.Error("Trying to add a RendererInfo for a renderer that does not exist: " + customInfos[i].childName); continue; } Renderer component2 = ((Component)component.FindChild(customInfos[i].childName)).GetComponent(); if (Object.op_Implicit((Object)(object)component2)) { Material val = customInfos[i].material; if ((Object)(object)val == (Object)null) { val = ((!customInfos[i].dontHotpoo) ? component2.sharedMaterial.ConvertDefaultShaderToHopoo() : component2.sharedMaterial); } list.Add(new RendererInfo { renderer = component2, defaultMaterial = val, ignoreOverlays = customInfos[i].ignoreOverlays, defaultShadowCastingMode = (ShadowCastingMode)1 }); } } characterModel.baseRendererInfos = list.ToArray(); } private static void SetupHurtboxGroup(GameObject bodyPrefab, GameObject model) { SetupMainHurtboxesFromChildLocator(bodyPrefab, model); SetHurtboxesHealthComponents(bodyPrefab); } private static void SetupMainHurtboxesFromChildLocator(GameObject bodyPrefab, GameObject model) { //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)bodyPrefab.GetComponent() != (Object)null) { Log.Debug("Hitboxgroup already exists on model prefab. aborting code setup"); return; } ChildLocator component = model.GetComponent(); if (string.IsNullOrEmpty(component.FindChildNameInsensitive("MainHurtbox"))) { Log.Error("Could not set up main hurtbox: make sure you have a transform pair in your prefab's ChildLocator called 'MainHurtbox'"); return; } HurtBoxGroup val = model.AddComponent(); HurtBox val2 = null; GameObject val3 = component.FindChildGameObjectInsensitive("HeadHurtbox"); if (Object.op_Implicit((Object)(object)val3)) { Log.Debug("HeadHurtboxFound. Setting up"); val2 = val3.AddComponent(); ((Component)val2).gameObject.layer = LayerIndex.entityPrecise.intVal; val2.healthComponent = bodyPrefab.GetComponent(); val2.isBullseye = false; val2.isSniperTarget = true; val2.damageModifier = (DamageModifier)0; val2.hurtBoxGroup = val; val2.indexInGroup = 1; } HurtBox val4 = component.FindChildGameObjectInsensitive("MainHurtbox").AddComponent(); ((Component)val4).gameObject.layer = LayerIndex.entityPrecise.intVal; val4.healthComponent = bodyPrefab.GetComponent(); val4.isBullseye = true; val4.isSniperTarget = (Object)(object)val2 == (Object)null; val4.damageModifier = (DamageModifier)0; val4.hurtBoxGroup = val; val4.indexInGroup = 0; if (Object.op_Implicit((Object)(object)val2)) { val.hurtBoxes = (HurtBox[])(object)new HurtBox[2] { val4, val2 }; } else { val.hurtBoxes = (HurtBox[])(object)new HurtBox[1] { val4 }; } val.mainHurtBox = val4; val.bullseyeCount = 1; } private static string FindChildNameInsensitive(this ChildLocator childLocator, string child) { //IL_0025: Unknown result type (might be due to invalid IL or missing references) return childLocator.transformPairs.Where((NameTransformPair pair) => pair.name.ToLowerInvariant() == child.ToLowerInvariant()).FirstOrDefault().name; } private static Transform FindChildInsensitive(this ChildLocator childLocator, string child) { return childLocator.FindChild(childLocator.FindChildNameInsensitive(child)); } private static GameObject FindChildGameObjectInsensitive(this ChildLocator childLocator, string child) { return childLocator.FindChildGameObject(childLocator.FindChildNameInsensitive(child)); } public static void SetHurtboxesHealthComponents(GameObject bodyPrefab) { HealthComponent component = bodyPrefab.GetComponent(); HurtBoxGroup[] componentsInChildren = bodyPrefab.GetComponentsInChildren(); foreach (HurtBoxGroup val in componentsInChildren) { val.mainHurtBox.healthComponent = component; for (int j = 0; j < val.hurtBoxes.Length; j++) { val.hurtBoxes[j].healthComponent = component; } } } private static void SetupFootstepController(GameObject model) { FootstepHandler val = model.AddComponent(); val.baseFootstepString = "Play_player_footstep"; val.sprintFootstepOverrideString = ""; val.enableFootstepDust = true; val.footstepDustPrefab = LegacyResourcesAPI.Load("Prefabs/GenericFootstepDust"); } private static void SetupRagdoll(GameObject model) { RagdollController component = model.GetComponent(); if (!Object.op_Implicit((Object)(object)component)) { return; } if ((Object)(object)ragdollMaterial == (Object)null) { ragdollMaterial = ((Component)LegacyResourcesAPI.Load("Prefabs/CharacterBodies/CommandoBody").GetComponentInChildren().bones[1]).GetComponent().material; } Transform[] bones = component.bones; foreach (Transform val in bones) { if (Object.op_Implicit((Object)(object)val)) { ((Component)val).gameObject.layer = LayerIndex.ragdoll.intVal; Collider component2 = ((Component)val).GetComponent(); if (Object.op_Implicit((Object)(object)component2)) { component2.sharedMaterial = ragdollMaterial; } else { Log.Error($"Ragdoll bone {((Component)val).gameObject} doesn't have a collider. Ragdoll will break."); } } } } private static void SetupAimAnimator(GameObject prefab, GameObject model) { AimAnimator val = model.AddComponent(); val.directionComponent = prefab.GetComponent(); val.pitchRangeMax = 60f; val.pitchRangeMin = -60f; val.yawRangeMin = -80f; val.yawRangeMax = 80f; val.pitchGiveupRange = 30f; val.yawGiveupRange = 10f; val.giveupDuration = 3f; val.inputBank = prefab.GetComponent(); } public static void CreateGenericDoppelganger(GameObject bodyPrefab, string masterName, string masterToCopy) { CloneDopplegangerMaster(bodyPrefab, masterName, masterToCopy); } public static GameObject CloneDopplegangerMaster(GameObject bodyPrefab, string masterName, string masterToCopy) { GameObject val = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load("Prefabs/CharacterMasters/" + masterToCopy + "MonsterMaster"), masterName, true); val.GetComponent().bodyPrefab = bodyPrefab; Content.AddMasterPrefab(val); return val; } public static GameObject CreateBlankMasterPrefab(GameObject bodyPrefab, string masterName) { GameObject val = PrefabAPI.InstantiateClone(LegacyResourcesAPI.Load("Prefabs/CharacterMasters/CommandoMonsterMaster"), masterName, true); ContentPacks.masterPrefabs.Add(val); CharacterMaster component = val.GetComponent(); component.bodyPrefab = bodyPrefab; AISkillDriver[] components = val.GetComponents(); for (int i = 0; i < components.Length; i++) { Object.Destroy((Object)(object)components[i]); } return val; } public static GameObject LoadMaster(this AssetBundle assetBundle, GameObject bodyPrefab, string assetName) { //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) GameObject val = assetBundle.LoadAsset(assetName); BaseAI val2 = val.GetComponent(); if ((Object)(object)val2 == (Object)null) { val2 = val.AddComponent(); val2.aimVectorDampTime = 0.1f; val2.aimVectorMaxSpeed = 360f; } val2.scanState = new SerializableEntityStateType(typeof(Wander)); EntityStateMachine component = val.GetComponent(); if ((Object)(object)component == (Object)null) { AddEntityStateMachine(val, "AI", typeof(Wander), typeof(Wander)); } val2.stateMachine = component; CharacterMaster val3 = val.GetComponent(); if ((Object)(object)val3 == (Object)null) { val3 = val.AddComponent(); } val3.bodyPrefab = bodyPrefab; val3.teamIndex = (TeamIndex)2; Content.AddMasterPrefab(val); return val; } public static void ClearEntityStateMachines(GameObject bodyPrefab) { EntityStateMachine[] components = bodyPrefab.GetComponents(); for (int num = components.Length - 1; num >= 0; num--) { Object.DestroyImmediate((Object)(object)components[num]); } NetworkStateMachine component = bodyPrefab.GetComponent(); component.stateMachines = Array.Empty(); CharacterDeathBehavior component2 = bodyPrefab.GetComponent(); if (Object.op_Implicit((Object)(object)component2)) { component2.idleStateMachine = Array.Empty(); } SetStateOnHurt component3 = bodyPrefab.GetComponent(); if (Object.op_Implicit((Object)(object)component3)) { component3.idleStateMachine = Array.Empty(); } CharacterBody component4 = bodyPrefab.GetComponent(); if (Object.op_Implicit((Object)(object)component4)) { component4.vehicleIdleStateMachine = Array.Empty(); } } public static EntityStateMachine AddEntityStateMachine(GameObject prefab, string machineName, Type mainStateType = null, Type initalStateType = null, bool addToHurt = true, bool addToDeath = true) { //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) EntityStateMachine val = EntityStateMachine.FindByCustomName(prefab, machineName); if ((Object)(object)val == (Object)null) { val = prefab.AddComponent(); } else { Log.Message("An Entity State Machine already exists with the name " + machineName + ". replacing."); } val.customName = machineName; if (mainStateType == null) { mainStateType = typeof(Idle); } val.mainStateType = new SerializableEntityStateType(mainStateType); if (initalStateType == null) { initalStateType = typeof(Idle); } val.initialStateType = new SerializableEntityStateType(initalStateType); NetworkStateMachine component = prefab.GetComponent(); if (Object.op_Implicit((Object)(object)component)) { component.stateMachines = component.stateMachines.Append(val).ToArray(); } CharacterDeathBehavior component2 = prefab.GetComponent(); if (Object.op_Implicit((Object)(object)component2) && addToDeath) { component2.idleStateMachine = component2.idleStateMachine.Append(val).ToArray(); } SetStateOnHurt component3 = prefab.GetComponent(); if (Object.op_Implicit((Object)(object)component3) && addToHurt) { component3.idleStateMachine = component3.idleStateMachine.Append(val).ToArray(); } CharacterBody component4 = prefab.GetComponent(); if (Object.op_Implicit((Object)(object)component4)) { component4.vehicleIdleStateMachine = component4.vehicleIdleStateMachine.Append(val).ToArray(); } return val; } public static EntityStateMachine AddMainEntityStateMachine(GameObject bodyPrefab, string machineName = "Body", Type mainStateType = null, Type initalStateType = null) { //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) EntityStateMachine val = EntityStateMachine.FindByCustomName(bodyPrefab, machineName); if ((Object)(object)val == (Object)null) { val = bodyPrefab.AddComponent(); } else { Log.Message("An Entity State Machine already exists with the name " + machineName + ". replacing."); } val.customName = machineName; if (mainStateType == null) { mainStateType = typeof(GenericCharacterMain); } val.mainStateType = new SerializableEntityStateType(mainStateType); if (initalStateType == null) { initalStateType = typeof(SpawnTeleporterState); } val.initialStateType = new SerializableEntityStateType(initalStateType); NetworkStateMachine component = bodyPrefab.GetComponent(); if (Object.op_Implicit((Object)(object)component)) { component.stateMachines = component.stateMachines.Append(val).ToArray(); } CharacterDeathBehavior component2 = bodyPrefab.GetComponent(); if (Object.op_Implicit((Object)(object)component2)) { component2.deathStateMachine = val; } SetStateOnHurt component3 = bodyPrefab.GetComponent(); if (Object.op_Implicit((Object)(object)component3)) { component3.targetStateMachine = val; } return val; } public static void SetupHitBoxGroup(GameObject modelPrefab, string hitBoxGroupName, params string[] hitboxChildNames) { ChildLocator component = modelPrefab.GetComponent(); Transform[] array = (Transform[])(object)new Transform[hitboxChildNames.Length]; for (int i = 0; i < hitboxChildNames.Length; i++) { array[i] = component.FindChild(hitboxChildNames[i]); if ((Object)(object)array[i] == (Object)null) { Log.Error("missing hitbox for " + hitboxChildNames[i]); } } SetupHitBoxGroup(modelPrefab, hitBoxGroupName, array); } public static void SetupHitBoxGroup(GameObject prefab, string hitBoxGroupName, params Transform[] hitBoxTransforms) { List list = new List(); foreach (Transform val in hitBoxTransforms) { if ((Object)(object)val == (Object)null) { Log.Error("Error setting up hitboxGroup for " + hitBoxGroupName + ": hitbox transform was null"); continue; } HitBox item = ((Component)val).gameObject.AddComponent(); ((Component)val).gameObject.layer = LayerIndex.projectile.intVal; list.Add(item); } if (list.Count == 0) { Log.Error("No hitboxes were set up. aborting setting up hitboxGroup for " + hitBoxGroupName); return; } HitBoxGroup val2 = prefab.AddComponent(); val2.hitBoxes = list.ToArray(); val2.groupName = hitBoxGroupName; } } public class CustomRendererInfo { public string childName; public Material material = null; public bool dontHotpoo = false; public bool ignoreOverlays = false; } internal static class Skills { public static void CreateSkillFamilies(GameObject targetPrefab) { SkillSlot[] array = new SkillSlot[4]; RuntimeHelpers.InitializeArray(array, (RuntimeFieldHandle)/*OpCode not supported: LdMemberToken*/); CreateSkillFamilies(targetPrefab, (SkillSlot[])(object)array); } public static void CreateSkillFamilies(GameObject targetPrefab, params SkillSlot[] slots) { //IL_0010: 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_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected I4, but got Unknown SkillLocator component = targetPrefab.GetComponent(); foreach (SkillSlot val in slots) { SkillSlot val2 = val; switch (val2 - -1) { case 1: component.primary = CreateGenericSkillWithSkillFamily(targetPrefab, "Primary"); break; case 2: component.secondary = CreateGenericSkillWithSkillFamily(targetPrefab, "Secondary"); break; case 3: component.utility = CreateGenericSkillWithSkillFamily(targetPrefab, "Utility"); break; case 4: component.special = CreateGenericSkillWithSkillFamily(targetPrefab, "Special"); break; } } } public static void ClearGenericSkills(GameObject targetPrefab) { GenericSkill[] componentsInChildren = targetPrefab.GetComponentsInChildren(); foreach (GenericSkill val in componentsInChildren) { Object.DestroyImmediate((Object)(object)val); } } public static GenericSkill CreateGenericSkillWithSkillFamily(GameObject targetPrefab, SkillSlot skillSlot, bool hidden = false) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000a: 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_000c: 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_0028: Expected I4, but got Unknown SkillLocator component = targetPrefab.GetComponent(); switch (skillSlot - -1) { case 1: return component.primary = CreateGenericSkillWithSkillFamily(targetPrefab, "Primary", hidden); case 2: return component.secondary = CreateGenericSkillWithSkillFamily(targetPrefab, "Secondary", hidden); case 3: return component.utility = CreateGenericSkillWithSkillFamily(targetPrefab, "Utility", hidden); case 4: return component.special = CreateGenericSkillWithSkillFamily(targetPrefab, "Special", hidden); case 0: Log.Error("Failed to create GenericSkill with skillslot None. If making a GenericSkill outside of the main 4, specify a familyName, and optionally a genericSkillName"); return null; default: return null; } } public static GenericSkill CreateGenericSkillWithSkillFamily(GameObject targetPrefab, string familyName, bool hidden = false) { return CreateGenericSkillWithSkillFamily(targetPrefab, familyName, familyName, hidden); } public static GenericSkill CreateGenericSkillWithSkillFamily(GameObject targetPrefab, string genericSkillName, string familyName, bool hidden = false) { GenericSkill val = targetPrefab.AddComponent(); val.skillName = genericSkillName; val.hideInCharacterSelect = hidden; SkillFamily val2 = ScriptableObject.CreateInstance(); ((Object)val2).name = ((Object)targetPrefab).name + familyName + "Family"; val2.variants = (Variant[])(object)new Variant[0]; val._skillFamily = val2; Content.AddSkillFamily(val2); return val; } public static void AddSkillToFamily(SkillFamily skillFamily, SkillDef skillDef, UnlockableDef unlockableDef = null) { //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Expected O, but got Unknown //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1); Variant[] variants = skillFamily.variants; int num = skillFamily.variants.Length - 1; Variant val = new Variant { skillDef = skillDef, unlockableDef = unlockableDef }; ((Variant)(ref val)).viewableNode = new Node(skillDef.skillNameToken, false, (Node)null); variants[num] = val; } public static void AddSkillsToFamily(SkillFamily skillFamily, params SkillDef[] skillDefs) { foreach (SkillDef skillDef in skillDefs) { AddSkillToFamily(skillFamily, skillDef); } } public static void AddPrimarySkills(GameObject targetPrefab, params SkillDef[] skillDefs) { AddSkillsToFamily(targetPrefab.GetComponent().primary.skillFamily, skillDefs); } public static void AddSecondarySkills(GameObject targetPrefab, params SkillDef[] skillDefs) { AddSkillsToFamily(targetPrefab.GetComponent().secondary.skillFamily, skillDefs); } public static void AddUtilitySkills(GameObject targetPrefab, params SkillDef[] skillDefs) { AddSkillsToFamily(targetPrefab.GetComponent().utility.skillFamily, skillDefs); } public static void AddSpecialSkills(GameObject targetPrefab, params SkillDef[] skillDefs) { AddSkillsToFamily(targetPrefab.GetComponent().special.skillFamily, skillDefs); } public static void AddUnlockablesToFamily(SkillFamily skillFamily, params UnlockableDef[] unlockableDefs) { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) for (int i = 0; i < unlockableDefs.Length; i++) { Variant val = skillFamily.variants[i]; val.unlockableDef = unlockableDefs[i]; skillFamily.variants[i] = val; } } public static SkillDef CreateSkillDef(SkillDefInfo skillDefInfo) { return Skills.CreateSkillDef(skillDefInfo); } public static T CreateSkillDef(SkillDefInfo skillDefInfo) where T : SkillDef { //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) T val = ScriptableObject.CreateInstance(); ((SkillDef)val).skillName = skillDefInfo.skillName; ((Object)(object)val).name = skillDefInfo.skillName; ((SkillDef)val).skillNameToken = skillDefInfo.skillNameToken; ((SkillDef)val).skillDescriptionToken = skillDefInfo.skillDescriptionToken; ((SkillDef)val).icon = skillDefInfo.skillIcon; ((SkillDef)val).activationState = skillDefInfo.activationState; ((SkillDef)val).activationStateMachineName = skillDefInfo.activationStateMachineName; ((SkillDef)val).interruptPriority = skillDefInfo.interruptPriority; ((SkillDef)val).baseMaxStock = skillDefInfo.baseMaxStock; ((SkillDef)val).baseRechargeInterval = skillDefInfo.baseRechargeInterval; ((SkillDef)val).rechargeStock = skillDefInfo.rechargeStock; ((SkillDef)val).requiredStock = skillDefInfo.requiredStock; ((SkillDef)val).stockToConsume = skillDefInfo.stockToConsume; ((SkillDef)val).dontAllowPastMaxStocks = skillDefInfo.dontAllowPastMaxStocks; ((SkillDef)val).beginSkillCooldownOnSkillEnd = skillDefInfo.beginSkillCooldownOnSkillEnd; ((SkillDef)val).canceledFromSprinting = skillDefInfo.canceledFromSprinting; ((SkillDef)val).forceSprintDuringState = skillDefInfo.forceSprintDuringState; ((SkillDef)val).fullRestockOnAssign = skillDefInfo.fullRestockOnAssign; ((SkillDef)val).resetCooldownTimerOnUse = skillDefInfo.resetCooldownTimerOnUse; ((SkillDef)val).isCombatSkill = skillDefInfo.isCombatSkill; ((SkillDef)val).mustKeyPress = skillDefInfo.mustKeyPress; ((SkillDef)val).cancelSprintingOnActivation = skillDefInfo.cancelSprintingOnActivation; ((SkillDef)val).keywordTokens = skillDefInfo.keywordTokens; Content.AddSkillDef((SkillDef)(object)val); return val; } } internal class SkillDefInfo { public string skillName; public string skillNameToken; public string skillDescriptionToken; public string[] keywordTokens = Array.Empty(); public Sprite skillIcon; public SerializableEntityStateType activationState; public string activationStateMachineName; public InterruptPriority interruptPriority; public float baseRechargeInterval; public int baseMaxStock = 1; public int rechargeStock = 1; public int requiredStock = 1; public int stockToConsume = 1; public bool resetCooldownTimerOnUse = false; public bool fullRestockOnAssign = true; public bool dontAllowPastMaxStocks = false; public bool beginSkillCooldownOnSkillEnd = false; public bool mustKeyPress = false; public bool isCombatSkill = true; public bool canceledFromSprinting = false; public bool cancelSprintingOnActivation = true; public bool forceSprintDuringState = false; public SkillDefInfo() { } public SkillDefInfo(string skillName, string skillNameToken, string skillDescriptionToken, Sprite skillIcon, SerializableEntityStateType activationState, string activationStateMachineName = "Weapon", bool agile = false) { //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) this.skillName = skillName; this.skillNameToken = skillNameToken; this.skillDescriptionToken = skillDescriptionToken; this.skillIcon = skillIcon; this.activationState = activationState; this.activationStateMachineName = activationStateMachineName; cancelSprintingOnActivation = !agile; if (agile) { keywordTokens = new string[1] { "KEYWORD_AGILE" }; } interruptPriority = (InterruptPriority)0; isCombatSkill = true; baseRechargeInterval = 0f; requiredStock = 0; stockToConsume = 0; } } internal static class Skins { internal struct SkinDefInfo { internal SkinDef[] BaseSkins; internal Sprite Icon; internal string NameToken; internal UnlockableDef UnlockableDef; internal GameObject RootObject; internal RendererInfo[] RendererInfos; internal MeshReplacement[] MeshReplacements; internal GameObjectActivation[] GameObjectActivations; internal ProjectileGhostReplacement[] ProjectileGhostReplacements; internal MinionSkinReplacement[] MinionSkinReplacements; internal string Name; } internal static SkinDef CreateSkinDef(string skinName, Sprite skinIcon, RendererInfo[] defaultRendererInfos, GameObject root, UnlockableDef unlockableDef = null) { //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Expected O, but got Unknown //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_013f: Expected O, but got Unknown SkinDefInfo skinDefInfo = new SkinDefInfo { BaseSkins = Array.Empty(), GameObjectActivations = (GameObjectActivation[])(object)new GameObjectActivation[0], Icon = skinIcon, MeshReplacements = (MeshReplacement[])(object)new MeshReplacement[0], MinionSkinReplacements = (MinionSkinReplacement[])(object)new MinionSkinReplacement[0], Name = skinName, NameToken = skinName, ProjectileGhostReplacements = (ProjectileGhostReplacement[])(object)new ProjectileGhostReplacement[0], RendererInfos = (RendererInfo[])(object)new RendererInfo[defaultRendererInfos.Length], RootObject = root, UnlockableDef = unlockableDef }; SkinDef.Awake += new hook_Awake(DoNothing); SkinDef val = ScriptableObject.CreateInstance(); val.baseSkins = skinDefInfo.BaseSkins; val.icon = skinDefInfo.Icon; val.unlockableDef = skinDefInfo.UnlockableDef; val.rootObject = skinDefInfo.RootObject; defaultRendererInfos.CopyTo(skinDefInfo.RendererInfos, 0); val.rendererInfos = skinDefInfo.RendererInfos; val.gameObjectActivations = skinDefInfo.GameObjectActivations; val.meshReplacements = skinDefInfo.MeshReplacements; val.projectileGhostReplacements = skinDefInfo.ProjectileGhostReplacements; val.minionSkinReplacements = skinDefInfo.MinionSkinReplacements; val.nameToken = skinDefInfo.NameToken; ((Object)val).name = skinDefInfo.Name; SkinDef.Awake -= new hook_Awake(DoNothing); return val; } private static void DoNothing(orig_Awake orig, SkinDef self) { } private static RendererInfo[] getRendererMaterials(RendererInfo[] defaultRenderers, params Material[] materials) { RendererInfo[] array = (RendererInfo[])(object)new RendererInfo[defaultRenderers.Length]; defaultRenderers.CopyTo(array, 0); for (int i = 0; i < array.Length; i++) { try { array[i].defaultMaterial = materials[i]; } catch { Log.Error("error adding skin rendererinfo material. make sure you're not passing in too many"); } } return array; } internal static MeshReplacement[] getMeshReplacements(AssetBundle assetBundle, RendererInfo[] defaultRendererInfos, params string[] meshes) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) List list = new List(); for (int i = 0; i < defaultRendererInfos.Length; i++) { if (!string.IsNullOrEmpty(meshes[i])) { list.Add(new MeshReplacement { renderer = defaultRendererInfos[i].renderer, mesh = assetBundle.LoadAsset(meshes[i]) }); } } return list.ToArray(); } } internal static class Tokens { public const string agilePrefix = "Agile."; public static string DamageText(string text) { return "" + text + ""; } public static string DamageValueText(float value) { return $"{value * 100f}% damage"; } public static string UtilityText(string text) { return "" + text + ""; } public static string RedText(string text) { return HealthText(text); } public static string HealthText(string text) { return "" + text + ""; } public static string KeywordText(string keyword, string sub) { return "" + keyword + "" + sub + ""; } public static string ScepterDescription(string desc) { return "\nSCEPTER: " + desc + ""; } public static string GetAchievementNameToken(string identifier) { return "ACHIEVEMENT_" + identifier.ToUpperInvariant() + "_NAME"; } public static string GetAchievementDescriptionToken(string identifier) { return "ACHIEVEMENT_" + identifier.ToUpperInvariant() + "_DESCRIPTION"; } } } namespace SeamstressVariant.Modules.Characters { public abstract class CharacterBase where T : CharacterBase, new() { public abstract string assetBundleName { get; } public abstract string bodyName { get; } public abstract string modelPrefabName { get; } public abstract BodyInfo bodyInfo { get; } public virtual CustomRendererInfo[] customRendererInfos { get; } public virtual ItemDisplaysBase itemDisplays { get; } public static T instance { get; private set; } public abstract AssetBundle assetBundle { get; protected set; } public abstract GameObject bodyPrefab { get; protected set; } public abstract CharacterBody prefabCharacterBody { get; protected set; } public abstract GameObject characterModelObject { get; protected set; } public abstract CharacterModel prefabCharacterModel { get; protected set; } public virtual void Initialize() { instance = this as T; assetBundle = SeamstressAssets.mainAssetBundle; InitializeCharacter(); } public virtual void InitializeCharacter() { InitializeCharacterBodyPrefab(); InitializeItemDisplays(); } protected virtual void InitializeCharacterBodyPrefab() { characterModelObject = Prefabs.LoadCharacterModel(assetBundle, modelPrefabName); characterModelObject = PrefabAPI.InstantiateClone(characterModelObject, "clonedCharacterModel", false); bodyPrefab = Prefabs.CreateBodyPrefab(characterModelObject, bodyInfo); prefabCharacterBody = bodyPrefab.GetComponent(); prefabCharacterModel = Prefabs.SetupCharacterModel(bodyPrefab, customRendererInfos); } public virtual void InitializeItemDisplays() { ItemDisplayRuleSet val = ScriptableObject.CreateInstance(); ((Object)val).name = "idrs" + bodyName; prefabCharacterModel.itemDisplayRuleSet = val; if (itemDisplays != null) { ItemDisplays.queuedDisplays++; ContentManager.onContentPacksAssigned += SetItemDisplays; } } public void SetItemDisplays(ReadOnlyArray obj) { itemDisplays.SetItemDisplays(prefabCharacterModel.itemDisplayRuleSet); } public abstract void InitializeEntityStateMachines(); public abstract void InitializeSkills(); public abstract void InitializeSkins(); public abstract void InitializeCharacterMaster(); } public class BodyInfo { public string bodyName = ""; public string bodyNameToken = ""; public string subtitleNameToken = ""; public string bodyNameToClone = "Commando"; public Color bodyColor = Color.white; public Texture characterPortrait = null; public float sortPosition = 100f; public GameObject crosshair = null; public GameObject podPrefab = null; public float maxHealth = 100f; public float healthRegen = 1f; public float armor = 0f; public float shield = 0f; public int jumpCount = 1; public float damage = 12f; public float attackSpeed = 1f; public float crit = 1f; public float moveSpeed = 7f; public float acceleration = 80f; public float jumpPower = 15f; public bool autoCalculateLevelStats = true; public float healthGrowth = 30.000002f; public float regenGrowth = 0.2f; public float armorGrowth = 0f; public float shieldGrowth = 0f; public float damageGrowth = 2.4f; public float attackSpeedGrowth = 0f; public float critGrowth = 0f; public float moveSpeedGrowth = 0f; public float jumpPowerGrowth = 0f; public Vector3 aimOriginPosition = new Vector3(0f, 1.6f, 0f); public Vector3 modelBasePosition = new Vector3(0f, -0.92f, 0f); public Vector3 cameraPivotPosition = new Vector3(0f, 0.8f, 0f); public float cameraParamsVerticalOffset = 1.37f; public float cameraParamsDepth = -10f; private CharacterCameraParams _cameraParams; public CharacterCameraParams cameraParams { get { //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)_cameraParams == (Object)null) { _cameraParams = ScriptableObject.CreateInstance(); _cameraParams.data.minPitch = BlendableFloat.op_Implicit(-70f); _cameraParams.data.maxPitch = BlendableFloat.op_Implicit(70f); _cameraParams.data.wallCushion = BlendableFloat.op_Implicit(0.1f); _cameraParams.data.pivotVerticalOffset = BlendableFloat.op_Implicit(cameraParamsVerticalOffset); _cameraParams.data.idealLocalCameraPos = BlendableVector3.op_Implicit(new Vector3(0f, 0f, cameraParamsDepth)); } return _cameraParams; } set { _cameraParams = value; } } } public abstract class ItemDisplaysBase { public void SetItemDisplays(ItemDisplayRuleSet itemDisplayRuleSet) { List list = new List(); ItemDisplays.LazyInit(); SetItemDisplayRules(list); itemDisplayRuleSet.keyAssetRuleGroups = list.ToArray(); ItemDisplays.DisposeWhenDone(); } protected abstract void SetItemDisplayRules(List itemDisplayRules); } public abstract class SurvivorBase : CharacterBase where T : SurvivorBase, new() { public abstract string masterName { get; } public abstract string displayPrefabName { get; } public abstract string survivorTokenPrefix { get; } public abstract UnlockableDef characterUnlockableDef { get; } public abstract GameObject displayPrefab { get; protected set; } public override void InitializeCharacter() { base.InitializeCharacter(); InitializeDisplayPrefab(); InitializeSurvivor(); } protected virtual void InitializeDisplayPrefab() { displayPrefab = Prefabs.CreateDisplayPrefab(assetBundle, displayPrefabName, bodyPrefab); } protected virtual void InitializeSurvivor() { //IL_0013: Unknown result type (might be due to invalid IL or missing references) Content.CreateSurvivor(bodyPrefab, displayPrefab, bodyInfo.bodyColor, survivorTokenPrefix, characterUnlockableDef, bodyInfo.sortPosition); } protected virtual void AddCssPreviewSkill(int indexFromEditor, SkillFamily skillFamily, SkillDef skillDef) { CharacterSelectSurvivorPreviewDisplayController component = displayPrefab.GetComponent(); if (!Object.op_Implicit((Object)(object)component)) { Log.Error("trying to add skillChangeResponse to null CharacterSelectSurvivorPreviewDisplayController.\nMake sure you created one on your Display prefab in editor"); return; } component.skillChangeResponses[indexFromEditor].triggerSkillFamily = skillFamily; component.skillChangeResponses[indexFromEditor].triggerSkill = skillDef; } protected virtual void AddCssPreviewSkin(int indexFromEditor, SkinDef skinDef) { CharacterSelectSurvivorPreviewDisplayController component = displayPrefab.GetComponent(); if (!Object.op_Implicit((Object)(object)component)) { Log.Error("trying to add skinChangeResponse to null CharacterSelectSurvivorPreviewDisplayController.\nMake sure you created one on your Display prefab in editor"); } else { component.skinChangeResponses[indexFromEditor].triggerSkin = skinDef; } } protected virtual void FinalizeCSSPreviewDisplayController() { //IL_0073: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)displayPrefab)) { return; } CharacterSelectSurvivorPreviewDisplayController component = displayPrefab.GetComponent(); if (!Object.op_Implicit((Object)(object)component)) { return; } component.bodyPrefab = bodyPrefab; List list = new List(); for (int i = 0; i < component.skillChangeResponses.Length; i++) { if ((Object)(object)component.skillChangeResponses[i].triggerSkillFamily != (Object)null) { list.Add(component.skillChangeResponses[i]); } } component.skillChangeResponses = list.ToArray(); } } } namespace SeamstressVariant.Modules.BaseStates { public abstract class BaseMeleeAttack : BaseSkillState, IStepSetter { public int swingIndex; protected string hitboxGroupName = "SwordGroup"; protected DamageTypeCombo damageType = DamageTypeCombo.op_Implicit((DamageType)0); protected float damageCoefficient = 3.5f; protected float procCoefficient = 1f; protected float pushForce = 300f; protected Vector3 bonusForce = Vector3.zero; protected float baseDuration = 1f; protected float attackStartPercentTime = 0.2f; protected float attackEndPercentTime = 0.4f; protected float earlyExitPercentTime = 0.4f; protected float hitStopDuration = 0.012f; protected float attackRecoil = 0.75f; protected float hitHopVelocity = 4f; protected string swingSoundString = ""; protected string hitSoundString = ""; protected string muzzleString = "SwingCenter"; protected string playbackRateParam = "Slash.playbackRate"; protected GameObject swingEffectPrefab; protected GameObject hitEffectPrefab; protected NetworkSoundEventIndex impactSound = (NetworkSoundEventIndex)(-1); protected OverlapAttack attack; public float duration; private bool hasFired; private float hitPauseTimer; protected bool inHitPause; private bool hasHopped; protected float stopwatch; protected Animator animator; private HitStopCachedState hitStopCachedState; private Vector3 storedVelocity; public override void OnEnter() { //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Expected O, but got Unknown //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); duration = baseDuration / ((BaseState)this).attackSpeedStat; animator = ((EntityState)this).GetModelAnimator(); ((BaseState)this).StartAimMode(0.5f + duration, false); PlayAttackAnimation(); attack = new OverlapAttack(); attack.damageType = damageType; attack.attacker = ((EntityState)this).gameObject; attack.inflictor = ((EntityState)this).gameObject; attack.teamIndex = ((BaseState)this).GetTeam(); attack.damage = damageCoefficient * ((BaseState)this).damageStat; attack.procCoefficient = procCoefficient; attack.hitEffectPrefab = hitEffectPrefab; attack.forceVector = bonusForce; attack.pushAwayForce = pushForce; attack.hitBoxGroup = ((BaseState)this).FindHitBoxGroup(hitboxGroupName); attack.isCrit = ((BaseState)this).RollCrit(); attack.impactSound = impactSound; ModifyOverlapAttack(attack); } protected virtual void ModifyOverlapAttack(OverlapAttack attack) { } protected virtual void PlayAttackAnimation() { ((EntityState)this).PlayCrossfade("Gesture, Override", "Slash" + (1 + swingIndex), playbackRateParam, duration, 0.05f); } public override void OnExit() { if (inHitPause) { RemoveHitstop(); } ((EntityState)this).OnExit(); } protected virtual void PlaySwingEffect() { EffectManager.SimpleMuzzleFlash(swingEffectPrefab, ((EntityState)this).gameObject, muzzleString, false); } protected virtual void OnHitEnemyAuthority() { Util.PlaySound(hitSoundString, ((EntityState)this).gameObject); if (!hasHopped) { if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && !((EntityState)this).characterMotor.isGrounded && hitHopVelocity > 0f) { ((BaseState)this).SmallHop(((EntityState)this).characterMotor, hitHopVelocity); } hasHopped = true; } ApplyHitstop(); } protected void ApplyHitstop() { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) if (!inHitPause && hitStopDuration > 0f) { storedVelocity = ((EntityState)this).characterMotor.velocity; hitStopCachedState = ((BaseState)this).CreateHitStopCachedState(((EntityState)this).characterMotor, animator, playbackRateParam); hitPauseTimer = hitStopDuration / ((BaseState)this).attackSpeedStat; inHitPause = true; } } private void FireAttack() { if (((EntityState)this).isAuthority && attack.Fire((List)null)) { OnHitEnemyAuthority(); } } private void EnterAttack() { hasFired = true; Util.PlayAttackSpeedSound(swingSoundString, ((EntityState)this).gameObject, ((BaseState)this).attackSpeedStat); PlaySwingEffect(); if (((EntityState)this).isAuthority) { ((BaseState)this).AddRecoil(-1f * attackRecoil, -2f * attackRecoil, -0.5f * attackRecoil, 0.5f * attackRecoil); } } public override void FixedUpdate() { //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); hitPauseTimer -= Time.deltaTime; if (hitPauseTimer <= 0f && inHitPause) { RemoveHitstop(); } if (!inHitPause) { stopwatch += Time.deltaTime; } else { if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((EntityState)this).characterMotor.velocity = Vector3.zero; } if (Object.op_Implicit((Object)(object)animator)) { animator.SetFloat(playbackRateParam, 0f); } } bool flag = stopwatch >= duration * attackStartPercentTime; bool flag2 = stopwatch >= duration * attackEndPercentTime; if ((flag && !flag2) || (flag && flag2 && !hasFired)) { if (!hasFired) { EnterAttack(); } FireAttack(); } if (stopwatch >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } private void RemoveHitstop() { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).ConsumeHitStopCachedState(hitStopCachedState, ((EntityState)this).characterMotor, animator); inHitPause = false; ((EntityState)this).characterMotor.velocity = storedVelocity; } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0023: 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_0026: Unknown result type (might be due to invalid IL or missing references) if (stopwatch >= duration * earlyExitPercentTime) { return (InterruptPriority)0; } return (InterruptPriority)1; } public override void OnSerialize(NetworkWriter writer) { ((BaseSkillState)this).OnSerialize(writer); writer.Write(swingIndex); } public override void OnDeserialize(NetworkReader reader) { ((BaseSkillState)this).OnDeserialize(reader); swingIndex = reader.ReadInt32(); } public void SetStep(int i) { swingIndex = i; } } public abstract class BaseTimedSkillState : BaseSkillState { protected float duration; protected float castStartTime; protected float castEndTime; protected bool hasFired; protected bool isFiring; protected bool hasExited; public abstract float TimedBaseDuration { get; } public abstract float TimedBaseCastStartPercentTime { get; } public virtual float TimedBaseCastEndPercentTime => 1f; public override void OnEnter() { InitDurationValues(); ((BaseState)this).OnEnter(); } protected virtual void InitDurationValues() { duration = TimedBaseDuration / ((BaseState)this).attackSpeedStat; castStartTime = TimedBaseCastStartPercentTime * duration; castEndTime = TimedBaseCastEndPercentTime * duration; } protected virtual void OnCastEnter() { } protected virtual void OnCastFixedUpdate() { } protected virtual void OnCastUpdate() { } protected virtual void OnCastExit() { } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); bool flag = ((EntityState)this).fixedAge >= castStartTime; bool flag2 = ((EntityState)this).fixedAge >= castEndTime; isFiring = false; if ((flag && !flag2) || (flag && flag2 && !hasFired)) { isFiring = true; OnCastFixedUpdate(); if (!hasFired) { OnCastEnter(); hasFired = true; } } if (flag2 && !hasExited) { hasExited = true; OnCastExit(); } if (((EntityState)this).fixedAge > duration) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void Update() { ((EntityState)this).Update(); if (isFiring) { OnCastUpdate(); } } } public class ExampleTimedSkillState : BaseTimedSkillState { public override float TimedBaseDuration => 1.5f; public override float TimedBaseCastStartPercentTime => 0.2f; public override float TimedBaseCastEndPercentTime => 0.9f; protected override void OnCastEnter() { } protected override void OnCastFixedUpdate() { } protected override void OnCastExit() { } } public class ExampleDelayedSkillState : BaseTimedSkillState { public override float TimedBaseDuration => 1.5f; public override float TimedBaseCastStartPercentTime => 0.2f; protected override void OnCastEnter() { } } } namespace SeamstressVariant.Modules.Achievements { public abstract class BaseMasteryAchievement : BaseAchievement { public abstract string RequiredCharacterBody { get; } public abstract float RequiredDifficultyCoefficient { get; } public override BodyIndex LookUpRequiredBodyIndex() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) return BodyCatalog.FindBodyIndex(RequiredCharacterBody); } public override void OnBodyRequirementMet() { ((BaseAchievement)this).OnBodyRequirementMet(); Run.onClientGameOverGlobal += OnClientGameOverGlobal; } public override void OnBodyRequirementBroken() { Run.onClientGameOverGlobal -= OnClientGameOverGlobal; ((BaseAchievement)this).OnBodyRequirementBroken(); } private void OnClientGameOverGlobal(Run run, RunReport runReport) { //IL_002f: 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_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Invalid comparison between Unknown and I4 //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Invalid comparison between Unknown and I4 if (!Object.op_Implicit((Object)(object)runReport.gameEnding) || !runReport.gameEnding.isWin) { return; } DifficultyIndex val = runReport.ruleBook.FindDifficulty(); DifficultyDef difficultyDef = DifficultyCatalog.GetDifficultyDef(val); if (difficultyDef != null) { bool flag = difficultyDef.countsAsHardMode && difficultyDef.scalingValue >= RequiredDifficultyCoefficient; bool flag2 = difficultyDef.nameToken == "INFERNO_NAME"; bool flag3 = (int)val >= 3 && (int)val <= 10; if (flag || flag2 || flag3) { ((BaseAchievement)this).Grant(); } } } } } namespace SeamstressVariant.Survivors.SeamstressVariant { public class BlinkSkillDef : SkillDef { public override bool CanExecute(GenericSkill skillSlot) { if (!((SkillDef)this).CanExecute(skillSlot)) { return false; } CharacterBody characterBody = skillSlot.characterBody; if ((Object)(object)characterBody == (Object)null) { return true; } float blinkHealthCostForLevel = SeamstressVariantConfig.GetBlinkHealthCostForLevel(characterBody.level); if (blinkHealthCostForLevel <= 0f) { return true; } HealthComponent healthComponent = characterBody.healthComponent; if ((Object)(object)healthComponent == (Object)null) { return true; } float num = Mathf.Max(healthComponent.health - 1f, 0f); BleedingHeartComponent component = ((Component)characterBody).GetComponent(); float num2 = (((Object)(object)component != (Object)null) ? component.GetHeart() : 0f); return num + num2 >= blinkHealthCostForLevel; } } public static class SeamstressVariantAI { public static void Init(GameObject bodyPrefab, string masterName) { //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_0177: Unknown result type (might be due to invalid IL or missing references) //IL_0193: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Unknown result type (might be due to invalid IL or missing references) //IL_01c8: Unknown result type (might be due to invalid IL or missing references) //IL_0210: Unknown result type (might be due to invalid IL or missing references) //IL_0230: Unknown result type (might be due to invalid IL or missing references) //IL_0244: Unknown result type (might be due to invalid IL or missing references) //IL_024c: Unknown result type (might be due to invalid IL or missing references) //IL_0268: Unknown result type (might be due to invalid IL or missing references) //IL_02b0: Unknown result type (might be due to invalid IL or missing references) //IL_02d0: Unknown result type (might be due to invalid IL or missing references) //IL_02e4: Unknown result type (might be due to invalid IL or missing references) //IL_02ec: Unknown result type (might be due to invalid IL or missing references) //IL_0308: Unknown result type (might be due to invalid IL or missing references) //IL_0330: Unknown result type (might be due to invalid IL or missing references) //IL_0350: Unknown result type (might be due to invalid IL or missing references) //IL_0364: Unknown result type (might be due to invalid IL or missing references) //IL_036c: Unknown result type (might be due to invalid IL or missing references) GameObject val = Prefabs.CreateBlankMasterPrefab(bodyPrefab, masterName); BaseAI component = val.GetComponent(); component.aimVectorDampTime = 0.1f; component.aimVectorMaxSpeed = 360f; AISkillDriver val2 = val.AddComponent(); val2.customName = "Use Primary Swing"; val2.skillSlot = (SkillSlot)0; val2.requiredSkill = null; val2.requireSkillReady = false; val2.requireEquipmentReady = false; val2.minUserHealthFraction = float.NegativeInfinity; val2.maxUserHealthFraction = float.PositiveInfinity; val2.minTargetHealthFraction = float.NegativeInfinity; val2.maxTargetHealthFraction = float.PositiveInfinity; val2.minDistance = 0f; val2.maxDistance = 8f; val2.selectionRequiresTargetLoS = false; val2.selectionRequiresOnGround = false; val2.selectionRequiresAimTarget = false; val2.maxTimesSelected = -1; val2.moveTargetType = (TargetType)0; val2.activationRequiresTargetLoS = false; val2.activationRequiresAimTargetLoS = false; val2.activationRequiresAimConfirmation = false; val2.movementType = (MovementType)1; val2.moveInputScale = 1f; val2.aimType = (AimType)1; val2.ignoreNodeGraph = false; val2.shouldSprint = false; val2.shouldFireEquipment = false; val2.buttonPressType = (ButtonPressType)0; val2.driverUpdateTimerOverride = -1f; val2.resetCurrentEnemyOnNextDriverSelection = false; val2.noRepeat = false; val2.nextHighPriorityOverride = null; AISkillDriver val3 = val.AddComponent(); val3.customName = "Use Secondary Shoot"; val3.skillSlot = (SkillSlot)1; val3.requireSkillReady = true; val3.minDistance = 0f; val3.maxDistance = 25f; val3.selectionRequiresTargetLoS = false; val3.selectionRequiresOnGround = false; val3.selectionRequiresAimTarget = false; val3.maxTimesSelected = -1; val3.moveTargetType = (TargetType)0; val3.activationRequiresTargetLoS = false; val3.activationRequiresAimTargetLoS = false; val3.activationRequiresAimConfirmation = true; val3.movementType = (MovementType)1; val3.moveInputScale = 1f; val3.aimType = (AimType)1; val3.buttonPressType = (ButtonPressType)0; AISkillDriver val4 = val.AddComponent(); val4.customName = "Use Utility Blink"; val4.skillSlot = (SkillSlot)2; val4.requireSkillReady = true; val4.minDistance = 8f; val4.maxDistance = 20f; val4.selectionRequiresTargetLoS = true; val4.selectionRequiresOnGround = false; val4.selectionRequiresAimTarget = false; val4.maxTimesSelected = -1; val4.moveTargetType = (TargetType)0; val4.activationRequiresTargetLoS = false; val4.activationRequiresAimTargetLoS = false; val4.activationRequiresAimConfirmation = false; val4.movementType = (MovementType)2; val4.moveInputScale = 1f; val4.aimType = (AimType)1; val4.buttonPressType = (ButtonPressType)0; AISkillDriver val5 = val.AddComponent(); val5.customName = "Use Special bomb"; val5.skillSlot = (SkillSlot)3; val5.requireSkillReady = true; val5.minDistance = 0f; val5.maxDistance = 20f; val5.selectionRequiresTargetLoS = false; val5.selectionRequiresOnGround = false; val5.selectionRequiresAimTarget = false; val5.maxTimesSelected = -1; val5.moveTargetType = (TargetType)0; val5.activationRequiresTargetLoS = false; val5.activationRequiresAimTargetLoS = false; val5.activationRequiresAimConfirmation = false; val5.movementType = (MovementType)1; val5.moveInputScale = 1f; val5.aimType = (AimType)1; val5.buttonPressType = (ButtonPressType)0; AISkillDriver val6 = val.AddComponent(); val6.customName = "Chase"; val6.skillSlot = (SkillSlot)(-1); val6.requireSkillReady = false; val6.minDistance = 0f; val6.maxDistance = float.PositiveInfinity; val6.moveTargetType = (TargetType)0; val6.activationRequiresTargetLoS = false; val6.activationRequiresAimTargetLoS = false; val6.activationRequiresAimConfirmation = false; val6.movementType = (MovementType)1; val6.moveInputScale = 1f; val6.aimType = (AimType)1; val6.buttonPressType = (ButtonPressType)0; } } public static class SeamstressVariantAssets { public static GameObject swordSwingEffect; public static GameObject swordHitImpactEffect; public static GameObject defianceEndEffect; public static GameObject scissorImpactEffect; public static GameObject defiantTransformEnterEffect; public static GameObject defiantTransformExitEffect; public static CharacterCameraParams defiantTransformCameraParams; public static GameObject scissorLProjectile; public static GameObject scissorRProjectile; private const float ScissorHomingRotationSpeed = 250f; private const float ScissorProjectileTravelSpeed = 90f; private const float ScissorTargetSearchInterval = 0.5f; private static AssetBundle _assetBundle; public static void Init(AssetBundle assetBundle) { _assetBundle = assetBundle; CreateEffects(); CreateProjectiles(); } private static void CreateEffects() { CreateDefianceEndEffect(); CreateScissorImpactEffect(); CreateDefiantTransformEffects(); Content.CreateAndAddEffectDef(SeamstressAssets.scissorsHitImpactEffect); } private static void CreateDefiantTransformEffects() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) GameObject val = Addressables.LoadAssetAsync((object)"RoR2/DLC1/VoidSurvivor/VoidSurvivorCorruptDeathCharge.prefab").WaitForCompletion(); if (Object.op_Implicit((Object)(object)val)) { defiantTransformEnterEffect = PrefabAPI.InstantiateClone(val, "SeamstressVariantDefiantTransformEnterEffect"); defiantTransformExitEffect = PrefabAPI.InstantiateClone(val, "SeamstressVariantDefiantTransformExitEffect"); EnsureEffectPrefabRequirements(defiantTransformEnterEffect); EnsureEffectPrefabRequirements(defiantTransformExitEffect); Content.CreateAndAddEffectDef(defiantTransformEnterEffect); Content.CreateAndAddEffectDef(defiantTransformExitEffect); } defiantTransformCameraParams = Addressables.LoadAssetAsync((object)"RoR2/DLC1/VoidSurvivor/ccpCorruptionTransitionCamera.asset").WaitForCompletion(); } private static void EnsureEffectPrefabRequirements(GameObject effectPrefab) { //IL_0051: 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) if (Object.op_Implicit((Object)(object)effectPrefab)) { if (!Object.op_Implicit((Object)(object)effectPrefab.GetComponent())) { EffectComponent val = effectPrefab.AddComponent(); val.applyScale = true; } if (!Object.op_Implicit((Object)(object)effectPrefab.GetComponent())) { VFXAttributes val2 = effectPrefab.AddComponent(); val2.vfxIntensity = (VFXIntensity)1; val2.vfxPriority = (VFXPriority)1; } if (!Object.op_Implicit((Object)(object)effectPrefab.GetComponent())) { effectPrefab.AddComponent(); } } } private static void CreateScissorImpactEffect() { scissorImpactEffect = PrefabAPI.InstantiateClone(SeamstressAssets.blinkEffect, "SeamstressVariantScissorImpactEffect"); EffectComponent component = scissorImpactEffect.GetComponent(); if (Object.op_Implicit((Object)(object)component)) { component.soundName = "sfx_seamstress_scissor_land"; } Content.CreateAndAddEffectDef(scissorImpactEffect); } private static void CreateDefianceEndEffect() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) defianceEndEffect = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync((object)"RoR2/Base/LunarSkillReplacements/LunarDetonatorConsume.prefab").WaitForCompletion(), "SeamstressVariantDefianceEndEffect"); defianceEndEffect.AddComponent(); MainModule main = ((Component)defianceEndEffect.transform.GetChild(0)).GetComponent().main; ((MainModule)(ref main)).startColor = new MinMaxGradient(Color.black); MainModule main2 = ((Component)defianceEndEffect.transform.GetChild(1)).GetComponent().main; ((MainModule)(ref main2)).startColor = new MinMaxGradient(Color.red); ((Renderer)((Component)defianceEndEffect.transform.GetChild(2)).GetComponent()).material.SetColor("_TintColor", Color.red); ((Component)defianceEndEffect.transform.GetChild(3)).gameObject.SetActive(false); ((Renderer)((Component)defianceEndEffect.transform.GetChild(4)).GetComponent()).material.SetColor("_TintColor", Color.red); Material val = Object.Instantiate(Addressables.LoadAssetAsync((object)"RoR2/Base/LunarSkillReplacements/matLunarNeedleImpactEffect.mat").WaitForCompletion()); val.SetColor("_TintColor", Color.red); ((Renderer)((Component)defianceEndEffect.transform.GetChild(5)).GetComponent()).material = val; ((Component)defianceEndEffect.transform.GetChild(6)).gameObject.SetActive(false); Content.CreateAndAddEffectDef(defianceEndEffect); } private static void CreateProjectiles() { CreateScissorProjectiles(); Content.AddProjectilePrefab(scissorLProjectile); Content.AddProjectilePrefab(scissorRProjectile); } private static void CreateScissorProjectiles() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) GameObject val = Addressables.LoadAssetAsync((object)"RoR2/Base/ImpBoss/ImpVoidspikeProjectile.prefab").WaitForCompletion(); scissorLProjectile = PrefabAPI.InstantiateClone(val, "SeamstressVariantScissorLProjectile"); scissorRProjectile = PrefabAPI.InstantiateClone(val, "SeamstressVariantScissorRProjectile"); SetupScissorProjectile(scissorLProjectile); SetupScissorProjectile(scissorRProjectile); } private static void SetupScissorProjectile(GameObject proj) { ProjectileTargetComponent component = proj.GetComponent(); if (!Object.op_Implicit((Object)(object)component)) { component = proj.AddComponent(); } ProjectileSteerTowardTarget val = proj.GetComponent(); if (!Object.op_Implicit((Object)(object)val)) { val = proj.AddComponent(); } val.yAxisOnly = false; val.rotationSpeed = 250f; ((Behaviour)val).enabled = true; ProjectileSimple component2 = proj.GetComponent(); if (Object.op_Implicit((Object)(object)component2)) { component2.desiredForwardSpeed = 90f; } ProjectileStickOnImpact component3 = proj.GetComponent(); if (Object.op_Implicit((Object)(object)component3)) { Object.Destroy((Object)(object)component3); } ProjectileDirectionalTargetFinder val2 = proj.GetComponent(); if (!Object.op_Implicit((Object)(object)val2)) { val2 = proj.AddComponent(); } val2.lookRange = 60f; val2.lookCone = 60f; val2.targetSearchInterval = 0.5f; val2.onlySearchIfNoTarget = true; val2.allowTargetLoss = false; val2.testLoS = true; val2.ignoreAir = false; val2.flierAltitudeTolerance = float.PositiveInfinity; ((Behaviour)val2).enabled = true; if (Object.op_Implicit((Object)(object)SeamstressAssets.trailEffect)) { Object.Instantiate(SeamstressAssets.trailEffect, proj.transform); } ProjectileSingleTargetImpact component4 = proj.GetComponent(); if (Object.op_Implicit((Object)(object)component4)) { component4.destroyOnWorld = true; } ProjectileImpactExplosion component5 = proj.GetComponent(); if (Object.op_Implicit((Object)(object)component5)) { component5.impactEffect = (Object.op_Implicit((Object)(object)scissorImpactEffect) ? scissorImpactEffect : SeamstressAssets.blinkEffect); ((ProjectileExplosion)component5).blastDamageCoefficient = 4f; ((ProjectileExplosion)component5).blastProcCoefficient = 1f; ((ProjectileExplosion)component5).blastRadius = 5f; component5.destroyOnWorld = true; } } } public static class SeamstressVariantBuffs { public static BuffDef heartBuff; public static BuffDef scissorLeftBuff; public static BuffDef scissorRightBuff; public static BuffDef defianceBuff; public static void Init(AssetBundle assetBundle) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) scissorLeftBuff = Content.CreateAndAddBuff("SeamstressVariantScissorLeft", Addressables.LoadAssetAsync((object)"RoR2/DLC1/VoidSurvivor/texBuffVoidSurvivorCorruptionIcon.tif").WaitForCompletion(), new Color(0.545f, 0.133f, 0.133f), canStack: false, isDebuff: false); scissorRightBuff = Content.CreateAndAddBuff("SeamstressVariantScissorRight", Addressables.LoadAssetAsync((object)"RoR2/DLC1/VoidSurvivor/texBuffVoidSurvivorCorruptionIcon.tif").WaitForCompletion(), new Color(0.545f, 0.133f, 0.133f), canStack: false, isDebuff: false); defianceBuff = Content.CreateAndAddBuff("SeamstressVariantDefiance", LegacyResourcesAPI.Load("BuffDefs/HiddenInvincibility").iconSprite, new Color(0.9f, 0.1f, 0.1f), canStack: false, isDebuff: false); } } public static class SeamstressVariantConfig { public static ConfigEntry utilityBlinkDuration; public static ConfigEntry utilityBlinkHealthCost; public static ConfigEntry utilityBlinkHealthCostPerLevel; public static void Init() { string section = "Seamstress"; utilityBlinkDuration = Config.BindAndOptions(section, "Utility Blink Duration", 0.1f, 0.05f, 0.5f, "Duration of Seamstress Variant blink in seconds."); utilityBlinkHealthCost = Config.BindAndOptions(section, "Utility Blink Health Cost", 25f, 0f, 25f, "Health drained each time Blink is used. Non-lethal (will not reduce below 1 HP)."); utilityBlinkHealthCostPerLevel = Config.BindAndOptions(section, "Utility Blink Health Cost Per Level", 0f, 0f, 0f, "Additional health drained per level when Blink is used. Starts applying at level 1."); } public static float GetBlinkHealthCostForLevel(float level) { return Mathf.Max(utilityBlinkHealthCost.Value, 0f); } } public class SeamstressVariantItemDisplays : ItemDisplaysBase { protected override void SetItemDisplayRules(List itemDisplayRules) { //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_013b: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_019f: Unknown result type (might be due to invalid IL or missing references) //IL_01b3: Unknown result type (might be due to invalid IL or missing references) //IL_01c7: Unknown result type (might be due to invalid IL or missing references) //IL_01cc: Unknown result type (might be due to invalid IL or missing references) //IL_01d1: Unknown result type (might be due to invalid IL or missing references) //IL_01d6: Unknown result type (might be due to invalid IL or missing references) //IL_0217: 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_023f: Unknown result type (might be due to invalid IL or missing references) //IL_0244: Unknown result type (might be due to invalid IL or missing references) //IL_0249: Unknown result type (might be due to invalid IL or missing references) //IL_024e: Unknown result type (might be due to invalid IL or missing references) //IL_028f: Unknown result type (might be due to invalid IL or missing references) //IL_02a3: Unknown result type (might be due to invalid IL or missing references) //IL_02b7: Unknown result type (might be due to invalid IL or missing references) //IL_02bc: Unknown result type (might be due to invalid IL or missing references) //IL_02c1: Unknown result type (might be due to invalid IL or missing references) //IL_02c6: Unknown result type (might be due to invalid IL or missing references) //IL_0307: Unknown result type (might be due to invalid IL or missing references) //IL_031b: Unknown result type (might be due to invalid IL or missing references) //IL_032f: Unknown result type (might be due to invalid IL or missing references) //IL_0334: Unknown result type (might be due to invalid IL or missing references) //IL_0339: Unknown result type (might be due to invalid IL or missing references) //IL_033e: Unknown result type (might be due to invalid IL or missing references) //IL_037f: Unknown result type (might be due to invalid IL or missing references) //IL_0393: Unknown result type (might be due to invalid IL or missing references) //IL_03a7: Unknown result type (might be due to invalid IL or missing references) //IL_03ac: Unknown result type (might be due to invalid IL or missing references) //IL_03b1: Unknown result type (might be due to invalid IL or missing references) //IL_03b6: Unknown result type (might be due to invalid IL or missing references) //IL_03f7: Unknown result type (might be due to invalid IL or missing references) //IL_040b: Unknown result type (might be due to invalid IL or missing references) //IL_041f: Unknown result type (might be due to invalid IL or missing references) //IL_0424: Unknown result type (might be due to invalid IL or missing references) //IL_0429: Unknown result type (might be due to invalid IL or missing references) //IL_042e: Unknown result type (might be due to invalid IL or missing references) //IL_046f: Unknown result type (might be due to invalid IL or missing references) //IL_0483: Unknown result type (might be due to invalid IL or missing references) //IL_0497: Unknown result type (might be due to invalid IL or missing references) //IL_049c: Unknown result type (might be due to invalid IL or missing references) //IL_04a1: Unknown result type (might be due to invalid IL or missing references) //IL_04a6: Unknown result type (might be due to invalid IL or missing references) //IL_04e7: Unknown result type (might be due to invalid IL or missing references) //IL_04fb: Unknown result type (might be due to invalid IL or missing references) //IL_050f: Unknown result type (might be due to invalid IL or missing references) //IL_0514: Unknown result type (might be due to invalid IL or missing references) //IL_0519: Unknown result type (might be due to invalid IL or missing references) //IL_051e: Unknown result type (might be due to invalid IL or missing references) //IL_055f: Unknown result type (might be due to invalid IL or missing references) //IL_0573: Unknown result type (might be due to invalid IL or missing references) //IL_0587: Unknown result type (might be due to invalid IL or missing references) //IL_058c: Unknown result type (might be due to invalid IL or missing references) //IL_0591: Unknown result type (might be due to invalid IL or missing references) //IL_0596: Unknown result type (might be due to invalid IL or missing references) //IL_05d7: Unknown result type (might be due to invalid IL or missing references) //IL_05eb: Unknown result type (might be due to invalid IL or missing references) //IL_05ff: Unknown result type (might be due to invalid IL or missing references) //IL_0604: Unknown result type (might be due to invalid IL or missing references) //IL_0609: Unknown result type (might be due to invalid IL or missing references) //IL_060e: Unknown result type (might be due to invalid IL or missing references) //IL_064f: Unknown result type (might be due to invalid IL or missing references) //IL_0663: Unknown result type (might be due to invalid IL or missing references) //IL_0677: Unknown result type (might be due to invalid IL or missing references) //IL_067c: Unknown result type (might be due to invalid IL or missing references) //IL_0681: Unknown result type (might be due to invalid IL or missing references) //IL_0686: Unknown result type (might be due to invalid IL or missing references) //IL_06c7: Unknown result type (might be due to invalid IL or missing references) //IL_06db: Unknown result type (might be due to invalid IL or missing references) //IL_06ef: Unknown result type (might be due to invalid IL or missing references) //IL_06f4: Unknown result type (might be due to invalid IL or missing references) //IL_06f9: Unknown result type (might be due to invalid IL or missing references) //IL_06fe: Unknown result type (might be due to invalid IL or missing references) //IL_073f: Unknown result type (might be due to invalid IL or missing references) //IL_0753: Unknown result type (might be due to invalid IL or missing references) //IL_0767: Unknown result type (might be due to invalid IL or missing references) //IL_076c: Unknown result type (might be due to invalid IL or missing references) //IL_0771: Unknown result type (might be due to invalid IL or missing references) //IL_0776: Unknown result type (might be due to invalid IL or missing references) //IL_07b7: Unknown result type (might be due to invalid IL or missing references) //IL_07cb: Unknown result type (might be due to invalid IL or missing references) //IL_07df: Unknown result type (might be due to invalid IL or missing references) //IL_07e4: Unknown result type (might be due to invalid IL or missing references) //IL_07e9: Unknown result type (might be due to invalid IL or missing references) //IL_07ee: Unknown result type (might be due to invalid IL or missing references) //IL_082f: Unknown result type (might be due to invalid IL or missing references) //IL_0843: Unknown result type (might be due to invalid IL or missing references) //IL_0857: Unknown result type (might be due to invalid IL or missing references) //IL_085c: Unknown result type (might be due to invalid IL or missing references) //IL_0861: Unknown result type (might be due to invalid IL or missing references) //IL_0866: Unknown result type (might be due to invalid IL or missing references) //IL_08a7: Unknown result type (might be due to invalid IL or missing references) //IL_08bb: Unknown result type (might be due to invalid IL or missing references) //IL_08cf: Unknown result type (might be due to invalid IL or missing references) //IL_08d4: Unknown result type (might be due to invalid IL or missing references) //IL_08d9: Unknown result type (might be due to invalid IL or missing references) //IL_08de: Unknown result type (might be due to invalid IL or missing references) //IL_091f: Unknown result type (might be due to invalid IL or missing references) //IL_0933: Unknown result type (might be due to invalid IL or missing references) //IL_0947: Unknown result type (might be due to invalid IL or missing references) //IL_094c: Unknown result type (might be due to invalid IL or missing references) //IL_0951: Unknown result type (might be due to invalid IL or missing references) //IL_0956: Unknown result type (might be due to invalid IL or missing references) //IL_0997: Unknown result type (might be due to invalid IL or missing references) //IL_09ab: Unknown result type (might be due to invalid IL or missing references) //IL_09bf: Unknown result type (might be due to invalid IL or missing references) //IL_09c4: Unknown result type (might be due to invalid IL or missing references) //IL_09c9: Unknown result type (might be due to invalid IL or missing references) //IL_09ce: Unknown result type (might be due to invalid IL or missing references) //IL_0a0f: Unknown result type (might be due to invalid IL or missing references) //IL_0a23: Unknown result type (might be due to invalid IL or missing references) //IL_0a37: Unknown result type (might be due to invalid IL or missing references) //IL_0a3c: Unknown result type (might be due to invalid IL or missing references) //IL_0a41: Unknown result type (might be due to invalid IL or missing references) //IL_0a46: Unknown result type (might be due to invalid IL or missing references) //IL_0a87: Unknown result type (might be due to invalid IL or missing references) //IL_0a9b: Unknown result type (might be due to invalid IL or missing references) //IL_0aaf: Unknown result type (might be due to invalid IL or missing references) //IL_0ab4: Unknown result type (might be due to invalid IL or missing references) //IL_0ab9: Unknown result type (might be due to invalid IL or missing references) //IL_0abe: Unknown result type (might be due to invalid IL or missing references) //IL_0aff: Unknown result type (might be due to invalid IL or missing references) //IL_0b13: Unknown result type (might be due to invalid IL or missing references) //IL_0b27: Unknown result type (might be due to invalid IL or missing references) //IL_0b2c: Unknown result type (might be due to invalid IL or missing references) //IL_0b31: Unknown result type (might be due to invalid IL or missing references) //IL_0b36: Unknown result type (might be due to invalid IL or missing references) //IL_0b77: Unknown result type (might be due to invalid IL or missing references) //IL_0b8b: Unknown result type (might be due to invalid IL or missing references) //IL_0b9f: Unknown result type (might be due to invalid IL or missing references) //IL_0ba4: Unknown result type (might be due to invalid IL or missing references) //IL_0ba9: Unknown result type (might be due to invalid IL or missing references) //IL_0bae: Unknown result type (might be due to invalid IL or missing references) //IL_0bef: Unknown result type (might be due to invalid IL or missing references) //IL_0c03: Unknown result type (might be due to invalid IL or missing references) //IL_0c17: Unknown result type (might be due to invalid IL or missing references) //IL_0c1c: Unknown result type (might be due to invalid IL or missing references) //IL_0c21: Unknown result type (might be due to invalid IL or missing references) //IL_0c26: Unknown result type (might be due to invalid IL or missing references) //IL_0c67: Unknown result type (might be due to invalid IL or missing references) //IL_0c7b: Unknown result type (might be due to invalid IL or missing references) //IL_0c8f: Unknown result type (might be due to invalid IL or missing references) //IL_0c94: Unknown result type (might be due to invalid IL or missing references) //IL_0c99: Unknown result type (might be due to invalid IL or missing references) //IL_0c9e: Unknown result type (might be due to invalid IL or missing references) //IL_0cdf: Unknown result type (might be due to invalid IL or missing references) //IL_0cf3: Unknown result type (might be due to invalid IL or missing references) //IL_0d07: Unknown result type (might be due to invalid IL or missing references) //IL_0d0c: Unknown result type (might be due to invalid IL or missing references) //IL_0d11: Unknown result type (might be due to invalid IL or missing references) //IL_0d16: Unknown result type (might be due to invalid IL or missing references) //IL_0d57: Unknown result type (might be due to invalid IL or missing references) //IL_0d6b: Unknown result type (might be due to invalid IL or missing references) //IL_0d7f: Unknown result type (might be due to invalid IL or missing references) //IL_0d84: Unknown result type (might be due to invalid IL or missing references) //IL_0d89: Unknown result type (might be due to invalid IL or missing references) //IL_0d8e: Unknown result type (might be due to invalid IL or missing references) //IL_0dcf: Unknown result type (might be due to invalid IL or missing references) //IL_0de3: Unknown result type (might be due to invalid IL or missing references) //IL_0df7: Unknown result type (might be due to invalid IL or missing references) //IL_0dfc: Unknown result type (might be due to invalid IL or missing references) //IL_0e01: Unknown result type (might be due to invalid IL or missing references) //IL_0e06: Unknown result type (might be due to invalid IL or missing references) //IL_0e47: Unknown result type (might be due to invalid IL or missing references) //IL_0e5b: Unknown result type (might be due to invalid IL or missing references) //IL_0e6f: Unknown result type (might be due to invalid IL or missing references) //IL_0e74: Unknown result type (might be due to invalid IL or missing references) //IL_0e79: Unknown result type (might be due to invalid IL or missing references) //IL_0e7e: Unknown result type (might be due to invalid IL or missing references) //IL_0ea2: Unknown result type (might be due to invalid IL or missing references) //IL_0ea7: Unknown result type (might be due to invalid IL or missing references) //IL_0ecc: Unknown result type (might be due to invalid IL or missing references) //IL_0ee0: Unknown result type (might be due to invalid IL or missing references) //IL_0ef4: Unknown result type (might be due to invalid IL or missing references) //IL_0ef9: Unknown result type (might be due to invalid IL or missing references) //IL_0efe: Unknown result type (might be due to invalid IL or missing references) //IL_0f23: Unknown result type (might be due to invalid IL or missing references) //IL_0f37: Unknown result type (might be due to invalid IL or missing references) //IL_0f4b: Unknown result type (might be due to invalid IL or missing references) //IL_0f50: Unknown result type (might be due to invalid IL or missing references) //IL_0f55: Unknown result type (might be due to invalid IL or missing references) //IL_0f5a: Unknown result type (might be due to invalid IL or missing references) //IL_0f9b: Unknown result type (might be due to invalid IL or missing references) //IL_0faf: Unknown result type (might be due to invalid IL or missing references) //IL_0fc3: Unknown result type (might be due to invalid IL or missing references) //IL_0fc8: Unknown result type (might be due to invalid IL or missing references) //IL_0fcd: Unknown result type (might be due to invalid IL or missing references) //IL_0fd2: Unknown result type (might be due to invalid IL or missing references) //IL_1013: Unknown result type (might be due to invalid IL or missing references) //IL_1027: Unknown result type (might be due to invalid IL or missing references) //IL_103b: Unknown result type (might be due to invalid IL or missing references) //IL_1040: Unknown result type (might be due to invalid IL or missing references) //IL_1045: Unknown result type (might be due to invalid IL or missing references) //IL_104a: Unknown result type (might be due to invalid IL or missing references) //IL_108b: Unknown result type (might be due to invalid IL or missing references) //IL_109f: Unknown result type (might be due to invalid IL or missing references) //IL_10b3: Unknown result type (might be due to invalid IL or missing references) //IL_10b8: Unknown result type (might be due to invalid IL or missing references) //IL_10bd: Unknown result type (might be due to invalid IL or missing references) //IL_10c2: Unknown result type (might be due to invalid IL or missing references) //IL_1103: Unknown result type (might be due to invalid IL or missing references) //IL_1117: Unknown result type (might be due to invalid IL or missing references) //IL_112b: Unknown result type (might be due to invalid IL or missing references) //IL_1130: Unknown result type (might be due to invalid IL or missing references) //IL_1135: Unknown result type (might be due to invalid IL or missing references) //IL_113a: Unknown result type (might be due to invalid IL or missing references) //IL_117b: Unknown result type (might be due to invalid IL or missing references) //IL_118f: Unknown result type (might be due to invalid IL or missing references) //IL_11a3: Unknown result type (might be due to invalid IL or missing references) //IL_11a8: Unknown result type (might be due to invalid IL or missing references) //IL_11ad: Unknown result type (might be due to invalid IL or missing references) //IL_11b2: Unknown result type (might be due to invalid IL or missing references) //IL_11f3: Unknown result type (might be due to invalid IL or missing references) //IL_1207: Unknown result type (might be due to invalid IL or missing references) //IL_121b: Unknown result type (might be due to invalid IL or missing references) //IL_1220: Unknown result type (might be due to invalid IL or missing references) //IL_1225: Unknown result type (might be due to invalid IL or missing references) //IL_122a: Unknown result type (might be due to invalid IL or missing references) //IL_126b: Unknown result type (might be due to invalid IL or missing references) //IL_127f: Unknown result type (might be due to invalid IL or missing references) //IL_1293: Unknown result type (might be due to invalid IL or missing references) //IL_1298: Unknown result type (might be due to invalid IL or missing references) //IL_129d: Unknown result type (might be due to invalid IL or missing references) //IL_12a2: Unknown result type (might be due to invalid IL or missing references) //IL_12e3: Unknown result type (might be due to invalid IL or missing references) //IL_12f7: Unknown result type (might be due to invalid IL or missing references) //IL_130b: Unknown result type (might be due to invalid IL or missing references) //IL_1310: Unknown result type (might be due to invalid IL or missing references) //IL_1315: Unknown result type (might be due to invalid IL or missing references) //IL_131a: Unknown result type (might be due to invalid IL or missing references) //IL_135b: Unknown result type (might be due to invalid IL or missing references) //IL_136f: Unknown result type (might be due to invalid IL or missing references) //IL_1383: Unknown result type (might be due to invalid IL or missing references) //IL_1388: Unknown result type (might be due to invalid IL or missing references) //IL_138d: Unknown result type (might be due to invalid IL or missing references) //IL_13b2: Unknown result type (might be due to invalid IL or missing references) //IL_13c6: Unknown result type (might be due to invalid IL or missing references) //IL_13da: Unknown result type (might be due to invalid IL or missing references) //IL_13df: Unknown result type (might be due to invalid IL or missing references) //IL_13e4: Unknown result type (might be due to invalid IL or missing references) //IL_13e9: Unknown result type (might be due to invalid IL or missing references) //IL_142a: Unknown result type (might be due to invalid IL or missing references) //IL_143e: Unknown result type (might be due to invalid IL or missing references) //IL_1452: Unknown result type (might be due to invalid IL or missing references) //IL_1457: Unknown result type (might be due to invalid IL or missing references) //IL_145c: Unknown result type (might be due to invalid IL or missing references) //IL_1461: Unknown result type (might be due to invalid IL or missing references) //IL_14a2: Unknown result type (might be due to invalid IL or missing references) //IL_14b6: Unknown result type (might be due to invalid IL or missing references) //IL_14ca: Unknown result type (might be due to invalid IL or missing references) //IL_14cf: Unknown result type (might be due to invalid IL or missing references) //IL_14d4: Unknown result type (might be due to invalid IL or missing references) //IL_14d9: Unknown result type (might be due to invalid IL or missing references) //IL_151a: Unknown result type (might be due to invalid IL or missing references) //IL_152e: Unknown result type (might be due to invalid IL or missing references) //IL_1542: Unknown result type (might be due to invalid IL or missing references) //IL_1547: Unknown result type (might be due to invalid IL or missing references) //IL_154c: Unknown result type (might be due to invalid IL or missing references) //IL_1551: Unknown result type (might be due to invalid IL or missing references) //IL_1592: Unknown result type (might be due to invalid IL or missing references) //IL_15a6: Unknown result type (might be due to invalid IL or missing references) //IL_15ba: Unknown result type (might be due to invalid IL or missing references) //IL_15bf: Unknown result type (might be due to invalid IL or missing references) //IL_15c4: Unknown result type (might be due to invalid IL or missing references) //IL_15c9: Unknown result type (might be due to invalid IL or missing references) //IL_160a: Unknown result type (might be due to invalid IL or missing references) //IL_161e: Unknown result type (might be due to invalid IL or missing references) //IL_1632: Unknown result type (might be due to invalid IL or missing references) //IL_1637: Unknown result type (might be due to invalid IL or missing references) //IL_163c: Unknown result type (might be due to invalid IL or missing references) //IL_1641: Unknown result type (might be due to invalid IL or missing references) //IL_1682: Unknown result type (might be due to invalid IL or missing references) //IL_1696: Unknown result type (might be due to invalid IL or missing references) //IL_16aa: Unknown result type (might be due to invalid IL or missing references) //IL_16af: Unknown result type (might be due to invalid IL or missing references) //IL_16b4: Unknown result type (might be due to invalid IL or missing references) //IL_16b9: Unknown result type (might be due to invalid IL or missing references) //IL_16fa: Unknown result type (might be due to invalid IL or missing references) //IL_170e: Unknown result type (might be due to invalid IL or missing references) //IL_1722: Unknown result type (might be due to invalid IL or missing references) //IL_1727: Unknown result type (might be due to invalid IL or missing references) //IL_172c: Unknown result type (might be due to invalid IL or missing references) //IL_1731: Unknown result type (might be due to invalid IL or missing references) //IL_1772: Unknown result type (might be due to invalid IL or missing references) //IL_1786: Unknown result type (might be due to invalid IL or missing references) //IL_179a: Unknown result type (might be due to invalid IL or missing references) //IL_179f: Unknown result type (might be due to invalid IL or missing references) //IL_17a4: Unknown result type (might be due to invalid IL or missing references) //IL_17a9: Unknown result type (might be due to invalid IL or missing references) //IL_17ea: Unknown result type (might be due to invalid IL or missing references) //IL_17fe: Unknown result type (might be due to invalid IL or missing references) //IL_1812: Unknown result type (might be due to invalid IL or missing references) //IL_1817: Unknown result type (might be due to invalid IL or missing references) //IL_181c: Unknown result type (might be due to invalid IL or missing references) //IL_1821: Unknown result type (might be due to invalid IL or missing references) //IL_1862: Unknown result type (might be due to invalid IL or missing references) //IL_1876: Unknown result type (might be due to invalid IL or missing references) //IL_188a: Unknown result type (might be due to invalid IL or missing references) //IL_188f: Unknown result type (might be due to invalid IL or missing references) //IL_1894: Unknown result type (might be due to invalid IL or missing references) //IL_1899: Unknown result type (might be due to invalid IL or missing references) //IL_18da: Unknown result type (might be due to invalid IL or missing references) //IL_18ee: Unknown result type (might be due to invalid IL or missing references) //IL_1902: Unknown result type (might be due to invalid IL or missing references) //IL_1907: Unknown result type (might be due to invalid IL or missing references) //IL_190c: Unknown result type (might be due to invalid IL or missing references) //IL_1911: Unknown result type (might be due to invalid IL or missing references) //IL_1952: Unknown result type (might be due to invalid IL or missing references) //IL_1966: Unknown result type (might be due to invalid IL or missing references) //IL_197a: Unknown result type (might be due to invalid IL or missing references) //IL_197f: Unknown result type (might be due to invalid IL or missing references) //IL_1984: Unknown result type (might be due to invalid IL or missing references) //IL_1989: Unknown result type (might be due to invalid IL or missing references) //IL_19ca: Unknown result type (might be due to invalid IL or missing references) //IL_19de: Unknown result type (might be due to invalid IL or missing references) //IL_19f2: Unknown result type (might be due to invalid IL or missing references) //IL_19f7: Unknown result type (might be due to invalid IL or missing references) //IL_19fc: Unknown result type (might be due to invalid IL or missing references) //IL_1a01: Unknown result type (might be due to invalid IL or missing references) //IL_1a42: Unknown result type (might be due to invalid IL or missing references) //IL_1a56: Unknown result type (might be due to invalid IL or missing references) //IL_1a6a: Unknown result type (might be due to invalid IL or missing references) //IL_1a6f: Unknown result type (might be due to invalid IL or missing references) //IL_1a74: Unknown result type (might be due to invalid IL or missing references) //IL_1a79: Unknown result type (might be due to invalid IL or missing references) //IL_1aba: Unknown result type (might be due to invalid IL or missing references) //IL_1ace: Unknown result type (might be due to invalid IL or missing references) //IL_1ae2: Unknown result type (might be due to invalid IL or missing references) //IL_1ae7: Unknown result type (might be due to invalid IL or missing references) //IL_1aec: Unknown result type (might be due to invalid IL or missing references) //IL_1af1: Unknown result type (might be due to invalid IL or missing references) //IL_1b32: Unknown result type (might be due to invalid IL or missing references) //IL_1b46: Unknown result type (might be due to invalid IL or missing references) //IL_1b5a: Unknown result type (might be due to invalid IL or missing references) //IL_1b5f: Unknown result type (might be due to invalid IL or missing references) //IL_1b64: Unknown result type (might be due to invalid IL or missing references) //IL_1b69: Unknown result type (might be due to invalid IL or missing references) //IL_1baa: Unknown result type (might be due to invalid IL or missing references) //IL_1bbe: Unknown result type (might be due to invalid IL or missing references) //IL_1bd2: Unknown result type (might be due to invalid IL or missing references) //IL_1bd7: Unknown result type (might be due to invalid IL or missing references) //IL_1bdc: Unknown result type (might be due to invalid IL or missing references) //IL_1be1: Unknown result type (might be due to invalid IL or missing references) //IL_1c22: Unknown result type (might be due to invalid IL or missing references) //IL_1c36: Unknown result type (might be due to invalid IL or missing references) //IL_1c4a: Unknown result type (might be due to invalid IL or missing references) //IL_1c4f: Unknown result type (might be due to invalid IL or missing references) //IL_1c54: Unknown result type (might be due to invalid IL or missing references) //IL_1c5c: Unknown result type (might be due to invalid IL or missing references) //IL_1c61: Unknown result type (might be due to invalid IL or missing references) //IL_1c66: Unknown result type (might be due to invalid IL or missing references) //IL_1ca7: Unknown result type (might be due to invalid IL or missing references) //IL_1cbb: Unknown result type (might be due to invalid IL or missing references) //IL_1ccf: Unknown result type (might be due to invalid IL or missing references) //IL_1cd4: Unknown result type (might be due to invalid IL or missing references) //IL_1cd9: Unknown result type (might be due to invalid IL or missing references) //IL_1cde: Unknown result type (might be due to invalid IL or missing references) //IL_1d1f: Unknown result type (might be due to invalid IL or missing references) //IL_1d33: Unknown result type (might be due to invalid IL or missing references) //IL_1d47: Unknown result type (might be due to invalid IL or missing references) //IL_1d4c: Unknown result type (might be due to invalid IL or missing references) //IL_1d51: Unknown result type (might be due to invalid IL or missing references) //IL_1d56: Unknown result type (might be due to invalid IL or missing references) //IL_1d97: Unknown result type (might be due to invalid IL or missing references) //IL_1dab: Unknown result type (might be due to invalid IL or missing references) //IL_1dbf: Unknown result type (might be due to invalid IL or missing references) //IL_1dc4: Unknown result type (might be due to invalid IL or missing references) //IL_1dc9: Unknown result type (might be due to invalid IL or missing references) //IL_1dce: Unknown result type (might be due to invalid IL or missing references) //IL_1e0f: Unknown result type (might be due to invalid IL or missing references) //IL_1e23: Unknown result type (might be due to invalid IL or missing references) //IL_1e37: Unknown result type (might be due to invalid IL or missing references) //IL_1e3c: Unknown result type (might be due to invalid IL or missing references) //IL_1e41: Unknown result type (might be due to invalid IL or missing references) //IL_1e46: Unknown result type (might be due to invalid IL or missing references) //IL_1e87: Unknown result type (might be due to invalid IL or missing references) //IL_1e9b: Unknown result type (might be due to invalid IL or missing references) //IL_1eaf: Unknown result type (might be due to invalid IL or missing references) //IL_1eb4: Unknown result type (might be due to invalid IL or missing references) //IL_1eb9: Unknown result type (might be due to invalid IL or missing references) //IL_1ede: Unknown result type (might be due to invalid IL or missing references) //IL_1ef2: Unknown result type (might be due to invalid IL or missing references) //IL_1f06: Unknown result type (might be due to invalid IL or missing references) //IL_1f0b: Unknown result type (might be due to invalid IL or missing references) //IL_1f10: Unknown result type (might be due to invalid IL or missing references) //IL_1f15: Unknown result type (might be due to invalid IL or missing references) //IL_1f56: Unknown result type (might be due to invalid IL or missing references) //IL_1f6a: Unknown result type (might be due to invalid IL or missing references) //IL_1f7e: Unknown result type (might be due to invalid IL or missing references) //IL_1f83: Unknown result type (might be due to invalid IL or missing references) //IL_1f88: Unknown result type (might be due to invalid IL or missing references) //IL_1f8d: Unknown result type (might be due to invalid IL or missing references) //IL_1fce: Unknown result type (might be due to invalid IL or missing references) //IL_1fe2: Unknown result type (might be due to invalid IL or missing references) //IL_1ff6: Unknown result type (might be due to invalid IL or missing references) //IL_1ffb: Unknown result type (might be due to invalid IL or missing references) //IL_2000: Unknown result type (might be due to invalid IL or missing references) //IL_2005: Unknown result type (might be due to invalid IL or missing references) //IL_2046: Unknown result type (might be due to invalid IL or missing references) //IL_205a: Unknown result type (might be due to invalid IL or missing references) //IL_206e: Unknown result type (might be due to invalid IL or missing references) //IL_2073: Unknown result type (might be due to invalid IL or missing references) //IL_2078: Unknown result type (might be due to invalid IL or missing references) //IL_207d: Unknown result type (might be due to invalid IL or missing references) //IL_20be: Unknown result type (might be due to invalid IL or missing references) //IL_20d2: Unknown result type (might be due to invalid IL or missing references) //IL_20e6: Unknown result type (might be due to invalid IL or missing references) //IL_20eb: Unknown result type (might be due to invalid IL or missing references) //IL_20f0: Unknown result type (might be due to invalid IL or missing references) //IL_20f5: Unknown result type (might be due to invalid IL or missing references) //IL_2136: Unknown result type (might be due to invalid IL or missing references) //IL_214a: Unknown result type (might be due to invalid IL or missing references) //IL_215e: Unknown result type (might be due to invalid IL or missing references) //IL_2163: Unknown result type (might be due to invalid IL or missing references) //IL_2168: Unknown result type (might be due to invalid IL or missing references) //IL_216d: Unknown result type (might be due to invalid IL or missing references) //IL_21ae: Unknown result type (might be due to invalid IL or missing references) //IL_21c2: Unknown result type (might be due to invalid IL or missing references) //IL_21d6: Unknown result type (might be due to invalid IL or missing references) //IL_21db: Unknown result type (might be due to invalid IL or missing references) //IL_21e0: Unknown result type (might be due to invalid IL or missing references) //IL_21e5: Unknown result type (might be due to invalid IL or missing references) //IL_2226: Unknown result type (might be due to invalid IL or missing references) //IL_223a: Unknown result type (might be due to invalid IL or missing references) //IL_224e: Unknown result type (might be due to invalid IL or missing references) //IL_2253: Unknown result type (might be due to invalid IL or missing references) //IL_2258: Unknown result type (might be due to invalid IL or missing references) //IL_225d: Unknown result type (might be due to invalid IL or missing references) //IL_229e: Unknown result type (might be due to invalid IL or missing references) //IL_22b2: Unknown result type (might be due to invalid IL or missing references) //IL_22c6: Unknown result type (might be due to invalid IL or missing references) //IL_22cb: Unknown result type (might be due to invalid IL or missing references) //IL_22d0: Unknown result type (might be due to invalid IL or missing references) //IL_22d5: Unknown result type (might be due to invalid IL or missing references) //IL_2316: Unknown result type (might be due to invalid IL or missing references) //IL_232a: Unknown result type (might be due to invalid IL or missing references) //IL_233e: Unknown result type (might be due to invalid IL or missing references) //IL_2343: Unknown result type (might be due to invalid IL or missing references) //IL_2348: Unknown result type (might be due to invalid IL or missing references) //IL_234d: Unknown result type (might be due to invalid IL or missing references) //IL_238e: Unknown result type (might be due to invalid IL or missing references) //IL_23a2: Unknown result type (might be due to invalid IL or missing references) //IL_23b6: Unknown result type (might be due to invalid IL or missing references) //IL_23bb: Unknown result type (might be due to invalid IL or missing references) //IL_23c0: Unknown result type (might be due to invalid IL or missing references) //IL_23c5: Unknown result type (might be due to invalid IL or missing references) //IL_2406: Unknown result type (might be due to invalid IL or missing references) //IL_241a: Unknown result type (might be due to invalid IL or missing references) //IL_242e: Unknown result type (might be due to invalid IL or missing references) //IL_2433: Unknown result type (might be due to invalid IL or missing references) //IL_2438: Unknown result type (might be due to invalid IL or missing references) //IL_243d: Unknown result type (might be due to invalid IL or missing references) //IL_247e: Unknown result type (might be due to invalid IL or missing references) //IL_2492: Unknown result type (might be due to invalid IL or missing references) //IL_24a6: Unknown result type (might be due to invalid IL or missing references) //IL_24ab: Unknown result type (might be due to invalid IL or missing references) //IL_24b0: Unknown result type (might be due to invalid IL or missing references) //IL_24b5: Unknown result type (might be due to invalid IL or missing references) //IL_24f6: Unknown result type (might be due to invalid IL or missing references) //IL_250a: Unknown result type (might be due to invalid IL or missing references) //IL_251e: Unknown result type (might be due to invalid IL or missing references) //IL_2523: Unknown result type (might be due to invalid IL or missing references) //IL_2528: Unknown result type (might be due to invalid IL or missing references) //IL_252d: Unknown result type (might be due to invalid IL or missing references) //IL_256e: Unknown result type (might be due to invalid IL or missing references) //IL_2582: Unknown result type (might be due to invalid IL or missing references) //IL_2596: Unknown result type (might be due to invalid IL or missing references) //IL_259b: Unknown result type (might be due to invalid IL or missing references) //IL_25a0: Unknown result type (might be due to invalid IL or missing references) //IL_25a5: Unknown result type (might be due to invalid IL or missing references) //IL_25e6: Unknown result type (might be due to invalid IL or missing references) //IL_25fa: Unknown result type (might be due to invalid IL or missing references) //IL_260e: Unknown result type (might be due to invalid IL or missing references) //IL_2613: Unknown result type (might be due to invalid IL or missing references) //IL_2618: Unknown result type (might be due to invalid IL or missing references) //IL_261d: Unknown result type (might be due to invalid IL or missing references) //IL_265e: Unknown result type (might be due to invalid IL or missing references) //IL_2672: Unknown result type (might be due to invalid IL or missing references) //IL_2686: Unknown result type (might be due to invalid IL or missing references) //IL_268b: Unknown result type (might be due to invalid IL or missing references) //IL_2690: Unknown result type (might be due to invalid IL or missing references) //IL_2695: Unknown result type (might be due to invalid IL or missing references) //IL_26d6: Unknown result type (might be due to invalid IL or missing references) //IL_26ea: Unknown result type (might be due to invalid IL or missing references) //IL_26fe: Unknown result type (might be due to invalid IL or missing references) //IL_2703: Unknown result type (might be due to invalid IL or missing references) //IL_2708: Unknown result type (might be due to invalid IL or missing references) //IL_270d: Unknown result type (might be due to invalid IL or missing references) //IL_274e: Unknown result type (might be due to invalid IL or missing references) //IL_2762: Unknown result type (might be due to invalid IL or missing references) //IL_2776: Unknown result type (might be due to invalid IL or missing references) //IL_277b: Unknown result type (might be due to invalid IL or missing references) //IL_2780: Unknown result type (might be due to invalid IL or missing references) //IL_2785: Unknown result type (might be due to invalid IL or missing references) //IL_27c6: Unknown result type (might be due to invalid IL or missing references) //IL_27da: Unknown result type (might be due to invalid IL or missing references) //IL_27ee: Unknown result type (might be due to invalid IL or missing references) //IL_27f3: Unknown result type (might be due to invalid IL or missing references) //IL_27f8: Unknown result type (might be due to invalid IL or missing references) //IL_27fd: Unknown result type (might be due to invalid IL or missing references) //IL_283e: Unknown result type (might be due to invalid IL or missing references) //IL_2852: Unknown result type (might be due to invalid IL or missing references) //IL_2866: Unknown result type (might be due to invalid IL or missing references) //IL_286b: Unknown result type (might be due to invalid IL or missing references) //IL_2870: Unknown result type (might be due to invalid IL or missing references) //IL_2875: Unknown result type (might be due to invalid IL or missing references) //IL_28b6: Unknown result type (might be due to invalid IL or missing references) //IL_28ca: Unknown result type (might be due to invalid IL or missing references) //IL_28de: Unknown result type (might be due to invalid IL or missing references) //IL_28e3: Unknown result type (might be due to invalid IL or missing references) //IL_28e8: Unknown result type (might be due to invalid IL or missing references) //IL_28ed: Unknown result type (might be due to invalid IL or missing references) //IL_292e: Unknown result type (might be due to invalid IL or missing references) //IL_2942: Unknown result type (might be due to invalid IL or missing references) //IL_2956: Unknown result type (might be due to invalid IL or missing references) //IL_295b: Unknown result type (might be due to invalid IL or missing references) //IL_2960: Unknown result type (might be due to invalid IL or missing references) //IL_2965: Unknown result type (might be due to invalid IL or missing references) //IL_29a6: Unknown result type (might be due to invalid IL or missing references) //IL_29ba: Unknown result type (might be due to invalid IL or missing references) //IL_29ce: Unknown result type (might be due to invalid IL or missing references) //IL_29d3: Unknown result type (might be due to invalid IL or missing references) //IL_29d8: Unknown result type (might be due to invalid IL or missing references) //IL_29dd: Unknown result type (might be due to invalid IL or missing references) //IL_2a1e: Unknown result type (might be due to invalid IL or missing references) //IL_2a32: Unknown result type (might be due to invalid IL or missing references) //IL_2a46: Unknown result type (might be due to invalid IL or missing references) //IL_2a4b: Unknown result type (might be due to invalid IL or missing references) //IL_2a50: Unknown result type (might be due to invalid IL or missing references) //IL_2a75: Unknown result type (might be due to invalid IL or missing references) //IL_2a89: Unknown result type (might be due to invalid IL or missing references) //IL_2a9d: Unknown result type (might be due to invalid IL or missing references) //IL_2aa2: Unknown result type (might be due to invalid IL or missing references) //IL_2aa7: Unknown result type (might be due to invalid IL or missing references) //IL_2aac: Unknown result type (might be due to invalid IL or missing references) //IL_2aed: Unknown result type (might be due to invalid IL or missing references) //IL_2b01: Unknown result type (might be due to invalid IL or missing references) //IL_2b15: Unknown result type (might be due to invalid IL or missing references) //IL_2b1a: Unknown result type (might be due to invalid IL or missing references) //IL_2b1f: Unknown result type (might be due to invalid IL or missing references) //IL_2b24: Unknown result type (might be due to invalid IL or missing references) //IL_2b65: Unknown result type (might be due to invalid IL or missing references) //IL_2b79: Unknown result type (might be due to invalid IL or missing references) //IL_2b8d: Unknown result type (might be due to invalid IL or missing references) //IL_2b92: Unknown result type (might be due to invalid IL or missing references) //IL_2b97: Unknown result type (might be due to invalid IL or missing references) //IL_2b9c: Unknown result type (might be due to invalid IL or missing references) //IL_2bdd: Unknown result type (might be due to invalid IL or missing references) //IL_2bf1: Unknown result type (might be due to invalid IL or missing references) //IL_2c05: Unknown result type (might be due to invalid IL or missing references) //IL_2c0a: Unknown result type (might be due to invalid IL or missing references) //IL_2c0f: Unknown result type (might be due to invalid IL or missing references) //IL_2c14: Unknown result type (might be due to invalid IL or missing references) //IL_2c55: Unknown result type (might be due to invalid IL or missing references) //IL_2c69: Unknown result type (might be due to invalid IL or missing references) //IL_2c7d: Unknown result type (might be due to invalid IL or missing references) //IL_2c82: Unknown result type (might be due to invalid IL or missing references) //IL_2c87: Unknown result type (might be due to invalid IL or missing references) //IL_2c8c: Unknown result type (might be due to invalid IL or missing references) //IL_2ccd: Unknown result type (might be due to invalid IL or missing references) //IL_2ce1: Unknown result type (might be due to invalid IL or missing references) //IL_2cf5: Unknown result type (might be due to invalid IL or missing references) //IL_2cfa: Unknown result type (might be due to invalid IL or missing references) //IL_2cff: Unknown result type (might be due to invalid IL or missing references) //IL_2d04: Unknown result type (might be due to invalid IL or missing references) //IL_2d45: Unknown result type (might be due to invalid IL or missing references) //IL_2d59: Unknown result type (might be due to invalid IL or missing references) //IL_2d6d: Unknown result type (might be due to invalid IL or missing references) //IL_2d72: Unknown result type (might be due to invalid IL or missing references) //IL_2d77: Unknown result type (might be due to invalid IL or missing references) //IL_2d7c: Unknown result type (might be due to invalid IL or missing references) //IL_2dbd: Unknown result type (might be due to invalid IL or missing references) //IL_2dd1: Unknown result type (might be due to invalid IL or missing references) //IL_2de5: Unknown result type (might be due to invalid IL or missing references) //IL_2dea: Unknown result type (might be due to invalid IL or missing references) //IL_2def: Unknown result type (might be due to invalid IL or missing references) //IL_2df4: Unknown result type (might be due to invalid IL or missing references) //IL_2e35: Unknown result type (might be due to invalid IL or missing references) //IL_2e49: Unknown result type (might be due to invalid IL or missing references) //IL_2e5d: Unknown result type (might be due to invalid IL or missing references) //IL_2e62: Unknown result type (might be due to invalid IL or missing references) //IL_2e67: Unknown result type (might be due to invalid IL or missing references) //IL_2e6c: Unknown result type (might be due to invalid IL or missing references) //IL_2ead: Unknown result type (might be due to invalid IL or missing references) //IL_2ec1: Unknown result type (might be due to invalid IL or missing references) //IL_2ed5: Unknown result type (might be due to invalid IL or missing references) //IL_2eda: Unknown result type (might be due to invalid IL or missing references) //IL_2edf: Unknown result type (might be due to invalid IL or missing references) //IL_2ee4: Unknown result type (might be due to invalid IL or missing references) //IL_2f25: Unknown result type (might be due to invalid IL or missing references) //IL_2f39: Unknown result type (might be due to invalid IL or missing references) //IL_2f4d: Unknown result type (might be due to invalid IL or missing references) //IL_2f52: Unknown result type (might be due to invalid IL or missing references) //IL_2f57: Unknown result type (might be due to invalid IL or missing references) //IL_2f5c: Unknown result type (might be due to invalid IL or missing references) //IL_2f9d: Unknown result type (might be due to invalid IL or missing references) //IL_2fb1: Unknown result type (might be due to invalid IL or missing references) //IL_2fc5: Unknown result type (might be due to invalid IL or missing references) //IL_2fca: Unknown result type (might be due to invalid IL or missing references) //IL_2fcf: Unknown result type (might be due to invalid IL or missing references) //IL_2fd4: Unknown result type (might be due to invalid IL or missing references) //IL_3015: Unknown result type (might be due to invalid IL or missing references) //IL_3029: Unknown result type (might be due to invalid IL or missing references) //IL_303d: Unknown result type (might be due to invalid IL or missing references) //IL_3042: Unknown result type (might be due to invalid IL or missing references) //IL_3047: Unknown result type (might be due to invalid IL or missing references) //IL_304c: Unknown result type (might be due to invalid IL or missing references) //IL_308d: Unknown result type (might be due to invalid IL or missing references) //IL_30a1: Unknown result type (might be due to invalid IL or missing references) //IL_30b5: Unknown result type (might be due to invalid IL or missing references) //IL_30ba: Unknown result type (might be due to invalid IL or missing references) //IL_30bf: Unknown result type (might be due to invalid IL or missing references) //IL_30c4: Unknown result type (might be due to invalid IL or missing references) //IL_3105: Unknown result type (might be due to invalid IL or missing references) //IL_3119: Unknown result type (might be due to invalid IL or missing references) //IL_312d: Unknown result type (might be due to invalid IL or missing references) //IL_3132: Unknown result type (might be due to invalid IL or missing references) //IL_3137: Unknown result type (might be due to invalid IL or missing references) //IL_313c: Unknown result type (might be due to invalid IL or missing references) //IL_317d: Unknown result type (might be due to invalid IL or missing references) //IL_3191: Unknown result type (might be due to invalid IL or missing references) //IL_31a5: Unknown result type (might be due to invalid IL or missing references) //IL_31aa: Unknown result type (might be due to invalid IL or missing references) //IL_31af: Unknown result type (might be due to invalid IL or missing references) //IL_31b4: Unknown result type (might be due to invalid IL or missing references) //IL_31f5: Unknown result type (might be due to invalid IL or missing references) //IL_3209: Unknown result type (might be due to invalid IL or missing references) //IL_321d: Unknown result type (might be due to invalid IL or missing references) //IL_3222: Unknown result type (might be due to invalid IL or missing references) //IL_3227: Unknown result type (might be due to invalid IL or missing references) //IL_322c: Unknown result type (might be due to invalid IL or missing references) //IL_326d: Unknown result type (might be due to invalid IL or missing references) //IL_3281: Unknown result type (might be due to invalid IL or missing references) //IL_3295: Unknown result type (might be due to invalid IL or missing references) //IL_329a: Unknown result type (might be due to invalid IL or missing references) //IL_329f: Unknown result type (might be due to invalid IL or missing references) //IL_32c4: Unknown result type (might be due to invalid IL or missing references) //IL_32d8: Unknown result type (might be due to invalid IL or missing references) //IL_32ec: Unknown result type (might be due to invalid IL or missing references) //IL_32f1: Unknown result type (might be due to invalid IL or missing references) //IL_32f6: Unknown result type (might be due to invalid IL or missing references) //IL_32fb: Unknown result type (might be due to invalid IL or missing references) //IL_333c: Unknown result type (might be due to invalid IL or missing references) //IL_3350: Unknown result type (might be due to invalid IL or missing references) //IL_3364: Unknown result type (might be due to invalid IL or missing references) //IL_3369: Unknown result type (might be due to invalid IL or missing references) //IL_336e: Unknown result type (might be due to invalid IL or missing references) //IL_3373: Unknown result type (might be due to invalid IL or missing references) //IL_33b4: Unknown result type (might be due to invalid IL or missing references) //IL_33c8: Unknown result type (might be due to invalid IL or missing references) //IL_33dc: Unknown result type (might be due to invalid IL or missing references) //IL_33e1: Unknown result type (might be due to invalid IL or missing references) //IL_33e6: Unknown result type (might be due to invalid IL or missing references) //IL_33eb: Unknown result type (might be due to invalid IL or missing references) //IL_342c: Unknown result type (might be due to invalid IL or missing references) //IL_3440: Unknown result type (might be due to invalid IL or missing references) //IL_3454: Unknown result type (might be due to invalid IL or missing references) //IL_3459: Unknown result type (might be due to invalid IL or missing references) //IL_345e: Unknown result type (might be due to invalid IL or missing references) //IL_3463: Unknown result type (might be due to invalid IL or missing references) //IL_34a4: Unknown result type (might be due to invalid IL or missing references) //IL_34b8: Unknown result type (might be due to invalid IL or missing references) //IL_34cc: Unknown result type (might be due to invalid IL or missing references) //IL_34d1: Unknown result type (might be due to invalid IL or missing references) //IL_34d6: Unknown result type (might be due to invalid IL or missing references) //IL_34db: Unknown result type (might be due to invalid IL or missing references) //IL_351c: Unknown result type (might be due to invalid IL or missing references) //IL_3530: Unknown result type (might be due to invalid IL or missing references) //IL_3544: Unknown result type (might be due to invalid IL or missing references) //IL_3549: Unknown result type (might be due to invalid IL or missing references) //IL_354e: Unknown result type (might be due to invalid IL or missing references) //IL_3553: Unknown result type (might be due to invalid IL or missing references) //IL_3594: Unknown result type (might be due to invalid IL or missing references) //IL_35a8: Unknown result type (might be due to invalid IL or missing references) //IL_35bc: Unknown result type (might be due to invalid IL or missing references) //IL_35c1: Unknown result type (might be due to invalid IL or missing references) //IL_35c6: Unknown result type (might be due to invalid IL or missing references) //IL_35cb: Unknown result type (might be due to invalid IL or missing references) //IL_360c: Unknown result type (might be due to invalid IL or missing references) //IL_3620: Unknown result type (might be due to invalid IL or missing references) //IL_3634: Unknown result type (might be due to invalid IL or missing references) //IL_3639: Unknown result type (might be due to invalid IL or missing references) //IL_363e: Unknown result type (might be due to invalid IL or missing references) //IL_3643: Unknown result type (might be due to invalid IL or missing references) //IL_3684: Unknown result type (might be due to invalid IL or missing references) //IL_3698: Unknown result type (might be due to invalid IL or missing references) //IL_36ac: Unknown result type (might be due to invalid IL or missing references) //IL_36b1: Unknown result type (might be due to invalid IL or missing references) //IL_36b6: Unknown result type (might be due to invalid IL or missing references) //IL_36bb: Unknown result type (might be due to invalid IL or missing references) //IL_36fc: Unknown result type (might be due to invalid IL or missing references) //IL_3710: Unknown result type (might be due to invalid IL or missing references) //IL_3724: Unknown result type (might be due to invalid IL or missing references) //IL_3729: Unknown result type (might be due to invalid IL or missing references) //IL_372e: Unknown result type (might be due to invalid IL or missing references) //IL_3733: Unknown result type (might be due to invalid IL or missing references) //IL_3774: Unknown result type (might be due to invalid IL or missing references) //IL_3788: Unknown result type (might be due to invalid IL or missing references) //IL_379c: Unknown result type (might be due to invalid IL or missing references) //IL_37a1: Unknown result type (might be due to invalid IL or missing references) //IL_37a6: Unknown result type (might be due to invalid IL or missing references) //IL_37ab: Unknown result type (might be due to invalid IL or missing references) //IL_37ec: Unknown result type (might be due to invalid IL or missing references) //IL_3800: Unknown result type (might be due to invalid IL or missing references) //IL_3814: Unknown result type (might be due to invalid IL or missing references) //IL_3819: Unknown result type (might be due to invalid IL or missing references) //IL_381e: Unknown result type (might be due to invalid IL or missing references) //IL_3823: Unknown result type (might be due to invalid IL or missing references) //IL_3864: Unknown result type (might be due to invalid IL or missing references) //IL_3878: Unknown result type (might be due to invalid IL or missing references) //IL_388c: Unknown result type (might be due to invalid IL or missing references) //IL_3891: Unknown result type (might be due to invalid IL or missing references) //IL_3896: Unknown result type (might be due to invalid IL or missing references) //IL_389b: Unknown result type (might be due to invalid IL or missing references) //IL_38dc: Unknown result type (might be due to invalid IL or missing references) //IL_38f0: Unknown result type (might be due to invalid IL or missing references) //IL_3904: Unknown result type (might be due to invalid IL or missing references) //IL_3909: Unknown result type (might be due to invalid IL or missing references) //IL_390e: Unknown result type (might be due to invalid IL or missing references) //IL_3913: Unknown result type (might be due to invalid IL or missing references) //IL_3954: Unknown result type (might be due to invalid IL or missing references) //IL_3968: Unknown result type (might be due to invalid IL or missing references) //IL_397c: Unknown result type (might be due to invalid IL or missing references) //IL_3981: Unknown result type (might be due to invalid IL or missing references) //IL_3986: Unknown result type (might be due to invalid IL or missing references) //IL_398b: Unknown result type (might be due to invalid IL or missing references) //IL_39cc: Unknown result type (might be due to invalid IL or missing references) //IL_39e0: Unknown result type (might be due to invalid IL or missing references) //IL_39f4: Unknown result type (might be due to invalid IL or missing references) //IL_39f9: Unknown result type (might be due to invalid IL or missing references) //IL_39fe: Unknown result type (might be due to invalid IL or missing references) //IL_3a03: Unknown result type (might be due to invalid IL or missing references) //IL_3a44: Unknown result type (might be due to invalid IL or missing references) //IL_3a58: Unknown result type (might be due to invalid IL or missing references) //IL_3a6c: Unknown result type (might be due to invalid IL or missing references) //IL_3a71: Unknown result type (might be due to invalid IL or missing references) //IL_3a76: Unknown result type (might be due to invalid IL or missing references) //IL_3a7b: Unknown result type (might be due to invalid IL or missing references) //IL_3abc: Unknown result type (might be due to invalid IL or missing references) //IL_3ad0: Unknown result type (might be due to invalid IL or missing references) //IL_3ae4: Unknown result type (might be due to invalid IL or missing references) //IL_3ae9: Unknown result type (might be due to invalid IL or missing references) //IL_3aee: Unknown result type (might be due to invalid IL or missing references) //IL_3af3: Unknown result type (might be due to invalid IL or missing references) //IL_3b34: Unknown result type (might be due to invalid IL or missing references) //IL_3b48: Unknown result type (might be due to invalid IL or missing references) //IL_3b5c: Unknown result type (might be due to invalid IL or missing references) //IL_3b61: Unknown result type (might be due to invalid IL or missing references) //IL_3b66: Unknown result type (might be due to invalid IL or missing references) //IL_3b6b: Unknown result type (might be due to invalid IL or missing references) //IL_3bac: Unknown result type (might be due to invalid IL or missing references) //IL_3bc0: Unknown result type (might be due to invalid IL or missing references) //IL_3bd4: Unknown result type (might be due to invalid IL or missing references) //IL_3bd9: Unknown result type (might be due to invalid IL or missing references) //IL_3bde: Unknown result type (might be due to invalid IL or missing references) //IL_3c03: Unknown result type (might be due to invalid IL or missing references) //IL_3c17: Unknown result type (might be due to invalid IL or missing references) //IL_3c2b: Unknown result type (might be due to invalid IL or missing references) //IL_3c30: Unknown result type (might be due to invalid IL or missing references) //IL_3c35: Unknown result type (might be due to invalid IL or missing references) //IL_3c5a: Unknown result type (might be due to invalid IL or missing references) //IL_3c6e: Unknown result type (might be due to invalid IL or missing references) //IL_3c82: Unknown result type (might be due to invalid IL or missing references) //IL_3c87: Unknown result type (might be due to invalid IL or missing references) //IL_3c8c: Unknown result type (might be due to invalid IL or missing references) //IL_3cb1: Unknown result type (might be due to invalid IL or missing references) //IL_3cc5: Unknown result type (might be due to invalid IL or missing references) //IL_3cd9: Unknown result type (might be due to invalid IL or missing references) //IL_3cde: Unknown result type (might be due to invalid IL or missing references) //IL_3ce3: Unknown result type (might be due to invalid IL or missing references) //IL_3d08: Unknown result type (might be due to invalid IL or missing references) //IL_3d1c: Unknown result type (might be due to invalid IL or missing references) //IL_3d30: Unknown result type (might be due to invalid IL or missing references) //IL_3d35: Unknown result type (might be due to invalid IL or missing references) //IL_3d3a: Unknown result type (might be due to invalid IL or missing references) //IL_3d5f: Unknown result type (might be due to invalid IL or missing references) //IL_3d73: Unknown result type (might be due to invalid IL or missing references) //IL_3d87: Unknown result type (might be due to invalid IL or missing references) //IL_3d8c: Unknown result type (might be due to invalid IL or missing references) //IL_3d91: Unknown result type (might be due to invalid IL or missing references) //IL_3d96: Unknown result type (might be due to invalid IL or missing references) //IL_3dd7: Unknown result type (might be due to invalid IL or missing references) //IL_3deb: Unknown result type (might be due to invalid IL or missing references) //IL_3dff: Unknown result type (might be due to invalid IL or missing references) //IL_3e04: Unknown result type (might be due to invalid IL or missing references) //IL_3e09: Unknown result type (might be due to invalid IL or missing references) //IL_3e0e: Unknown result type (might be due to invalid IL or missing references) //IL_3e4f: Unknown result type (might be due to invalid IL or missing references) //IL_3e63: Unknown result type (might be due to invalid IL or missing references) //IL_3e77: Unknown result type (might be due to invalid IL or missing references) //IL_3e7c: Unknown result type (might be due to invalid IL or missing references) //IL_3e81: Unknown result type (might be due to invalid IL or missing references) //IL_3e86: Unknown result type (might be due to invalid IL or missing references) //IL_3ec7: Unknown result type (might be due to invalid IL or missing references) //IL_3edb: Unknown result type (might be due to invalid IL or missing references) //IL_3eef: Unknown result type (might be due to invalid IL or missing references) //IL_3ef4: Unknown result type (might be due to invalid IL or missing references) //IL_3ef9: Unknown result type (might be due to invalid IL or missing references) //IL_3f1e: Unknown result type (might be due to invalid IL or missing references) //IL_3f32: Unknown result type (might be due to invalid IL or missing references) //IL_3f46: Unknown result type (might be due to invalid IL or missing references) //IL_3f4b: Unknown result type (might be due to invalid IL or missing references) //IL_3f50: Unknown result type (might be due to invalid IL or missing references) //IL_3f55: Unknown result type (might be due to invalid IL or missing references) //IL_3f96: Unknown result type (might be due to invalid IL or missing references) //IL_3faa: Unknown result type (might be due to invalid IL or missing references) //IL_3fbe: Unknown result type (might be due to invalid IL or missing references) //IL_3fc3: Unknown result type (might be due to invalid IL or missing references) //IL_3fc8: Unknown result type (might be due to invalid IL or missing references) //IL_3fcd: Unknown result type (might be due to invalid IL or missing references) //IL_400e: Unknown result type (might be due to invalid IL or missing references) //IL_4022: Unknown result type (might be due to invalid IL or missing references) //IL_4036: Unknown result type (might be due to invalid IL or missing references) //IL_403b: Unknown result type (might be due to invalid IL or missing references) //IL_4040: Unknown result type (might be due to invalid IL or missing references) //IL_4045: Unknown result type (might be due to invalid IL or missing references) //IL_4086: Unknown result type (might be due to invalid IL or missing references) //IL_409a: Unknown result type (might be due to invalid IL or missing references) //IL_40ae: Unknown result type (might be due to invalid IL or missing references) //IL_40b3: Unknown result type (might be due to invalid IL or missing references) //IL_40b8: Unknown result type (might be due to invalid IL or missing references) //IL_40bd: Unknown result type (might be due to invalid IL or missing references) //IL_40fe: Unknown result type (might be due to invalid IL or missing references) //IL_4112: Unknown result type (might be due to invalid IL or missing references) //IL_4126: Unknown result type (might be due to invalid IL or missing references) //IL_412b: Unknown result type (might be due to invalid IL or missing references) //IL_4130: Unknown result type (might be due to invalid IL or missing references) //IL_4135: Unknown result type (might be due to invalid IL or missing references) //IL_4176: Unknown result type (might be due to invalid IL or missing references) //IL_418a: Unknown result type (might be due to invalid IL or missing references) //IL_419e: Unknown result type (might be due to invalid IL or missing references) //IL_41a3: Unknown result type (might be due to invalid IL or missing references) //IL_41a8: Unknown result type (might be due to invalid IL or missing references) //IL_41ad: Unknown result type (might be due to invalid IL or missing references) //IL_41ee: Unknown result type (might be due to invalid IL or missing references) //IL_4202: Unknown result type (might be due to invalid IL or missing references) //IL_4216: Unknown result type (might be due to invalid IL or missing references) //IL_421b: Unknown result type (might be due to invalid IL or missing references) //IL_4220: Unknown result type (might be due to invalid IL or missing references) //IL_4245: Unknown result type (might be due to invalid IL or missing references) //IL_4259: Unknown result type (might be due to invalid IL or missing references) //IL_426d: Unknown result type (might be due to invalid IL or missing references) //IL_4272: Unknown result type (might be due to invalid IL or missing references) //IL_4277: Unknown result type (might be due to invalid IL or missing references) //IL_427c: Unknown result type (might be due to invalid IL or missing references) //IL_42bd: Unknown result type (might be due to invalid IL or missing references) //IL_42d1: Unknown result type (might be due to invalid IL or missing references) //IL_42e5: Unknown result type (might be due to invalid IL or missing references) //IL_42ea: Unknown result type (might be due to invalid IL or missing references) //IL_42ef: Unknown result type (might be due to invalid IL or missing references) //IL_42f4: Unknown result type (might be due to invalid IL or missing references) //IL_4335: Unknown result type (might be due to invalid IL or missing references) //IL_4349: Unknown result type (might be due to invalid IL or missing references) //IL_435d: Unknown result type (might be due to invalid IL or missing references) //IL_4362: Unknown result type (might be due to invalid IL or missing references) //IL_4367: Unknown result type (might be due to invalid IL or missing references) //IL_436c: Unknown result type (might be due to invalid IL or missing references) //IL_43ad: Unknown result type (might be due to invalid IL or missing references) //IL_43c1: Unknown result type (might be due to invalid IL or missing references) //IL_43d5: Unknown result type (might be due to invalid IL or missing references) //IL_43da: Unknown result type (might be due to invalid IL or missing references) //IL_43df: Unknown result type (might be due to invalid IL or missing references) //IL_43e4: Unknown result type (might be due to invalid IL or missing references) //IL_4425: Unknown result type (might be due to invalid IL or missing references) //IL_4439: Unknown result type (might be due to invalid IL or missing references) //IL_444d: Unknown result type (might be due to invalid IL or missing references) //IL_4452: Unknown result type (might be due to invalid IL or missing references) //IL_4457: Unknown result type (might be due to invalid IL or missing references) //IL_445c: Unknown result type (might be due to invalid IL or missing references) //IL_449d: Unknown result type (might be due to invalid IL or missing references) //IL_44b1: Unknown result type (might be due to invalid IL or missing references) //IL_44c5: Unknown result type (might be due to invalid IL or missing references) //IL_44ca: Unknown result type (might be due to invalid IL or missing references) //IL_44cf: Unknown result type (might be due to invalid IL or missing references) //IL_44d4: Unknown result type (might be due to invalid IL or missing references) //IL_4515: Unknown result type (might be due to invalid IL or missing references) //IL_4529: Unknown result type (might be due to invalid IL or missing references) //IL_453d: Unknown result type (might be due to invalid IL or missing references) //IL_4542: Unknown result type (might be due to invalid IL or missing references) //IL_4547: Unknown result type (might be due to invalid IL or missing references) //IL_454c: Unknown result type (might be due to invalid IL or missing references) //IL_458d: Unknown result type (might be due to invalid IL or missing references) //IL_45a1: Unknown result type (might be due to invalid IL or missing references) //IL_45b5: Unknown result type (might be due to invalid IL or missing references) //IL_45ba: Unknown result type (might be due to invalid IL or missing references) //IL_45bf: Unknown result type (might be due to invalid IL or missing references) //IL_45c4: Unknown result type (might be due to invalid IL or missing references) //IL_4605: Unknown result type (might be due to invalid IL or missing references) //IL_4619: Unknown result type (might be due to invalid IL or missing references) //IL_462d: Unknown result type (might be due to invalid IL or missing references) //IL_4632: Unknown result type (might be due to invalid IL or missing references) //IL_4637: Unknown result type (might be due to invalid IL or missing references) //IL_463c: Unknown result type (might be due to invalid IL or missing references) //IL_467d: Unknown result type (might be due to invalid IL or missing references) //IL_4691: Unknown result type (might be due to invalid IL or missing references) //IL_46a5: Unknown result type (might be due to invalid IL or missing references) //IL_46aa: Unknown result type (might be due to invalid IL or missing references) //IL_46af: Unknown result type (might be due to invalid IL or missing references) //IL_46b4: Unknown result type (might be due to invalid IL or missing references) //IL_46f5: Unknown result type (might be due to invalid IL or missing references) //IL_4709: Unknown result type (might be due to invalid IL or missing references) //IL_471d: Unknown result type (might be due to invalid IL or missing references) //IL_4722: Unknown result type (might be due to invalid IL or missing references) //IL_4727: Unknown result type (might be due to invalid IL or missing references) //IL_474c: Unknown result type (might be due to invalid IL or missing references) //IL_4760: Unknown result type (might be due to invalid IL or missing references) //IL_4774: Unknown result type (might be due to invalid IL or missing references) //IL_4779: Unknown result type (might be due to invalid IL or missing references) //IL_477e: Unknown result type (might be due to invalid IL or missing references) //IL_4783: Unknown result type (might be due to invalid IL or missing references) //IL_47c4: Unknown result type (might be due to invalid IL or missing references) //IL_47d8: Unknown result type (might be due to invalid IL or missing references) //IL_47ec: Unknown result type (might be due to invalid IL or missing references) //IL_47f1: Unknown result type (might be due to invalid IL or missing references) //IL_47f6: Unknown result type (might be due to invalid IL or missing references) //IL_47fb: Unknown result type (might be due to invalid IL or missing references) //IL_483c: Unknown result type (might be due to invalid IL or missing references) //IL_4850: Unknown result type (might be due to invalid IL or missing references) //IL_4864: Unknown result type (might be due to invalid IL or missing references) //IL_4869: Unknown result type (might be due to invalid IL or missing references) //IL_486e: Unknown result type (might be due to invalid IL or missing references) //IL_4873: Unknown result type (might be due to invalid IL or missing references) //IL_48b4: Unknown result type (might be due to invalid IL or missing references) //IL_48c8: Unknown result type (might be due to invalid IL or missing references) //IL_48dc: Unknown result type (might be due to invalid IL or missing references) //IL_48e1: Unknown result type (might be due to invalid IL or missing references) //IL_48e6: Unknown result type (might be due to invalid IL or missing references) //IL_490b: Unknown result type (might be due to invalid IL or missing references) //IL_491f: Unknown result type (might be due to invalid IL or missing references) //IL_4933: Unknown result type (might be due to invalid IL or missing references) //IL_4938: Unknown result type (might be due to invalid IL or missing references) //IL_493d: Unknown result type (might be due to invalid IL or missing references) //IL_4942: Unknown result type (might be due to invalid IL or missing references) //IL_4983: Unknown result type (might be due to invalid IL or missing references) //IL_4997: Unknown result type (might be due to invalid IL or missing references) //IL_49ab: Unknown result type (might be due to invalid IL or missing references) //IL_49b0: Unknown result type (might be due to invalid IL or missing references) //IL_49b5: Unknown result type (might be due to invalid IL or missing references) //IL_49ba: Unknown result type (might be due to invalid IL or missing references) //IL_49fb: Unknown result type (might be due to invalid IL or missing references) //IL_4a0f: Unknown result type (might be due to invalid IL or missing references) //IL_4a23: Unknown result type (might be due to invalid IL or missing references) //IL_4a28: Unknown result type (might be due to invalid IL or missing references) //IL_4a2d: Unknown result type (might be due to invalid IL or missing references) //IL_4a32: Unknown result type (might be due to invalid IL or missing references) //IL_4a73: Unknown result type (might be due to invalid IL or missing references) //IL_4a87: Unknown result type (might be due to invalid IL or missing references) //IL_4a9b: Unknown result type (might be due to invalid IL or missing references) //IL_4aa0: Unknown result type (might be due to invalid IL or missing references) //IL_4aa5: Unknown result type (might be due to invalid IL or missing references) //IL_4aaa: Unknown result type (might be due to invalid IL or missing references) //IL_4aeb: Unknown result type (might be due to invalid IL or missing references) //IL_4aff: Unknown result type (might be due to invalid IL or missing references) //IL_4b13: Unknown result type (might be due to invalid IL or missing references) //IL_4b18: Unknown result type (might be due to invalid IL or missing references) //IL_4b1d: Unknown result type (might be due to invalid IL or missing references) //IL_4b22: Unknown result type (might be due to invalid IL or missing references) //IL_4b63: Unknown result type (might be due to invalid IL or missing references) //IL_4b77: Unknown result type (might be due to invalid IL or missing references) //IL_4b8b: Unknown result type (might be due to invalid IL or missing references) //IL_4b90: Unknown result type (might be due to invalid IL or missing references) //IL_4b95: Unknown result type (might be due to invalid IL or missing references) //IL_4b9a: Unknown result type (might be due to invalid IL or missing references) //IL_4bdb: Unknown result type (might be due to invalid IL or missing references) //IL_4bef: Unknown result type (might be due to invalid IL or missing references) //IL_4c03: Unknown result type (might be due to invalid IL or missing references) //IL_4c08: Unknown result type (might be due to invalid IL or missing references) //IL_4c0d: Unknown result type (might be due to invalid IL or missing references) //IL_4c12: Unknown result type (might be due to invalid IL or missing references) //IL_4c53: Unknown result type (might be due to invalid IL or missing references) //IL_4c67: Unknown result type (might be due to invalid IL or missing references) //IL_4c7b: Unknown result type (might be due to invalid IL or missing references) //IL_4c80: Unknown result type (might be due to invalid IL or missing references) //IL_4c85: Unknown result type (might be due to invalid IL or missing references) //IL_4c8a: Unknown result type (might be due to invalid IL or missing references) //IL_4ccb: Unknown result type (might be due to invalid IL or missing references) //IL_4cdf: Unknown result type (might be due to invalid IL or missing references) //IL_4cf3: Unknown result type (might be due to invalid IL or missing references) //IL_4cf8: Unknown result type (might be due to invalid IL or missing references) //IL_4cfd: Unknown result type (might be due to invalid IL or missing references) //IL_4d02: Unknown result type (might be due to invalid IL or missing references) //IL_4d43: Unknown result type (might be due to invalid IL or missing references) //IL_4d57: Unknown result type (might be due to invalid IL or missing references) //IL_4d6b: Unknown result type (might be due to invalid IL or missing references) //IL_4d70: Unknown result type (might be due to invalid IL or missing references) //IL_4d75: Unknown result type (might be due to invalid IL or missing references) //IL_4d7a: Unknown result type (might be due to invalid IL or missing references) //IL_4dbb: Unknown result type (might be due to invalid IL or missing references) //IL_4dcf: Unknown result type (might be due to invalid IL or missing references) //IL_4de3: Unknown result type (might be due to invalid IL or missing references) //IL_4de8: Unknown result type (might be due to invalid IL or missing references) //IL_4ded: Unknown result type (might be due to invalid IL or missing references) //IL_4df2: Unknown result type (might be due to invalid IL or missing references) //IL_4e33: Unknown result type (might be due to invalid IL or missing references) //IL_4e47: Unknown result type (might be due to invalid IL or missing references) //IL_4e5b: Unknown result type (might be due to invalid IL or missing references) //IL_4e60: Unknown result type (might be due to invalid IL or missing references) //IL_4e65: Unknown result type (might be due to invalid IL or missing references) //IL_4e6a: Unknown result type (might be due to invalid IL or missing references) //IL_4eab: Unknown result type (might be due to invalid IL or missing references) //IL_4ebf: Unknown result type (might be due to invalid IL or missing references) //IL_4ed3: Unknown result type (might be due to invalid IL or missing references) //IL_4ed8: Unknown result type (might be due to invalid IL or missing references) //IL_4edd: Unknown result type (might be due to invalid IL or missing references) //IL_4ee2: Unknown result type (might be due to invalid IL or missing references) //IL_4f23: Unknown result type (might be due to invalid IL or missing references) //IL_4f37: Unknown result type (might be due to invalid IL or missing references) //IL_4f4b: Unknown result type (might be due to invalid IL or missing references) //IL_4f50: Unknown result type (might be due to invalid IL or missing references) //IL_4f55: Unknown result type (might be due to invalid IL or missing references) //IL_4f5d: Unknown result type (might be due to invalid IL or missing references) //IL_4f62: Unknown result type (might be due to invalid IL or missing references) //IL_4f67: Unknown result type (might be due to invalid IL or missing references) //IL_4fa8: Unknown result type (might be due to invalid IL or missing references) //IL_4fbc: Unknown result type (might be due to invalid IL or missing references) //IL_4fd0: Unknown result type (might be due to invalid IL or missing references) //IL_4fd5: Unknown result type (might be due to invalid IL or missing references) //IL_4fda: Unknown result type (might be due to invalid IL or missing references) //IL_4fdf: Unknown result type (might be due to invalid IL or missing references) //IL_5020: Unknown result type (might be due to invalid IL or missing references) //IL_5034: Unknown result type (might be due to invalid IL or missing references) //IL_5048: Unknown result type (might be due to invalid IL or missing references) //IL_504d: Unknown result type (might be due to invalid IL or missing references) //IL_5052: Unknown result type (might be due to invalid IL or missing references) //IL_5057: Unknown result type (might be due to invalid IL or missing references) //IL_5098: Unknown result type (might be due to invalid IL or missing references) //IL_50ac: Unknown result type (might be due to invalid IL or missing references) //IL_50c0: Unknown result type (might be due to invalid IL or missing references) //IL_50c5: Unknown result type (might be due to invalid IL or missing references) //IL_50ca: Unknown result type (might be due to invalid IL or missing references) //IL_50cf: Unknown result type (might be due to invalid IL or missing references) //IL_5110: Unknown result type (might be due to invalid IL or missing references) //IL_5124: Unknown result type (might be due to invalid IL or missing references) //IL_5138: Unknown result type (might be due to invalid IL or missing references) //IL_513d: Unknown result type (might be due to invalid IL or missing references) //IL_5142: Unknown result type (might be due to invalid IL or missing references) //IL_5147: Unknown result type (might be due to invalid IL or missing references) //IL_5188: Unknown result type (might be due to invalid IL or missing references) //IL_519c: Unknown result type (might be due to invalid IL or missing references) //IL_51b0: Unknown result type (might be due to invalid IL or missing references) //IL_51b5: Unknown result type (might be due to invalid IL or missing references) //IL_51ba: Unknown result type (might be due to invalid IL or missing references) //IL_51bf: Unknown result type (might be due to invalid IL or missing references) //IL_5200: Unknown result type (might be due to invalid IL or missing references) //IL_5214: Unknown result type (might be due to invalid IL or missing references) //IL_5228: Unknown result type (might be due to invalid IL or missing references) //IL_522d: Unknown result type (might be due to invalid IL or missing references) //IL_5232: Unknown result type (might be due to invalid IL or missing references) //IL_5237: Unknown result type (might be due to invalid IL or missing references) //IL_5278: Unknown result type (might be due to invalid IL or missing references) //IL_528c: Unknown result type (might be due to invalid IL or missing references) //IL_52a0: Unknown result type (might be due to invalid IL or missing references) //IL_52a5: Unknown result type (might be due to invalid IL or missing references) //IL_52aa: Unknown result type (might be due to invalid IL or missing references) //IL_52af: Unknown result type (might be due to invalid IL or missing references) //IL_52f0: Unknown result type (might be due to invalid IL or missing references) //IL_5304: Unknown result type (might be due to invalid IL or missing references) //IL_5318: Unknown result type (might be due to invalid IL or missing references) //IL_531d: Unknown result type (might be due to invalid IL or missing references) //IL_5322: Unknown result type (might be due to invalid IL or missing references) //IL_5327: Unknown result type (might be due to invalid IL or missing references) //IL_5368: Unknown result type (might be due to invalid IL or missing references) //IL_537c: Unknown result type (might be due to invalid IL or missing references) //IL_5390: Unknown result type (might be due to invalid IL or missing references) //IL_5395: Unknown result type (might be due to invalid IL or missing references) //IL_539a: Unknown result type (might be due to invalid IL or missing references) //IL_539f: Unknown result type (might be due to invalid IL or missing references) //IL_53e0: Unknown result type (might be due to invalid IL or missing references) //IL_53f4: Unknown result type (might be due to invalid IL or missing references) //IL_5408: Unknown result type (might be due to invalid IL or missing references) //IL_540d: Unknown result type (might be due to invalid IL or missing references) //IL_5412: Unknown result type (might be due to invalid IL or missing references) //IL_5417: Unknown result type (might be due to invalid IL or missing references) //IL_5458: Unknown result type (might be due to invalid IL or missing references) //IL_546c: Unknown result type (might be due to invalid IL or missing references) //IL_5480: Unknown result type (might be due to invalid IL or missing references) //IL_5485: Unknown result type (might be due to invalid IL or missing references) //IL_548a: Unknown result type (might be due to invalid IL or missing references) //IL_548f: Unknown result type (might be due to invalid IL or missing references) itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["AlienHead"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAlienHead"), "Chest", new Vector3(-0.22836f, -0.0607f, 0.02364f), new Vector3(275.4761f, 39.75848f, 230.3732f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ArmorPlate"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayRepulsionArmorPlate"), "Chest", new Vector3(0.04097f, 0.23346f, -0.18211f), new Vector3(270f, 180f, 0f), new Vector3(0.32704f, 0.32704f, 0.32704f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ArmorReductionOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWarhammer"), "Chest", new Vector3(0.21537f, 0.50305f, -0.28929f), new Vector3(307.5285f, 92.8965f, 267.7022f), new Vector3(0.38161f, 0.38161f, 0.38161f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["AttackSpeedAndMoveSpeed"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayCoffee"), "Chest", new Vector3(-0.24289f, 0.01405f, 0.02006f), new Vector3(347.9057f, 8.53998f, 352.3178f), new Vector3(0.15865f, 0.15865f, 0.15865f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["AttackSpeedOnCrit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWolfPelt"), "Head", new Vector3(0f, 0.27047f, 0.06131f), new Vector3(0f, 0f, 0f), new Vector3(0.49893f, 0.49893f, 0.49893f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["AutoCastEquipment"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFossil"), "Chest", new Vector3(-0.28162f, 0.35172f, -0.11873f), new Vector3(0.16693f, 1.06436f, 342.1766f), new Vector3(0.61133f, 0.61133f, 0.61133f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Bandolier"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBandolier"), "Chest", new Vector3(0.00239f, -0.12299f, -0.00737f), new Vector3(270f, 0f, 0f), new Vector3(0.46002f, 0.46002f, 0.46002f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BarrierOnKill"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBrooch"), "Chest", new Vector3(-0.28731f, 0.33665f, -0.12407f), new Vector3(70.78168f, 255.7213f, 346.0124f), new Vector3(0.72337f, 0.72337f, 0.72337f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BarrierOnOverHeal"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAegis"), "Base", new Vector3(0.01287f, 0.30071f, 0.27752f), new Vector3(0f, 0f, 180f), new Vector3(0.32972f, 0.32972f, 0.32972f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Bear"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBear"), "Chest", new Vector3(-0.15314f, 0.5001f, -0.04922f), new Vector3(0.09832f, 359.1789f, 13.65848f), new Vector3(0.15402f, 0.15402f, 0.15402f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BearVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBearVoid"), "Chest", new Vector3(-0.15314f, 0.5001f, -0.04922f), new Vector3(0.09832f, 359.1789f, 13.65848f), new Vector3(0.15402f, 0.15402f, 0.15402f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BeetleGland"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBeetleGland"), "Chest", new Vector3(0.26902f, -0.16111f, 0.00791f), new Vector3(356.2571f, 152.9436f, 311.4961f), new Vector3(0.10258f, 0.10578f, 0.10578f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Behemoth"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBehemoth"), "Gun", new Vector3(-0.00416f, 0.04763f, 0.07932f), new Vector3(0f, 351.7302f, 180f), new Vector3(0.06758f, 0.06758f, 0.06758f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BleedOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTriTip"), "Gun", new Vector3(-0.01933f, 0.22514f, 0.00288f), new Vector3(270.6881f, 0f, 0f), new Vector3(0.41163f, 0.41163f, 0.41163f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BleedOnHitAndExplode"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBleedOnHitAndExplode"), "Chest", new Vector3(-0.16044f, -0.2267f, -0.10126f), new Vector3(334.84f, 1.71427f, 340.8119f), new Vector3(0.10397f, 0.10397f, 0.10397f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BleedOnHitVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTriTipVoid"), "Gun", new Vector3(-0.00155f, -0.01315f, -0.00019f), new Vector3(272.7347f, 292.3364f, 55.18313f), new Vector3(0.38047f, 0.38047f, 0.62126f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BonusGoldPackOnKill"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTome"), "ThighL", new Vector3(0.14704f, 0.17491f, 0.02078f), new Vector3(5.77171f, 73.43825f, 186.8631f), new Vector3(0.0973f, 0.0973f, 0.0973f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BossDamageBonus"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAPRound"), "Chest", new Vector3(-0.01351f, -0.14645f, 0.16207f), new Vector3(90f, 351.3999f, 0f), new Vector3(0.37249f, 0.37249f, 0.37249f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BounceNearby"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayHook"), "Chest", new Vector3(0.19872f, 0.39747f, -0.05928f), new Vector3(0f, 0f, 340.2585f), new Vector3(0.24562f, 0.24562f, 0.24562f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ChainLightning"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayUkulele"), "Chest", new Vector3(-0.0715f, 0.22055f, -0.34052f), new Vector3(0.02289f, 186.5719f, 35.4724f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ChainLightningVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayUkuleleVoid"), "Chest", new Vector3(-0.0715f, 0.22055f, -0.34052f), new Vector3(0.02289f, 186.5719f, 35.4724f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Clover"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayClover"), "Chest", new Vector3(0.01866f, 0.82636f, 0.04321f), new Vector3(0f, 0f, 0f), new Vector3(0.78719f, 0.78719f, 0.78719f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["CloverVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayCloverVoid"), "Chest", new Vector3(0f, 0.81989f, 0.04976f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["CooldownOnCrit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySkull"), "Finger42R", new Vector3(0.02337f, -0.01204f, 0.00126f), new Vector3(52.80724f, 88.56924f, 2.5003f), new Vector3(0.04065f, 0.04065f, 0.04065f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["CritDamage"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayLaserSight"), "Gun", new Vector3(-0.00402f, 0.13794f, 0.10269f), new Vector3(2.13648f, 267.8749f, 270.4373f), new Vector3(0.08767f, 0.08767f, 0.08767f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["CritGlasses"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGlasses"), "Head", new Vector3(0f, 0.23573f, 0.17499f), new Vector3(0f, 0f, 0f), new Vector3(0.23784f, 0.23784f, 0.23784f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["CritGlassesVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGlassesVoid"), "Head", new Vector3(0f, 0.23573f, 0.17499f), new Vector3(0f, 0f, 0f), new Vector3(0.23784f, 0.23784f, 0.23784f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Crowbar"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayCrowbar"), "Chest", new Vector3(-0.03712f, -5E-05f, -0.23938f), new Vector3(0f, 0f, 326.3258f), new Vector3(0.50935f, 0.50935f, 0.50935f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Dagger"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDagger"), "UpperArmR", new Vector3(0.06125f, -0.10136f, 0.01567f), new Vector3(354.5378f, 303.1844f, 145.2471f), new Vector3(0.91742f, 0.91742f, 0.91742f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["DeathMark"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDeathMark"), "Head", new Vector3(0f, 0.27984f, 0.05198f), new Vector3(275.0362f, 0.00022f, -0.00022f), new Vector3(0.0837f, 0.0837f, 0.08f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ElementalRingVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayVoidRing"), "HandR", new Vector3(0.0082f, 0.00239f, 0.00011f), new Vector3(282.1854f, 270.6395f, 170.7254f), new Vector3(0.54468f, 0.54468f, 0.54468f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EmpowerAlways"], ItemDisplays.CreateLimbMaskDisplayRule((LimbFlags)1), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySunHeadNeck"), "Chest", new Vector3(0f, 0.40649f, 0.02492f), new Vector3(23.3864f, 22.63947f, 12.33223f), new Vector3(1f, 1f, 1f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySunHead"), "Chest", new Vector3(-0.28531f, -0.16089f, 0.01824f), new Vector3(0f, 0f, 0f), new Vector3(0.788f, 0.788f, 0.788f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EnergizedOnEquipmentUse"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWarHorn"), "Head", new Vector3(0.10626f, 0.09779f, 0.27158f), new Vector3(2.48558f, 315.6647f, 1.04667f), new Vector3(0.25889f, 0.25889f, 0.25889f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EquipmentMagazine"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBattery"), "Chest", new Vector3(0.06608f, -0.11833f, 0.13534f), new Vector3(78.29298f, 19.26927f, 54.05775f), new Vector3(0.07648f, 0.07648f, 0.07648f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EquipmentMagazineVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFuelCellVoid"), "Chest", new Vector3(0.06608f, -0.11833f, 0.13534f), new Vector3(78.29298f, 19.26927f, 54.05775f), new Vector3(0.07648f, 0.07648f, 0.07648f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ExecuteLowHealthElite"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGuillotine"), "ThighL", new Vector3(0.14302f, 0.11044f, 0.01145f), new Vector3(78.28942f, 217.458f, 324.143f), new Vector3(0.23425f, 0.23425f, 0.23425f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ExplodeOnDeath"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWilloWisp"), "Chest", new Vector3(0.27888f, -0.1854f, 0.00737f), new Vector3(2.85769f, 359.4591f, 11.87494f), new Vector3(0.10542f, 0.10542f, 0.10542f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ExplodeOnDeathVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWillowWispVoid"), "Chest", new Vector3(0.2714f, -0.14995f, 0.00907f), new Vector3(2.85769f, 359.459f, 11.87494f), new Vector3(0.11938f, 0.11938f, 0.11938f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ExtraLife"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayHippo"), "Chest", new Vector3(-0.22058f, 0.45386f, -0.05491f), new Vector3(349.3331f, 337.7769f, 10.13284f), new Vector3(0.1464f, 0.1464f, 0.1464f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ExtraLifeVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayHippoVoid"), "Chest", new Vector3(-0.18824f, 0.45137f, -0.11074f), new Vector3(346.1329f, 270.6207f, 7.90792f), new Vector3(0.15503f, 0.15503f, 0.15503f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["FallBoots"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGravBoots"), "FootL", new Vector3(0.00169f, -0.01231f, 0.03811f), new Vector3(60.92217f, 179.3294f, 357.576f), new Vector3(0.19788f, 0.19788f, 0.19788f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGravBoots"), "FootR", new Vector3(0.00169f, -0.01231f, 0.03811f), new Vector3(60.92215f, 179.3294f, 357.576f), new Vector3(0.19788f, 0.19788f, 0.19788f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Feather"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFeather"), "Chest", new Vector3(0f, -0.20114f, 0.00407f), new Vector3(294.8356f, 203.3323f, 180.8631f), new Vector3(0.06371f, 0.06371f, 0.06371f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["FireRing"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFireRing"), "HandR", new Vector3(0.0082f, 0.00239f, 0.00011f), new Vector3(282.1854f, 270.6395f, 170.7254f), new Vector3(0.54468f, 0.54468f, 0.54468f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["FireballsOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFireballsOnHit"), "Gun", new Vector3(-6E-05f, 0.34057f, 0.11171f), new Vector3(270f, 180f, 0f), new Vector3(0.07659f, 0.07659f, 0.07659f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Firework"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFirework"), "Chest", new Vector3(0.11208f, -0.13512f, 0.10882f), new Vector3(283.2318f, 212.4988f, 118.4696f), new Vector3(0.18998f, 0.18998f, 0.18998f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["FlatHealth"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySteakCurved"), "Chest", new Vector3(-0.19051f, -0.0172f, 0.11292f), new Vector3(346.0077f, 297.5741f, 84.91856f), new Vector3(0.08683f, 0.08683f, 0.08683f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["FocusConvergence"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFocusedConvergence"), "Chest", new Vector3(-0.43774f, 0.42938f, -0.10831f), new Vector3(0f, 0f, 0f), new Vector3(0.06349f, 0.06349f, 0.06349f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["FragileDamageBonus"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDelicateWatch"), "HandR", new Vector3(0f, 1E-05f, -0.00383f), new Vector3(90f, 270f, 0f), new Vector3(0.34198f, 0.5758f, 0.32066f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["FreeChest"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayShippingRequestForm"), "ThighL", new Vector3(0.18999f, 0.1918f, 0.03936f), new Vector3(279.9932f, 19.45694f, 232.4752f), new Vector3(0.62927f, 0.62927f, 0.62927f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["GhostOnKill"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMask"), "Head", new Vector3(0.00161f, 0.22703f, 0.11234f), new Vector3(0f, 0f, 0f), new Vector3(0.78024f, 0.78024f, 0.78024f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["GoldOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBoneCrown"), "Head", new Vector3(0.0017f, 0.24946f, 0.07578f), new Vector3(8.59304f, 0f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["GoldOnHurt"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayRollOfPennies"), "Chest", new Vector3(-0.11694f, -0.13282f, 0.13604f), new Vector3(0f, 0f, 0f), new Vector3(0.34955f, 0.34955f, 0.34955f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["HalfAttackSpeedHalfCooldowns"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayLunarShoulderNature"), "UpperArmR", new Vector3(0.00676f, 0.03388f, 0.01492f), new Vector3(354.5445f, 103.0057f, 221.2348f), new Vector3(0.69622f, 0.69622f, 0.69622f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["HalfSpeedDoubleHealth"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayLunarShoulderStone"), "UpperArmL", new Vector3(-0.029f, 0.01144f, -0.01382f), new Vector3(6.77242f, 62.84494f, 203.6213f), new Vector3(0.69622f, 0.69622f, 0.69622f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["HeadHunter"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySkullcrown"), "Head", new Vector3(0f, 0.29472f, 0.05169f), new Vector3(0f, 0f, 0f), new Vector3(0.45493f, 0.2365f, 0.09086f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["HealOnCrit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayScythe"), "Gun", new Vector3(-0.01428f, 0.18089f, 0.0242f), new Vector3(85.7634f, 0f, 270f), new Vector3(0.38442f, 0.38442f, 0.38442f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["HealWhileSafe"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySnail"), "Chest", new Vector3(-0.20324f, -0.14697f, 0.1256f), new Vector3(7.24479f, 129.7015f, 6.88009f), new Vector3(0.05975f, 0.05975f, 0.05975f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["HealingPotion"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayHealingPotion"), "Chest", new Vector3(0.23457f, -0.03661f, -0.11816f), new Vector3(16.88081f, 0f, 7.98853f), new Vector3(0.05569f, 0.05569f, 0.05569f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Hoof"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayHoof"), "CalfR", new Vector3(-0.01794f, 0.34936f, -0.05554f), new Vector3(78.87335f, 9.84849f, 340.4441f), new Vector3(0.07894f, 0.07894f, 0.07894f)), ItemDisplays.CreateLimbMaskDisplayRule((LimbFlags)8))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["IceRing"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayIceRing"), "HandL", new Vector3(0.0082f, 0.00239f, 0.00011f), new Vector3(282.1852f, 270.6395f, 170.725f), new Vector3(0.54468f, 0.54468f, 0.54468f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Icicle"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFrostRelic"), "Chest", new Vector3(0.32419f, 0.45696f, -0.0838f), new Vector3(62.26155f, 80.99998f, 180f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["IgniteOnKill"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGasoline"), "Chest", new Vector3(-0.03808f, 0.15311f, -0.24884f), new Vector3(270.3f, 270f, 180f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ImmuneToDebuff"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayRainCoatBelt"), "Chest", new Vector3(-0.03061f, -0.2341f, -1E-05f), new Vector3(0f, 0f, 0f), new Vector3(1.32459f, 1.32459f, 1.32459f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["IncreaseHealing"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAntler"), "Head", new Vector3(-0.07838f, 0.31546f, 0.068f), new Vector3(0f, 90f, 180f), new Vector3(-0.33047f, -0.33047f, -0.33047f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAntler"), "Head", new Vector3(0.07838f, 0.31552f, 0.068f), new Vector3(0f, 90f, 0f), new Vector3(0.33047f, 0.33047f, 0.33047f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Incubator"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAncestralIncubator"), "Chest", new Vector3(0.31286f, -0.28976f, 0f), new Vector3(0f, 0f, 13.79489f), new Vector3(0.03338f, 0.03338f, 0.03338f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Infusion"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayInfusion"), "Chest", new Vector3(-0.05905f, 0.23041f, 0.1367f), new Vector3(0f, 353.612f, 0f), new Vector3(0.27402f, 0.27402f, 0.27402f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["JumpBoost"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWaxBird"), "Head", new Vector3(0f, -0.21772f, 0f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["KillEliteFrenzy"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBrainstalk"), "Head", new Vector3(0f, 0.19609f, 1E-05f), new Vector3(0f, 0f, 0f), new Vector3(0.3178f, 0.42325f, 0.3178f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Knurl"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayKnurl"), "Chest", new Vector3(0.25657f, -0.14036f, 0.00563f), new Vector3(274.7333f, -2E-05f, 349.4195f), new Vector3(0.08402f, 0.08402f, 0.08402f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LaserTurbine"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayLaserTurbine"), "UpperArmL", new Vector3(-0.0155f, 0.02429f, -0.05585f), new Vector3(351.0468f, 348.7645f, 354.0932f), new Vector3(0.28394f, 0.28394f, 0.28394f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LightningStrikeOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayChargedPerforator"), "Gun", new Vector3(0f, 0.277f, 0.09152f), new Vector3(-1E-05f, 1E-05f, 180f), new Vector3(1.39348f, 1.39348f, 1.39348f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LunarDagger"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayLunarDagger"), "HandR", new Vector3(0.03414f, 0.08954f, -0.04024f), new Vector3(48.57396f, 179.2072f, 284.3542f), new Vector3(0.58518f, 0.58518f, 0.58518f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LunarPrimaryReplacement"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBirdEye"), "Head", new Vector3(-0.06836f, 0.2429f, 0.15176f), new Vector3(276.1996f, 353.8826f, 6.7643f), new Vector3(0.13369f, 0.13369f, 0.13369f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LunarSecondaryReplacement"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBirdClaw"), "Chest", new Vector3(-0.19486f, 0.44745f, -0.16692f), new Vector3(3.02249f, 300.4318f, 14.50103f), new Vector3(0.59643f, 0.59643f, 0.59643f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LunarSpecialReplacement"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBirdHeart"), "Chest", new Vector3(0.28593f, -0.15073f, 0.03255f), new Vector3(329.3064f, 0f, -1E-05f), new Vector3(0.2171f, 0.2171f, 0.2171f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LunarTrinket"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBeads"), "HandL", new Vector3(-0.01284f, 0.02157f, 0.00697f), new Vector3(345.1651f, 346.1463f, 257.587f), new Vector3(0.75225f, 0.75225f, 0.75225f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LunarUtilityReplacement"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBirdFoot"), "CalfL", new Vector3(0.03068f, -0.10339f, -0.14674f), new Vector3(355.1452f, 81.06728f, 178.9519f), new Vector3(0.5531f, 0.5531f, 0.5531f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Medkit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMedkit"), "Chest", new Vector3(-0.01602f, -0.10701f, -0.23254f), new Vector3(271.952f, 99.71703f, 80.27746f), new Vector3(0.85179f, 0.85179f, 0.85179f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["MinorConstructOnKill"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDefenseNucleus"), "Chest", new Vector3(-0.5381f, -0.17721f, 0.01895f), new Vector3(0f, 270f, 0f), new Vector3(0.38849f, 0.38849f, 0.38849f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Missile"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMissileLauncher"), "Chest", new Vector3(0.31562f, 0.65102f, -0.07466f), new Vector3(0f, 0f, 329.4084f), new Vector3(0.0861f, 0.0861f, 0.0861f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["MissileVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMissileLauncherVoid"), "Chest", new Vector3(0.31562f, 0.65102f, -0.07466f), new Vector3(0f, 0f, 329.4084f), new Vector3(0.0861f, 0.0861f, 0.0861f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["MonstersOnShrineUse"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMonstersOnShrineUse"), "Chest", new Vector3(0.0814f, 0.22734f, 0.12036f), new Vector3(51.67438f, 112.4063f, 359.5639f), new Vector3(0.05146f, 0.05146f, 0.05146f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["MoreMissile"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayICBM"), "Chest", new Vector3(0.28669f, 0.60376f, 0.16045f), new Vector3(0f, 90f, 90f), new Vector3(0.09915f, 0.09915f, 0.09915f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["MoveSpeedOnKill"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGrappleHook"), "Base", new Vector3(0.25968f, 0.00197f, -0.13753f), new Vector3(289.068f, 58.73866f, 98.66002f), new Vector3(0.23818f, 0.23818f, 0.23818f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Mushroom"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMushroom"), "Chest", new Vector3(-0.14549f, -0.00755f, 0.12128f), new Vector3(359.4753f, 45.76885f, 34.50196f), new Vector3(0.03679f, 0.03679f, 0.03679f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["MushroomVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMushroomVoid"), "Chest", new Vector3(-0.14549f, -0.00755f, 0.12128f), new Vector3(359.4753f, 45.76885f, 34.50196f), new Vector3(0.03679f, 0.03679f, 0.03679f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["NearbyDamageBonus"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDiamond"), "Chest", new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["NovaOnHeal"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDevilHorns"), "Head", new Vector3(0f, 0.25221f, 0f), new Vector3(90f, 180f, 0f), new Vector3(-1f, -1f, -1f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDevilHorns"), "Head", new Vector3(0f, 0.25221f, 0f), new Vector3(270f, 180f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["NovaOnLowHealth"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayJellyGuts"), "UpperArmL", new Vector3(-0.03174f, 0.01256f, -0.01002f), new Vector3(7.43732f, 26.7055f, 7.51749f), new Vector3(0.12972f, 0.12972f, 0.12972f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["OutOfCombatArmor"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayOddlyShapedOpal"), "Base", new Vector3(0.3029f, 0.0034f, -0.28644f), new Vector3(3.40159f, 245.6042f, 270.0852f), new Vector3(0.44379f, 0.44379f, 0.44379f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ParentEgg"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayParentEgg"), "Chest", new Vector3(0.32548f, -0.21432f, 0.03154f), new Vector3(0f, 0f, 10.80585f), new Vector3(0.06853f, 0.06853f, 0.06853f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Pearl"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayPearl"), "Chest", new Vector3(0f, 0f, 0f), new Vector3(90f, 0f, 0f), new Vector3(0.30283f, 0.30283f, 0.30283f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["PermanentDebuffOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayScorpion"), "UpperArmR", new Vector3(0f, 0f, 0f), new Vector3(316.3237f, 39.42264f, 94.26131f), new Vector3(0.7299f, 0.7299f, 0.7299f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["PersonalShield"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayShieldGenerator"), "ThighR", new Vector3(0.02663f, 0.26137f, 0.04122f), new Vector3(273.0673f, 227.1822f, 161.4063f), new Vector3(0.19646f, 0.19646f, 0.19646f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Phasing"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayStealthkit"), "HandR", new Vector3(-0.02613f, -0.05109f, 4E-05f), new Vector3(283.0133f, 270.1691f, -8E-05f), new Vector3(0.14103f, 0.16558f, 0.13319f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Plant"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayInterstellarDeskPlant"), "Head", new Vector3(0f, 0.38934f, 0.09732f), new Vector3(270f, 0f, 0f), new Vector3(0.07318f, 0.07318f, 0.07318f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["PrimarySkillShuriken"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayShuriken"), "Chest", new Vector3(0f, 0.24774f, -0.29413f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["RandomDamageZone"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayRandomDamageZone"), "Chest", new Vector3(0f, 0.23193f, -0.23779f), new Vector3(0f, 0f, 0f), new Vector3(0.14503f, 0.14503f, 0.14503f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["RandomEquipmentTrigger"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBottledChaos"), "Base", new Vector3(0.25024f, 0.11146f, -0.14331f), new Vector3(349.7761f, 81.03706f, 91.60354f), new Vector3(0.22944f, 0.22944f, 0.22944f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["RandomlyLunar"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDomino"), "Chest", new Vector3(-0.81269f, 0.52026f, -0.13413f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["RegeneratingScrap"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayRegeneratingScrap"), "Base", new Vector3(-0.39015f, 0.21397f, 0.00993f), new Vector3(356.7812f, 276.3944f, 265.1483f), new Vector3(0.21911f, 0.21911f, 0.21911f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["RepeatHeal"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayCorpseflower"), "Chest", new Vector3(-0.27556f, -0.13433f, -0.01425f), new Vector3(54.54063f, 5.57165f, 64.82538f), new Vector3(0.44177f, 0.44177f, 0.44177f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SecondarySkillMagazine"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDoubleMag"), "Gun", new Vector3(0f, 0.21663f, 0.01896f), new Vector3(270f, 180f, 0f), new Vector3(0.03565f, 0.03565f, 0.03565f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Seed"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySeed"), "Chest", new Vector3(-0.15906f, -0.0129f, 0.1785f), new Vector3(335.8303f, 287.7627f, 12.86907f), new Vector3(0.04447f, 0.04447f, 0.04447f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ShieldOnly"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayShieldBug"), "Head", new Vector3(-0.07012f, 0.3751f, 0.07925f), new Vector3(-1E-05f, 270f, 180f), new Vector3(-0.2f, -0.2f, -0.2f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayShieldBug"), "Head", new Vector3(0.07012f, 0.37511f, 0.07911f), new Vector3(0f, 270f, 0f), new Vector3(0.2f, 0.2f, 0.2f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ShinyPearl"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayShinyPearl"), "Chest", new Vector3(0f, 0f, 0f), new Vector3(90f, 0f, 0f), new Vector3(0.30283f, 0.30283f, 0.30283f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ShockNearby"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTeslaCoil"), "Chest", new Vector3(0f, 0.28457f, -0.19648f), new Vector3(270f, 0f, 0f), new Vector3(0.53835f, 0.53835f, 0.53835f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SiphonOnLowHealth"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySiphonOnLowHealth"), "Base", new Vector3(0.29801f, 0.15162f, -0.32532f), new Vector3(334.8931f, 90.00002f, 89.99997f), new Vector3(0.09927f, 0.09927f, 0.09927f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SlowOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBauble"), "Chest", new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SlowOnHitVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBaubleVoid"), "Chest", new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SprintArmor"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBuckler"), "LowerArmL", new Vector3(-0.00246f, 0.06145f, 0.00224f), new Vector3(0f, 272.9158f, 0f), new Vector3(0.17913f, 0.17913f, 0.22066f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SprintBonus"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySoda"), "Base", new Vector3(-0.23992f, 0.00851f, 0.13479f), new Vector3(0f, 19.63885f, 0f), new Vector3(0.28406f, 0.28406f, 0.28406f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SprintOutOfCombat"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWhip"), "ThighL", new Vector3(0.10968f, 0.16505f, 0.01777f), new Vector3(0f, 155.2993f, 182.6342f), new Vector3(0.49425f, 0.49425f, 0.49425f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["SprintWisp"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBrokenMask"), "UpperArmL", new Vector3(-0.00752f, -0.02743f, -0.00199f), new Vector3(3.7307f, 151.9851f, 195.2243f), new Vector3(0.18229f, 0.18229f, 0.18229f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Squid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySquidTurret"), "Chest", new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["StickyBomb"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayStickyBomb"), "Chest", new Vector3(0.04208f, -0.22255f, 0.14066f), new Vector3(6.83458f, 6.25651f, 181.4485f), new Vector3(0.21205f, 0.21205f, 0.21205f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["StrengthenBurn"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGasTank"), "Chest", new Vector3(-0.16429f, 0.28743f, -0.23413f), new Vector3(0f, 0f, 0f), new Vector3(0.25374f, 0.25374f, 0.25374f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["StunChanceOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayStunGrenade"), "Base", new Vector3(-0.01112f, -0.14963f, 0.02578f), new Vector3(0f, 0f, 0f), new Vector3(0.4014f, 0.4014f, 0.4014f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Syringe"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySyringeCluster"), "UpperArmR", new Vector3(0.0175f, -0.01663f, 0.03199f), new Vector3(332.2023f, 180f, 180f), new Vector3(0.21584f, 0.21584f, 0.21584f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["TPHealingNova"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGlowFlower"), "Chest", new Vector3(0.0752f, 0.30443f, 0.11042f), new Vector3(340.2215f, 0f, 0f), new Vector3(0.15092f, 0.15092f, 0.15092f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Talisman"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTalisman"), "Chest", new Vector3(0.93072f, 0.16602f, 0.0963f), new Vector3(0f, 0f, 0f), new Vector3(0.97727f, 0.97727f, 0.97727f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Thorns"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayRazorwireLeft"), "Chest", new Vector3(2f, 2f, 2f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["TitanGoldDuringTP"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGoldHeart"), "Base", new Vector3(0.31111f, -0.02173f, -4E-05f), new Vector3(0f, 90f, 0f), new Vector3(0.18704f, 0.18704f, 0.18704f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Tooth"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayToothNecklaceDecal"), "Chest", new Vector3(0f, 0.45338f, 0f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayToothMeshLarge"), "Chest", new Vector3(0f, 0.29659f, 0.16196f), new Vector3(0f, 0f, 0f), new Vector3(2f, 2f, 2f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayToothMeshSmall1"), "Chest", new Vector3(0.04753f, 0.32086f, 0.13925f), new Vector3(0f, 0f, 47.25098f), new Vector3(1f, 1f, 1f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayToothMeshSmall2"), "Chest", new Vector3(-0.04753f, 0.32086f, 0.13925f), new Vector3(0f, 0f, 312.749f), new Vector3(1f, 1f, 1f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayToothMeshSmall2"), "Chest", new Vector3(-0.08835f, 0.35908f, 0.11049f), new Vector3(355.488f, 336.5051f, 311.2128f), new Vector3(1f, 1f, 1f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayToothMeshSmall1"), "Chest", new Vector3(0.08835f, 0.35908f, 0.11049f), new Vector3(333.3396f, 25.68828f, 43.92077f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["TreasureCache"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayKey"), "Base", new Vector3(7f / 160f, -0.14263f, 0.019f), new Vector3(14.68406f, 268.1919f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["TreasureCacheVoid"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayKeyVoid"), "Base", new Vector3(7f / 160f, -0.14263f, 0.019f), new Vector3(14.68406f, 268.1919f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["UtilitySkillMagazine"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAfterburnerShoulderRing"), "UpperArmL", new Vector3(0f, 0f, 0f), new Vector3(41.31011f, 125.3208f, 81.3366f), new Vector3(1f, 1f, 1f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAfterburnerShoulderRing"), "UpperArmR", new Vector3(0f, 0f, 0f), new Vector3(41.31012f, 234.6792f, 278.6634f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["VoidMegaCrabItem"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMegaCrabItem"), "ThighL", new Vector3(0.06351f, 0.14294f, 0.01091f), new Vector3(0f, 90f, 90f), new Vector3(0.14306f, 0.14306f, 0.14306f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["WarCryOnMultiKill"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayPauldron"), "UpperArmL", new Vector3(-0.029f, 0.011f, -0.01382f), new Vector3(79.56982f, 276.2222f, 124.705f), new Vector3(0.69f, 0.69f, 0.69f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["WardOnLevel"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWarbanner"), "Chest", new Vector3(0f, 0.4059f, -0.17063f), new Vector3(270f, 270f, 0f), new Vector3(0.45863f, 0.45863f, 0.45863f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BFG"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBFG"), "Chest", new Vector3(0.25664f, 0.43825f, -0.07175f), new Vector3(4.42367f, 0.98583f, 293.2273f), new Vector3(0.29733f, 0.29733f, 0.29733f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Blackhole"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGravCube"), "Base", new Vector3(1.09716f, 0.35362f, 1.10406f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BossHunter"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTricornGhost"), "Head", new Vector3(0f, 0.47715f, 1E-05f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBlunderbuss"), "Base", new Vector3(0.82867f, 0.46427f, 0.7149f), new Vector3(-1E-05f, 180f, 180f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BossHunterConsumed"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTricornUsed"), "Head", new Vector3(0f, 0.47715f, 1E-05f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["BurnNearby"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayPotion"), "Base", new Vector3(0.1436f, 0.21409f, -0.01811f), new Vector3(330.4779f, 83.02779f, 75.05534f), new Vector3(0.05f, 0.05f, 0.05f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Cleanse"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayWaterPack"), "Chest", new Vector3(0f, -0.46747f, 0.10289f), new Vector3(0f, 0f, 0f), new Vector3(0.14409f, 0.14409f, 0.14409f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["CommandMissile"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMissileRack"), "Chest", new Vector3(-0.00286f, 0.36246f, -0.20178f), new Vector3(90f, 174.2094f, 0f), new Vector3(0.5f, 0.5f, 0.5f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["CrippleWard"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEffigy"), "Head", new Vector3(0.00488f, 0.38396f, 0.01933f), new Vector3(0f, 180f, 0f), new Vector3(0.55447f, 0.55447f, 0.55447f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["CritOnUse"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayNeuralImplant"), "Head", new Vector3(0f, 0.20967f, 0.37532f), new Vector3(0f, 0f, 0f), new Vector3(0.43383f, 0.43383f, 0.43383f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["DeathProjectile"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayDeathProjectile"), "Chest", new Vector3(-0.18455f, 0.3f, 0.13112f), new Vector3(337.85f, 322.8569f, 0f), new Vector3(0.08076f, 0.08076f, 0.08076f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["DroneBackup"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayRadio"), "Chest", new Vector3(0.0489f, 0.24141f, 0.15258f), new Vector3(0f, 180f, 180f), new Vector3(-0.28899f, -0.28899f, -0.28899f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EliteEarthEquipment"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEliteMendingAntlers"), "Head", new Vector3(0f, 0.33928f, 0.09633f), new Vector3(0f, 0f, 0f), new Vector3(0.6377f, 0.6377f, 0.6377f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EliteFireEquipment"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEliteHorn"), "Head", new Vector3(-0.07218f, 0.31161f, 0.10695f), new Vector3(0f, 180f, 180f), new Vector3(-0.06753f, -0.06753f, -0.06753f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEliteHorn"), "Head", new Vector3(0.07218f, 0.31161f, 0.10695f), new Vector3(0f, 0f, 0f), new Vector3(0.06753f, 0.06753f, 0.06753f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EliteHauntedEquipment"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEliteStealthCrown"), "Head", new Vector3(0f, 0.30512f, -0.00019f), new Vector3(90f, 180f, 0f), new Vector3(0.04245f, 0.04245f, 0.04245f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EliteIceEquipment"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEliteIceCrown"), "Head", new Vector3(0f, 0.43621f, -8E-05f), new Vector3(270f, 0f, 0f), new Vector3(0.02854f, 0.02854f, 0.02854f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EliteLightningEquipment"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEliteRhinoHorn"), "Head", new Vector3(-0.07f, 0.29271f, 0.12919f), new Vector3(39.97074f, 129.2507f, 141.8243f), new Vector3(-0.1288f, -0.1288f, -0.1288f)), ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEliteRhinoHorn"), "Head", new Vector3(0.07f, 0.29271f, 0.12919f), new Vector3(39.00001f, 230.7493f, 218.1757f), new Vector3(-0.1288f, -0.1288f, -0.1288f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EliteLunarEquipment"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEliteLunar,Eye"), "Head", new Vector3(0f, 0.20738f, 0.34874f), new Vector3(0f, 0f, 0f), new Vector3(0.16167f, 0.16167f, 0.16167f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["ElitePoisonEquipment"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEliteUrchinCrown"), "Head", new Vector3(0f, 0.21301f, -0.00014f), new Vector3(0f, 0f, 0f), new Vector3(0.04485f, 0.04485f, 0.04485f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["EliteVoidEquipment"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayAffixVoid"), "Head", new Vector3(0f, 0.27148f, 0.00026f), new Vector3(0f, 180f, 0f), new Vector3(0.2234f, 0.2234f, 0.2234f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["FireBallDash"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayEgg"), "Chest", new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Fruit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayFruit"), "Base", new Vector3(-0.10174f, 0.13266f, 0.09001f), new Vector3(82.19051f, 0f, 0f), new Vector3(0.3509f, 0.3509f, 0.3509f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["GainArmor"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayElephantFigure"), "Chest", new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Gateway"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayVase"), "HandL", new Vector3(-0.04156f, 7E-05f, -0.11241f), new Vector3(90f, 180f, 0f), new Vector3(0.22015f, 0.22015f, 0.22015f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["GoldGat"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGoldGat"), "Chest", new Vector3(0.16136f, 0.45423f, -0.07928f), new Vector3(8.46069f, 115.0343f, 326.7957f), new Vector3(0.06569f, 0.06569f, 0.06569f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["GummyClone"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayGummyClone"), "LowerArmL", new Vector3(-0.00062f, 0.20584f, 0.02179f), new Vector3(13.64345f, 125.9495f, 0f), new Vector3(0.20012f, 0.20012f, 0.20012f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["IrradiatingLaser"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayIrradiatingLaser"), "Chest", new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Jetpack"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBugWings"), "Chest", new Vector3(0f, 0.20217f, -0.18699f), new Vector3(0f, 0f, 0f), new Vector3(0.14742f, 0.14742f, 0.14742f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LifestealOnHit"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayLifestealOnHit"), "UpperArmL", new Vector3(-0.03001f, 0.20213f, -0.12175f), new Vector3(0f, 0f, 0f), new Vector3(0.07137f, 0.07137f, 0.07137f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Lightning"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayLightningArmRight"), "Chest", new Vector3(2f, 2f, 2f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)), ItemDisplays.CreateLimbMaskDisplayRule((LimbFlags)2))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["LunarPortalOnUse"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayLunarPortalOnUse"), "Chest", new Vector3(0.65876f, 0.40515f, -0.22782f), new Vector3(0f, 0f, 0f), new Vector3(1f, 1f, 1f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Meteor"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMeteor"), "Base", new Vector3(-0.74222f, 0.26422f, 0.45832f), new Vector3(0f, 0f, 0f), new Vector3(0.68939f, 0.68939f, 0.68939f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Molotov"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayMolotov"), "Chest", new Vector3(-0.09988f, -0.22047f, 0.13965f), new Vector3(348.619f, 347.4249f, 2.52046f), new Vector3(0.20169f, 0.20169f, 0.20169f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["MultiShopCard"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayExecutiveCard"), "Chest", new Vector3(-0.06847f, -0.08431f, 0.12512f), new Vector3(357.4704f, 73.80464f, 104.9206f), new Vector3(0.50539f, 0.50539f, 0.50539f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["QuestVolatileBattery"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayBatteryArray"), "Base", new Vector3(0f, 0.2767f, 0.39491f), new Vector3(270f, 1E-05f, 0f), new Vector3(0.23905f, 0.23905f, 0.23905f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Recycle"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayRecycler"), "Base", new Vector3(0.002f, 0.19563f, 0.05182f), new Vector3(0.57862f, 90.02995f, 92.96487f), new Vector3(0.06948f, 0.06948f, 0.06948f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Saw"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplaySawmerangFollower"), "Base", new Vector3(0.65491f, 0.40074f, 0.48852f), new Vector3(0f, 0f, 0f), new Vector3(0.09081f, 0.09081f, 0.09081f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Scanner"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayScanner"), "UpperArmL", new Vector3(0.00981f, 0.17733f, -0.02008f), new Vector3(30.14785f, 154.6489f, 270f), new Vector3(0.22813f, 0.22813f, 0.22813f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["TeamWarCry"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTeamWarCry"), "Base", new Vector3(0.00149f, 0.24417f, 0.11363f), new Vector3(270f, 180.7489f, 0f), new Vector3(0.06962f, 0.06962f, 0.06962f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["Tonic"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayTonic"), "Base", new Vector3(0.0809f, -0.11534f, -0.04564f), new Vector3(63.87238f, 62.57079f, 59.96919f), new Vector3(0.31909f, 0.31909f, 0.31909f)))); itemDisplayRules.Add(ItemDisplays.CreateDisplayRuleGroupWithRules(ItemDisplays.KeyAssets["VendingMachine"], ItemDisplays.CreateDisplayRule(ItemDisplays.LoadDisplay("DisplayVendingMachine"), "Gun", new Vector3(0f, 0.43159f, 1E-05f), new Vector3(0f, 0f, 0f), new Vector3(0.42555f, 0.42555f, 0.42555f)))); } } public static class SeamstressVariantStates { public static void Init() { Content.AddEntityState(typeof(SeamstressSpawnState)); Content.AddEntityState(typeof(ClawCombo)); Content.AddEntityState(typeof(Blink)); Content.AddEntityState(typeof(DefiantHeart)); Content.AddEntityState(typeof(HealingHeart)); Content.AddEntityState(typeof(FireScissors)); } } public static class SeamstressVariantStaticValues { public const float clawDamageCoefficient = 1f; public const float meleeScissorDamageCoefficient = 1.5f; public const float scissorImpactDamageCoefficient = 1.5f; public const float scissorExplosionDamageCoefficient = 4f; public const float dashDamageCoefficient = 4f; public const float explodeRadius = 20f; } public static class SeamstressVariantTokens { public static void Init() { AddSeamstressVariantTokens(); } public static void AddSeamstressVariantTokens() { string text = "LEVINTER_SEAMSTRESS_"; string text2 = "Seamstress Variant is a hyper scaler that uses her health as a resource to fuel her damage and defiance." + Environment.NewLine + Environment.NewLine + "< ! > Her claw attack is pretty weak, managing her scissors for increased damage is key." + Environment.NewLine + Environment.NewLine + "< ! > Stacking health is your priority, the more health, the more bleed chance, the more bleed chance the more healing." + Environment.NewLine + Environment.NewLine + "< ! > Blink as no cooldown, but it costs health" + Environment.NewLine + Environment.NewLine + "< ! > With enough resources you can maintain Defiant Heart for extenced periods of time, allowing you to tank almost everything." + Environment.NewLine + Environment.NewLine; string text3 = "..and so she left, her heart still beating."; string text4 = "..and so she vanished, a silent heart, finally at rest."; Language.Add(text + "NAME", "Seamstress Variant"); Language.Add(text + "DESCRIPTION", text2); Language.Add(text + "SUBTITLE", "The Tattered Maiden"); Language.Add(text + "LORE", "sample lore"); Language.Add(text + "OUTRO_FLAVOR", text3); Language.Add(text + "OUTRO_FAILURE", text4); Language.Add(text + "MASTERY_SKIN_NAME", "Alternate"); Language.Add(text + "PASSIVE_NAME", "Bleeding Heart"); Language.Add(text + "PASSIVE_DESCRIPTION", "Nearby Bleeding heals you for 5 health per second, per stack. All healing is stored in your Heart."); Language.Add("KEYWORD_HEART_HEMORRHAGE", "HeartCapacity is equal to your maximum health. Grants 1% hemorrhage chance per 50 health stored in the Heart (Can overcap).\n\nHemorrhageDeals 2000% base damage over 15 seconds."); Language.Add(text + "PRIMARY_SLASH_NAME", "Claw Slash"); Language.Add(text + "PRIMARY_SLASH_DESCRIPTION", "Agile." + $" Strike with your claws for {100f}% damage."); Language.Add(text + "SECONDARY_SCISSORS_NAME", "Symbiotic Scissors"); Language.Add(text + "SECONDARY_SCISSORS_DESCRIPTION", $"Command your scissors to seek out a nearby enemy and strike them, exploding for {400f}% damage and applying Bleed."); Language.Add("KEYWORD_SYMBIOTIC", $"SymbioticWhile off cooldown, your scissors follow you and cause claw attacks to hit an additional time with increased range for {150f}% damage."); Language.Add(text + "UTILITY_BLINK_NAME", "Blink"); Language.Add(text + "UTILITY_BLINK_DESCRIPTION", "Invulnerable. Blink a short distance. Costs health on use."); Language.Add(text + "SPECIAL_HEALING_HEART_NAME", "Healing Heart"); Language.Add(text + "SPECIAL_HEALING_HEART_DESCRIPTION", "Transfer all current Heart to Health and exit Defiant Heart if active. Receiving lethal damage will trigger Defiant Heart if this skill is ready."); Language.Add("KEYWORD_DEFIANCE", "Defiant HeartWhile active, incoming damage cannot reduce you below 1 health and you are Unstoppable, but your heart will bleed out until Death."); Language.Add("KEYWORD_UNSTOPPABLE", "UnstoppableYou are immune to slows, freeze, knockback, roots, stuns, and all debuffs."); Language.Add(Tokens.GetAchievementNameToken("LEVINTER_SEAMSTRESS_masteryAchievement"), "Seamstress: Mastery"); Language.Add(Tokens.GetAchievementDescriptionToken("LEVINTER_SEAMSTRESS_masteryAchievement"), "As Seamstress, beat the game or obliterate on Monsoon."); } } public static class SeamstressVariantUnlockables { public static UnlockableDef characterUnlockableDef; public static UnlockableDef masterySkinUnlockableDef; public static void Init() { masterySkinUnlockableDef = Content.CreateAndAddUnlockbleDef("LEVINTER_SEAMSTRESS_masteryUnlockable", Tokens.GetAchievementNameToken("LEVINTER_SEAMSTRESS_masteryAchievement"), CharacterBase.instance.assetBundle.LoadAsset("texMasteryAchievement")); } } public class SeamstressVariantSurvivor : SurvivorBase { public const string SEAMSTRESS_VARIANT_PREFIX = "LEVINTER_SEAMSTRESS_"; public static ModdedProcType bypassHeartConversion; public override string assetBundleName => "none"; public override string bodyName => "SeamstressVariantBody"; public override string masterName => "SeamstressVariantMonsterMaster"; public override string modelPrefabName => "mdlseamstress"; public override string displayPrefabName => "SeamstressDisplay"; public override string survivorTokenPrefix => "LEVINTER_SEAMSTRESS_"; public override BodyInfo bodyInfo => new BodyInfo { bodyName = bodyName, bodyNameToken = "LEVINTER_SEAMSTRESS_NAME", subtitleNameToken = "LEVINTER_SEAMSTRESS_SUBTITLE", characterPortrait = (Texture)(object)SeamstressAssets.mainAssetBundle.LoadAsset("texSeamstressIcon").texture, bodyColor = new Color(0.607f, 0.216f, 0.3f), sortPosition = 100f, crosshair = Asset.LoadCrosshair("SimpleDot"), podPrefab = null, maxHealth = 90f, healthRegen = 1f, damage = 11f }; public override CustomRendererInfo[] customRendererInfos => new CustomRendererInfo[3] { new CustomRendererInfo { childName = "SwordModel", material = null }, new CustomRendererInfo { childName = "GunModel" }, new CustomRendererInfo { childName = "Model" } }; public override UnlockableDef characterUnlockableDef => SeamstressVariantUnlockables.characterUnlockableDef; public override ItemDisplaysBase itemDisplays => new SeamstressVariantItemDisplays(); public override AssetBundle assetBundle { get; protected set; } public override GameObject bodyPrefab { get; protected set; } public override CharacterBody prefabCharacterBody { get; protected set; } public override GameObject characterModelObject { get; protected set; } public override CharacterModel prefabCharacterModel { get; protected set; } public override GameObject displayPrefab { get; protected set; } public override void Initialize() { base.Initialize(); } public override void InitializeCharacter() { SeamstressVariantUnlockables.Init(); base.InitializeCharacter(); SeamstressVariantConfig.Init(); SeamstressVariantStates.Init(); SeamstressVariantTokens.Init(); SeamstressVariantAssets.Init(assetBundle); SeamstressVariantBuffs.Init(assetBundle); InitializeEntityStateMachines(); InitializeSkills(); InitializeSkins(); InitializeCharacterMaster(); AdditionalBodySetup(); AddHooks(); } private void AdditionalBodySetup() { AddHitboxes(); bodyPrefab.AddComponent(); bodyPrefab.AddComponent(); bodyPrefab.AddComponent(); bodyPrefab.AddComponent(); bodyPrefab.AddComponent(); bodyPrefab.AddComponent(); } public void AddHitboxes() { Prefabs.SetupHitBoxGroup(characterModelObject, "Sword", "SwordHitbox"); Prefabs.SetupHitBoxGroup(characterModelObject, "SwordBig", "SwordHitboxBig"); Prefabs.SetupHitBoxGroup(characterModelObject, "Weave", "WeaveHitbox"); Prefabs.SetupHitBoxGroup(characterModelObject, "WeaveBig", "WeaveHitboxBig"); Prefabs.SetupHitBoxGroup(characterModelObject, "Right", "RightScissorHitbox"); Prefabs.SetupHitBoxGroup(characterModelObject, "Left", "LeftScissorHitbox"); } public override void InitializeEntityStateMachines() { //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) Prefabs.ClearEntityStateMachines(bodyPrefab); Prefabs.AddMainEntityStateMachine(bodyPrefab, "Body", typeof(GenericCharacterMain), typeof(SeamstressSpawnState)); bodyPrefab.GetComponent().preferredInitialStateType = new SerializableEntityStateType(typeof(SeamstressSpawnState)); Prefabs.AddEntityStateMachine(bodyPrefab, "Weapon"); Prefabs.AddEntityStateMachine(bodyPrefab, "Weapon2"); Prefabs.AddEntityStateMachine(bodyPrefab, "Special"); } public override void InitializeSkills() { Skills.ClearGenericSkills(bodyPrefab); AddPassiveSkill(); AddPrimarySkills(); AddSecondarySkills(); AddUtilitySkills(); AddSpecialSkills(); } private void AddPassiveSkill() { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) bodyPrefab.GetComponent().passiveSkill = new PassiveSkill { enabled = true, skillNameToken = "LEVINTER_SEAMSTRESS_PASSIVE_NAME", skillDescriptionToken = "LEVINTER_SEAMSTRESS_PASSIVE_DESCRIPTION", keywordToken = "KEYWORD_HEART_HEMORRHAGE", icon = assetBundle.LoadAsset("texItHungersIcon") }; } private void AddPrimarySkills() { //IL_0038: Unknown result type (might be due to invalid IL or missing references) Skills.CreateGenericSkillWithSkillFamily(bodyPrefab, (SkillSlot)0); SteppedSkillDef val = Skills.CreateSkillDef(new SkillDefInfo("HenrySlash", "LEVINTER_SEAMSTRESS_PRIMARY_SLASH_NAME", "LEVINTER_SEAMSTRESS_PRIMARY_SLASH_DESCRIPTION", assetBundle.LoadAsset("texFlurryIcon"), new SerializableEntityStateType(typeof(ClawCombo)), "Weapon", agile: true)); val.stepCount = 2; val.stepGraceDuration = 0.5f; Skills.AddPrimarySkills(bodyPrefab, (SkillDef)val); } private void AddSecondarySkills() { //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) Skills.CreateGenericSkillWithSkillFamily(bodyPrefab, (SkillSlot)1); SkillDefInfo skillDefInfo = new SkillDefInfo(); skillDefInfo.skillName = "FireScissors"; skillDefInfo.skillNameToken = "LEVINTER_SEAMSTRESS_SECONDARY_SCISSORS_NAME"; skillDefInfo.skillDescriptionToken = "LEVINTER_SEAMSTRESS_SECONDARY_SCISSORS_DESCRIPTION"; skillDefInfo.keywordTokens = new string[1] { "KEYWORD_SYMBIOTIC" }; skillDefInfo.skillIcon = assetBundle.LoadAsset("texSkewerIcon"); skillDefInfo.activationState = new SerializableEntityStateType(typeof(FireScissors)); skillDefInfo.activationStateMachineName = "Weapon"; skillDefInfo.interruptPriority = (InterruptPriority)2; skillDefInfo.baseRechargeInterval = 10f; skillDefInfo.baseMaxStock = 2; skillDefInfo.rechargeStock = 2; skillDefInfo.requiredStock = 1; skillDefInfo.stockToConsume = 1; skillDefInfo.resetCooldownTimerOnUse = false; skillDefInfo.fullRestockOnAssign = false; skillDefInfo.dontAllowPastMaxStocks = false; skillDefInfo.mustKeyPress = true; skillDefInfo.beginSkillCooldownOnSkillEnd = false; skillDefInfo.isCombatSkill = true; skillDefInfo.canceledFromSprinting = false; skillDefInfo.cancelSprintingOnActivation = false; skillDefInfo.forceSprintDuringState = false; SkillDef val = (SkillDef)(object)Skills.CreateSkillDef(skillDefInfo); Skills.AddSecondarySkills(bodyPrefab, val); } private void AddUtilitySkills() { //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) Skills.CreateGenericSkillWithSkillFamily(bodyPrefab, (SkillSlot)2); SkillDefInfo skillDefInfo = new SkillDefInfo(); skillDefInfo.skillName = "HenryBlink"; skillDefInfo.skillNameToken = "LEVINTER_SEAMSTRESS_UTILITY_BLINK_NAME"; skillDefInfo.skillDescriptionToken = "LEVINTER_SEAMSTRESS_UTILITY_BLINK_DESCRIPTION"; skillDefInfo.skillIcon = assetBundle.LoadAsset("texImpTouchedIcon"); skillDefInfo.activationState = new SerializableEntityStateType(typeof(Blink)); skillDefInfo.activationStateMachineName = "Body"; skillDefInfo.interruptPriority = (InterruptPriority)2; skillDefInfo.baseRechargeInterval = 0.2f; skillDefInfo.baseMaxStock = 1; skillDefInfo.rechargeStock = 1; skillDefInfo.requiredStock = 1; skillDefInfo.stockToConsume = 1; skillDefInfo.resetCooldownTimerOnUse = false; skillDefInfo.fullRestockOnAssign = true; skillDefInfo.dontAllowPastMaxStocks = false; skillDefInfo.mustKeyPress = false; skillDefInfo.beginSkillCooldownOnSkillEnd = false; skillDefInfo.isCombatSkill = false; skillDefInfo.canceledFromSprinting = false; skillDefInfo.cancelSprintingOnActivation = false; skillDefInfo.forceSprintDuringState = true; SkillDef val = (SkillDef)(object)Skills.CreateSkillDef(skillDefInfo); Skills.AddUtilitySkills(bodyPrefab, val); } private void AddSpecialSkills() { //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) Skills.CreateGenericSkillWithSkillFamily(bodyPrefab, (SkillSlot)3); SkillDefInfo skillDefInfo = new SkillDefInfo(); skillDefInfo.skillName = "HealingHeart"; skillDefInfo.skillNameToken = "LEVINTER_SEAMSTRESS_SPECIAL_HEALING_HEART_NAME"; skillDefInfo.skillDescriptionToken = "LEVINTER_SEAMSTRESS_SPECIAL_HEALING_HEART_DESCRIPTION"; skillDefInfo.skillIcon = assetBundle.LoadAsset("texGlimpseOfPurityIcon"); skillDefInfo.activationState = new SerializableEntityStateType(typeof(HealingHeart)); skillDefInfo.activationStateMachineName = "Special"; skillDefInfo.interruptPriority = (InterruptPriority)1; skillDefInfo.keywordTokens = new string[2] { "KEYWORD_DEFIANCE", "KEYWORD_UNSTOPPABLE" }; skillDefInfo.baseMaxStock = 1; skillDefInfo.baseRechargeInterval = 12f; skillDefInfo.beginSkillCooldownOnSkillEnd = false; skillDefInfo.isCombatSkill = false; skillDefInfo.mustKeyPress = true; skillDefInfo.cancelSprintingOnActivation = true; skillDefInfo.forceSprintDuringState = false; HealingHeart.specialSkillDef = Skills.CreateSkillDef(skillDefInfo); Skills.AddSpecialSkills(bodyPrefab, HealingHeart.specialSkillDef); } public override void InitializeSkins() { ModelSkinController val = ((Component)prefabCharacterModel).gameObject.GetComponent() ?? ((Component)prefabCharacterModel).gameObject.AddComponent(); SkinDef val2 = Skins.CreateSkinDef("DEFAULT_SKIN", assetBundle.LoadAsset("texMainSkin"), prefabCharacterModel.baseRendererInfos, ((Component)prefabCharacterModel).gameObject); val.skins = (SkinDef[])(object)new SkinDef[1] { val2 }; } public override void InitializeCharacterMaster() { SeamstressVariantAI.Init(bodyPrefab, masterName); } private void AddHooks() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Expected O, but got Unknown //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Expected O, but got Unknown //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Expected O, but got Unknown //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) HealthComponent.Heal += new Manipulator(HealthComponent_Heal); HealthComponent.TakeDamage += new hook_TakeDamage(HealthComponent_TakeDamage); GlobalEventManager.onServerDamageDealt += GlobalEventManager_onServerDamageDealt; HealthComponent.GetHealthBarValues += new hook_GetHealthBarValues(HealthComponent_GetHealthBarValues); RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(RecalculateStatsAPI_GetStatCoefficients); bypassHeartConversion = ProcTypeAPI.ReserveProcType(); } private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)sender == (Object)null || sender.bodyIndex != BodyCatalog.FindBodyIndex(bodyName)) { return; } DefianceBenefitsController component = ((Component)sender).GetComponent(); if (!((Object)(object)component == (Object)null) && component.IsDefianceActive) { args.moveSpeedMultAdd += 0.2f; int fervourStacks = component.FervourStacks; if (fervourStacks > 0) { args.attackSpeedMultAdd += (float)fervourStacks * 0.1f; } } } private HealthBarValues HealthComponent_GetHealthBarValues(orig_GetHealthBarValues orig, HealthComponent self) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) HealthBarValues result = orig.Invoke(self); if ((Object)(object)self.body != (Object)null && self.body.bodyIndex == BodyCatalog.FindBodyIndex(bodyName)) { result.hasInfusion = true; } return result; } private void GlobalEventManager_onServerDamageDealt(DamageReport report) { //IL_004e: 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_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Invalid comparison between Unknown and I4 //IL_01c5: Unknown result type (might be due to invalid IL or missing references) //IL_01f5: Unknown result type (might be due to invalid IL or missing references) //IL_0219: Unknown result type (might be due to invalid IL or missing references) //IL_021b: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Unknown result type (might be due to invalid IL or missing references) //IL_0185: Unknown result type (might be due to invalid IL or missing references) DamageInfo val = report?.damageInfo; CharacterBody val2 = report?.attackerBody; CharacterBody val3 = report?.victimBody; if ((Object)(object)val2 == (Object)null || (Object)(object)val3 == (Object)null || val == null || val2.bodyIndex != BodyCatalog.FindBodyIndex(bodyName) || val.damage <= 0f || val.procCoefficient <= 0f || DamageTypeCombo.op_Implicit(val.damageType & DamageTypeCombo.op_Implicit((DamageType)67108864)) != 0L || (int)val.dotIndex != -1) { return; } BleedingHeartComponent component = ((Component)val2).GetComponent(); if ((Object)(object)component == (Object)null) { return; } float num = 1f + (float)component.GetBleedChanceBonusFromHeart(); if (num > 100f) { int num2 = Mathf.FloorToInt(num / 100f); num %= 100f; for (int i = 0; i < num2; i++) { InflictDotInfo val4 = new InflictDotInfo { victimObject = ((Component)val3).gameObject, attackerObject = ((Component)val2).gameObject, hitHurtBox = val.inflictedHurtbox, dotIndex = (DotIndex)6, duration = 15f * val.procCoefficient, damageMultiplier = 1f }; DotController.InflictDot(ref val4); } } if (Util.CheckRoll(num * val.procCoefficient, val2.master)) { InflictDotInfo val5 = new InflictDotInfo { victimObject = ((Component)val3).gameObject, attackerObject = ((Component)val2).gameObject, hitHurtBox = val.inflictedHurtbox, dotIndex = (DotIndex)6, duration = 15f * val.procCoefficient, damageMultiplier = 1f }; DotController.InflictDot(ref val5); } } private void HealthComponent_Heal(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Expected O, but got Unknown //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il) { Index = -1 }; int num = default(int); if (!val.TryGotoPrev((MoveType)2, new Func[1] { (Instruction x) => ILPatternMatchingExt.MatchStarg(x, ref num) })) { Log.Fatal("HealthComponent_Heal hook failed\r\n" + ((object)il).ToString()); return; } val.MoveAfterLabels(); val.Emit(OpCodes.Ldarg_0); val.Emit(OpCodes.Ldarg_1); val.Emit(OpCodes.Ldarg_2); val.Emit(OpCodes.Ldarg_3); val.EmitDelegate>((Func)delegate(HealthComponent self, float amount, ProcChainMask procChainMask, bool nonRegen) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) BleedingHeartComponent bleedingHeartComponent = default(BleedingHeartComponent); if (self.body.bodyIndex == BodyCatalog.FindBodyIndex(bodyName) && self.alive && !ProcTypeAPI.HasModdedProc(procChainMask, bypassHeartConversion) && ((Component)self).TryGetComponent(ref bleedingHeartComponent)) { bleedingHeartComponent.AddToHeart(amount); amount = 0f; } return amount; }); val.Emit(OpCodes.Starg, 1); val.Emit(OpCodes.Ldarg_1); val.Emit(OpCodes.Ldc_R4, 0f); val.Emit(OpCodes.Bgt, val.Next); val.Emit(OpCodes.Ldc_R4, 0f); val.Emit(OpCodes.Ret); } private void HealthComponent_TakeDamage(orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0076: 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) if ((Object)(object)self != (Object)null && (Object)(object)self.body != (Object)null && self.body.bodyIndex == BodyCatalog.FindBodyIndex(bodyName) && self.body.HasBuff(SeamstressVariantBuffs.defianceBuff) && damageInfo != null && damageInfo.damage >= self.combinedHealth) { Log.Warning("TakeDamageHook: Death prevented by Defiance."); damageInfo.damageType |= DamageTypeCombo.op_Implicit((DamageType)1); } orig.Invoke(self, damageInfo); } } } namespace SeamstressVariant.Survivors.SeamstressVariant.SkillStates { public class Blink : BaseSkillState { private const float BlinkDistance = 10f; private const float ExitMomentumFraction = 0.15f; protected Transform modelTransform; public static string beginSoundString = "Play_imp_attack_blink"; public string animationLayer = "FullBody, Override"; public float duration = 0.2f; protected AimRequest request; protected bool hasAimRequest; protected Vector3 blinkVector; protected float speedCoefficient; protected CharacterModel characterModel; protected HurtBoxGroup hurtboxGroup; protected Animator animator; protected GameObject dashPrefab; protected GameObject blinkPrefab; protected Material destealthMaterial; public override void OnEnter() { //IL_01c4: Unknown result type (might be due to invalid IL or missing references) //IL_01c9: Unknown result type (might be due to invalid IL or missing references) //IL_01d1: Unknown result type (might be due to invalid IL or missing references) //IL_01d3: Unknown result type (might be due to invalid IL or missing references) //IL_01d8: Unknown result type (might be due to invalid IL or missing references) //IL_01da: Unknown result type (might be due to invalid IL or missing references) //IL_01df: Unknown result type (might be due to invalid IL or missing references) //IL_01e4: Unknown result type (might be due to invalid IL or missing references) //IL_01eb: Unknown result type (might be due to invalid IL or missing references) //IL_01f0: Unknown result type (might be due to invalid IL or missing references) //IL_01f5: Unknown result type (might be due to invalid IL or missing references) //IL_0205: 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_017e: Unknown result type (might be due to invalid IL or missing references) //IL_0180: Unknown result type (might be due to invalid IL or missing references) //IL_0185: Unknown result type (might be due to invalid IL or missing references) //IL_0187: Unknown result type (might be due to invalid IL or missing references) //IL_018c: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_0198: Unknown result type (might be due to invalid IL or missing references) //IL_019d: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_01b2: Expected O, but got Unknown //IL_0364: Unknown result type (might be due to invalid IL or missing references) //IL_0369: Unknown result type (might be due to invalid IL or missing references) //IL_0399: Unknown result type (might be due to invalid IL or missing references) //IL_0387: Unknown result type (might be due to invalid IL or missing references) //IL_038c: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); hasAimRequest = false; duration = 0.1f; if (((EntityState)this).isAuthority) { float level = (Object.op_Implicit((Object)(object)((EntityState)this).characterBody) ? ((EntityState)this).characterBody.level : 0f); float blinkHealthCostForLevel = SeamstressVariantConfig.GetBlinkHealthCostForLevel(level); if (blinkHealthCostForLevel > 0f && Object.op_Implicit((Object)(object)((EntityState)this).healthComponent)) { float num = Mathf.Max(((EntityState)this).healthComponent.health - 1f, 0f); BleedingHeartComponent bleedingHeartComponent = (Object.op_Implicit((Object)(object)((EntityState)this).characterBody) ? ((Component)((EntityState)this).characterBody).GetComponent() : null); float num2 = (((Object)(object)bleedingHeartComponent != (Object)null) ? bleedingHeartComponent.GetHeart() : 0f); if (num + num2 < blinkHealthCostForLevel) { ((EntityState)this).outer.SetNextStateToMain(); return; } } } if (NetworkServer.active && Object.op_Implicit((Object)(object)((EntityState)this).healthComponent)) { float level2 = (Object.op_Implicit((Object)(object)((EntityState)this).characterBody) ? ((EntityState)this).characterBody.level : 0f); float blinkHealthCostForLevel2 = SeamstressVariantConfig.GetBlinkHealthCostForLevel(level2); if (blinkHealthCostForLevel2 > 0f) { float num3 = Mathf.Max(((EntityState)this).healthComponent.health - 1f, 0f); if (num3 >= blinkHealthCostForLevel2) { ((EntityState)this).healthComponent.TakeDamage(new DamageInfo { damage = blinkHealthCostForLevel2, damageColorIndex = (DamageColorIndex)8, damageType = DamageTypeCombo.op_Implicit((DamageType)3), position = ((EntityState)this).characterBody.corePosition, procCoefficient = 0f }); } else { float amount = blinkHealthCostForLevel2 - num3; ((EntityState)this).healthComponent.TakeDamage(new DamageInfo { damage = blinkHealthCostForLevel2, damageColorIndex = (DamageColorIndex)8, damageType = DamageTypeCombo.op_Implicit((DamageType)3), position = ((EntityState)this).characterBody.corePosition, procCoefficient = 0f }); BleedingHeartComponent component = ((Component)((EntityState)this).characterBody).GetComponent(); if ((Object)(object)component != (Object)null) { component.ConsumeHeart(amount); } } } } dashPrefab = SeamstressAssets.impDashEffect; blinkPrefab = SeamstressAssets.smallBlinkEffect; destealthMaterial = SeamstressAssets.destealthMaterial; Util.PlaySound(beginSoundString, ((EntityState)this).gameObject); Animator modelAnimator = ((EntityState)this).GetModelAnimator(); if (Object.op_Implicit((Object)(object)modelAnimator)) { modelAnimator.SetLayerWeight(modelAnimator.GetLayerIndex("Scissor, Override"), 0f); } modelTransform = ((EntityState)this).GetModelTransform(); if (Object.op_Implicit((Object)(object)modelTransform)) { characterModel = ((Component)modelTransform).GetComponent(); hurtboxGroup = ((Component)modelTransform).GetComponent(); animator = ((Component)modelTransform).GetComponent(); } if (Object.op_Implicit((Object)(object)characterModel)) { CharacterModel obj = characterModel; int invisibilityCount = obj.invisibilityCount; obj.invisibilityCount = invisibilityCount + 1; } if (Object.op_Implicit((Object)(object)hurtboxGroup)) { HurtBoxGroup obj2 = hurtboxGroup; int invisibilityCount = obj2.hurtBoxesDeactivatorCounter; obj2.hurtBoxesDeactivatorCounter = invisibilityCount + 1; } if (Object.op_Implicit((Object)(object)((EntityState)this).cameraTargetParams)) { request = ((EntityState)this).cameraTargetParams.RequestAimType((AimType)2); hasAimRequest = true; } blinkVector = GetBlinkVector(); if (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { ((EntityState)this).characterDirection.moveVector = blinkVector; } CreateBlinkEffect(((EntityState)this).characterBody.corePosition, first: true); speedCoefficient = ((duration > 0f) ? (10f / duration) : 0f); ((EntityState)this).gameObject.layer = LayerIndex.fakeActor.intVal; if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((BaseCharacterController)((EntityState)this).characterMotor).Motor.RebuildCollidableLayers(); } } protected virtual Vector3 GetBlinkVector() { //IL_0048: 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_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_013c: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_0142: Unknown result type (might be due to invalid IL or missing references) //IL_0147: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_014b: 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_0121: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)((EntityState)this).inputBank)) { return Object.op_Implicit((Object)(object)((EntityState)this).characterDirection) ? ((EntityState)this).characterDirection.forward : ((EntityState)this).transform.forward; } Vector3 val = ((EntityState)this).inputBank.aimDirection; val.y = 0f; if (((Vector3)(ref val)).sqrMagnitude <= 0f) { val = (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection) ? ((EntityState)this).characterDirection.forward : ((EntityState)this).transform.forward); val.y = 0f; } Vector3 val2 = -Vector3.Cross(Vector3.up, val); float num = Vector3.Angle(((EntityState)this).inputBank.aimDirection, val); if (((EntityState)this).inputBank.aimDirection.y < 0f) { num = 0f - num; } Vector3 val3 = ((EntityState)this).inputBank.moveVector; if (((Vector3)(ref val3)).sqrMagnitude <= 0f) { val3 = (Object.op_Implicit((Object)(object)((EntityState)this).characterDirection) ? ((EntityState)this).characterDirection.forward : ((EntityState)this).transform.forward); } return Vector3.Normalize(Quaternion.AngleAxis(num, val2) * val3); } protected void CreateBlinkEffect(Vector3 origin, bool first) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Expected O, but got Unknown if (Object.op_Implicit((Object)(object)blinkPrefab)) { EffectData val = new EffectData { rotation = Util.QuaternionSafeLookRotation(blinkVector), origin = origin, scale = 0.15f }; EffectManager.SpawnEffect(blinkPrefab, val, false); val.scale = 3f; if (!first && Object.op_Implicit((Object)(object)dashPrefab)) { EffectManager.SpawnEffect(dashPrefab, val, false); } } } public override void FixedUpdate() { //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); if (((EntityState)this).isAuthority && Object.op_Implicit((Object)(object)((EntityState)this).characterMotor) && Object.op_Implicit((Object)(object)((EntityState)this).characterDirection)) { ((BaseCharacterController)((EntityState)this).characterMotor).Motor.ForceUnground(0.1f); ((EntityState)this).characterMotor.velocity = blinkVector * speedCoefficient; } if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { //IL_003f: 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_0055: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).gameObject.layer = LayerIndex.defaultLayer.intVal; if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((BaseCharacterController)((EntityState)this).characterMotor).Motor.RebuildCollidableLayers(); ((EntityState)this).characterMotor.velocity = blinkVector * (speedCoefficient * 0.15f); } if (!((EntityState)this).outer.destroying) { Vector3 origin = (Object.op_Implicit((Object)(object)((EntityState)this).characterBody) ? ((EntityState)this).characterBody.corePosition : ((EntityState)this).transform.position); CreateBlinkEffect(origin, first: false); modelTransform = ((EntityState)this).GetModelTransform(); if (Object.op_Implicit((Object)(object)modelTransform) && Object.op_Implicit((Object)(object)destealthMaterial) && Object.op_Implicit((Object)(object)animator)) { TemporaryOverlayInstance val = TemporaryOverlayManager.AddOverlay(((EntityState)this).gameObject); val.duration = 1f; val.destroyComponentOnEnd = true; val.originalMaterial = destealthMaterial; val.inspectorCharacterModel = ((Component)animator).gameObject.GetComponent(); val.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f); val.animateShaderAlpha = true; } } if (Object.op_Implicit((Object)(object)characterModel)) { CharacterModel obj = characterModel; int invisibilityCount = obj.invisibilityCount; obj.invisibilityCount = invisibilityCount - 1; } if (Object.op_Implicit((Object)(object)hurtboxGroup)) { HurtBoxGroup obj2 = hurtboxGroup; int invisibilityCount = obj2.hurtBoxesDeactivatorCounter; obj2.hurtBoxesDeactivatorCounter = invisibilityCount - 1; } if (Object.op_Implicit((Object)(object)((EntityState)this).cameraTargetParams) && hasAimRequest) { request.Dispose(); hasAimRequest = false; } ((EntityState)this).OnExit(); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)3; } public override void OnSerialize(NetworkWriter writer) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) ((BaseSkillState)this).OnSerialize(writer); writer.Write(blinkVector); } public override void OnDeserialize(NetworkReader reader) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) ((BaseSkillState)this).OnDeserialize(reader); blinkVector = reader.ReadVector3(); } } public class ClawCombo : BaseMeleeAttack { private GameObject _swingEffectInstance; private bool hasLeftScissor = false; private bool hasRightScissor = false; private bool isScissorActive = false; private bool hasFiredScissor = false; private OverlapAttack scissorOverlapAttack; private GameObject _scissorSwingEffectInstance; public override void OnEnter() { //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_007b: 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_012b: Unknown result type (might be due to invalid IL or missing references) //IL_0130: Unknown result type (might be due to invalid IL or missing references) ScissorController scissorController = (((Object)(object)((EntityState)this).characterBody != (Object)null) ? ((Component)((EntityState)this).characterBody).GetComponent() : null); if ((Object)(object)scissorController != (Object)null) { hasLeftScissor = scissorController.HasLeftScissor; hasRightScissor = scissorController.HasRightScissor; } hitboxGroupName = "Sword"; damageType = DamageTypeCombo.GenericPrimary; damageCoefficient = 1f; procCoefficient = 1f; pushForce = 300f; bonusForce = Vector3.zero; baseDuration = 1.1f; attackStartPercentTime = 0.2f; attackEndPercentTime = 0.4f; earlyExitPercentTime = 0.5f; hitStopDuration = 0.05f; attackRecoil = 2f; hitHopVelocity = 8f; swingSoundString = "sfx_seamstress_swing"; hitSoundString = ""; muzzleString = ((swingIndex % 2 == 0) ? "SwingLeftSmall" : "SwingRightSmall"); playbackRateParam = "Slash.playbackRate"; swingEffectPrefab = SeamstressAssets.clawSlashEffect; hitEffectPrefab = SeamstressAssets.scissorsHitImpactEffect; impactSound = SeamstressAssets.scissorsHitSoundEvent.index; ApplyScissorMechanics(); base.OnEnter(); if (isScissorActive) { SetupScissorAttack(); } } private void SetupScissorAttack() { //IL_001e: 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_002f: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0047: 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_0065: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Expected O, but got Unknown string text = ((swingIndex % 2 == 0) ? "Right" : "Left"); scissorOverlapAttack = new OverlapAttack { attacker = ((EntityState)this).gameObject, inflictor = ((EntityState)this).gameObject, teamIndex = ((BaseState)this).GetTeam(), damage = 1.5f * ((BaseState)this).damageStat, procCoefficient = procCoefficient, hitEffectPrefab = hitEffectPrefab, forceVector = bonusForce, pushAwayForce = pushForce * 3f, hitBoxGroup = ((BaseState)this).FindHitBoxGroup(text), isCrit = attack.isCrit, impactSound = impactSound, damageType = damageType }; } private void ApplyScissorMechanics() { bool flag = swingIndex % 2 == 0; isScissorActive = (flag && hasLeftScissor) || (!flag && hasRightScissor); if (isScissorActive) { baseDuration = 2f; attackStartPercentTime = 0.11f; attackEndPercentTime = 0.22f; } Animator modelAnimator = ((EntityState)this).GetModelAnimator(); if ((Object)(object)modelAnimator != (Object)null) { int layerIndex = modelAnimator.GetLayerIndex("Scissor, Override"); if (layerIndex >= 0) { float num = ((hasLeftScissor || hasRightScissor) ? 1f : 0f); modelAnimator.SetLayerWeight(layerIndex, num); } } } public override void FixedUpdate() { base.FixedUpdate(); if (!isScissorActive) { return; } float num = duration * 0.2f; float num2 = duration * 0.4f; bool flag = stopwatch >= num; bool flag2 = stopwatch >= num2; if ((flag && !flag2) || (flag && flag2 && !hasFiredScissor)) { if (!hasFiredScissor) { PlayScissorSwingEffect(); hasFiredScissor = true; } if (((EntityState)this).isAuthority) { scissorOverlapAttack.Fire((List)null); } } } private void PlayScissorSwingEffect() { Util.PlayAttackSpeedSound("sfx_seamstress_swing_scissor", ((EntityState)this).gameObject, ((BaseState)this).attackSpeedStat); string text = ((swingIndex % 2 == 0) ? "SwingLeft" : "SwingRight"); Transform val = ((BaseState)this).FindModelChild(text); if ((Object)(object)val != (Object)null && (Object)(object)SeamstressAssets.scissorsSlashEffect != (Object)null) { if ((Object)(object)_scissorSwingEffectInstance != (Object)null) { EntityState.Destroy((Object)(object)_scissorSwingEffectInstance); } _scissorSwingEffectInstance = Object.Instantiate(SeamstressAssets.scissorsSlashEffect, val); } } protected override void PlayAttackAnimation() { float num = (isScissorActive ? (1.1f / ((BaseState)this).attackSpeedStat) : duration); ((EntityState)this).PlayCrossfade("Gesture, Override", (swingIndex % 2 == 0) ? "Slash1" : "Slash2", playbackRateParam, num, 0.1f * num); } protected override void PlaySwingEffect() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: 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_0032: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) Ray aimRay = ((BaseState)this).GetAimRay(); Transform val = ((BaseState)this).FindModelChild("SwingPivot"); if ((Object)(object)val != (Object)null) { Vector3 direction = ((Ray)(ref aimRay)).direction; direction.y = Mathf.Max(direction.y, direction.y * 0.5f); val.rotation = Util.QuaternionSafeLookRotation(direction); } Transform val2 = ((BaseState)this).FindModelChild(muzzleString); if ((Object)(object)val2 != (Object)null && (Object)(object)swingEffectPrefab != (Object)null) { if ((Object)(object)_swingEffectInstance != (Object)null) { EntityState.Destroy((Object)(object)_swingEffectInstance); } _swingEffectInstance = Object.Instantiate(swingEffectPrefab, val2); } } protected override void OnHitEnemyAuthority() { base.OnHitEnemyAuthority(); } public override void OnExit() { if ((Object)(object)_swingEffectInstance != (Object)null) { EntityState.Destroy((Object)(object)_swingEffectInstance); } if ((Object)(object)_scissorSwingEffectInstance != (Object)null) { EntityState.Destroy((Object)(object)_scissorSwingEffectInstance); } base.OnExit(); } } public class DefiantHeart : BaseSkillState { public static float heartDrainPerTick = 1f; public static float heartDrainInterval = 0.25f; public static float startupFreezeDuration = 1f; public static float animDuration = 1.5f; private BleedingHeartComponent heart; private HeartOverlayController heartOverlayController; private float nextDrainAt; private float startupFreezeEndTime; private float currentDrainPerTick; private bool startupFreezeActive; private bool fired; private bool exitingDueToHeartExhaustion; private bool CanExitState() { return ((EntityState)this).isAuthority; } public override void OnEnter() { ((BaseState)this).OnEnter(); heart = ((EntityState)this).GetComponent(); heartOverlayController = ((EntityState)this).GetComponent(); nextDrainAt = heartDrainInterval; currentDrainPerTick = heartDrainPerTick; startupFreezeEndTime = startupFreezeDuration; startupFreezeActive = startupFreezeDuration > 0f; if (((EntityState)this).isAuthority) { heart.RequestSetDefiantStartupFreezeActive(active: true); } ((EntityState)this).PlayCrossfade("FullBody, Override", "RipHeart", "Dash.playbackRate", animDuration, 0.05f); Util.PlaySound("Play_imp_overlord_attack2_tell", ((EntityState)this).gameObject); ApplyTransformEnterEffect(); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (startupFreezeActive && ((EntityState)this).fixedAge >= startupFreezeEndTime) { EndStartupFreeze(); } if (!fired && ((EntityState)this).fixedAge >= animDuration * 0.5f) { fired = true; EnterSustainedPhase(); } if (fired) { UpdateSustainedPhase(); } } private void EndStartupFreeze() { if (startupFreezeActive) { startupFreezeActive = false; if (((EntityState)this).isAuthority) { heart.RequestSetDefiantStartupFreezeActive(active: false); } } } private void EnterSustainedPhase() { if ((Object)(object)heartOverlayController != (Object)null) { heartOverlayController.SetHeartDrainActive(active: true); } ((EntityState)this).PlayAnimation("Gesture, Override", "BufferEmpty"); if (((EntityState)this).isAuthority) { heart.RequestSetDefianceVisualsActive(active: true); } if (((EntityState)this).isAuthority && !heart.CanSustainDefiantHeart()) { ((EntityState)this).outer.SetNextStateToMain(); } } private void UpdateSustainedPhase() { if (((EntityState)this).isAuthority && !heart.CanSustainDefiantHeart()) { ((EntityState)this).outer.SetNextStateToMain(); } else if (((EntityState)this).isAuthority && ((ButtonState)(ref ((EntityState)this).inputBank.skill4)).justPressed) { ((EntityState)this).outer.SetNextState((EntityState)(object)new HealingHeart()); } else { if (!(((EntityState)this).fixedAge >= nextDrainAt)) { return; } nextDrainAt += heartDrainInterval; if (NetworkServer.active) { heart.ConsumeHeart(currentDrainPerTick); DotController.InflictDot(((Component)((EntityState)this).characterBody).gameObject, ((Component)((EntityState)this).characterBody).gameObject, ((EntityState)this).characterBody.mainHurtBox, (DotIndex)0, 1f, currentDrainPerTick, (uint?)1u); } currentDrainPerTick += 1f; if (!heart.CanSustainDefiantHeart()) { if (NetworkServer.active) { exitingDueToHeartExhaustion = true; } if (CanExitState()) { ((EntityState)this).outer.SetNextStateToMain(); } } } } private void ApplyTransformEnterEffect() { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_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_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Expected O, but got Unknown if (Object.op_Implicit((Object)(object)SeamstressVariantAssets.defiantTransformEnterEffect) && Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { float scale = 3.5f; Vector3 origin = ((EntityState)this).characterBody.corePosition + Vector3.up * (((EntityState)this).characterBody.radius * 0.75f); EffectManager.SpawnEffect(SeamstressVariantAssets.defiantTransformEnterEffect, new EffectData { origin = origin, rotation = Quaternion.identity, scale = scale }, false); } } public override void ModifyNextState(EntityState nextState) { ((EntityState)this).ModifyNextState(nextState); if (nextState is HealingHeart healingHeart) { healingHeart.normalExit = false; if (NetworkServer.active) { TransferHeartServer(); } ((EntityState)healingHeart).skillLocator.special.DeductStock(1); } } private void TransferHeartServer() { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) float num = heart.ConsumeHeart(heart.GetHeart()); if (num > 0f) { ProcChainMask val = default(ProcChainMask); ProcTypeAPI.AddModdedProc(ref val, SeamstressVariantSurvivor.bypassHeartConversion); ((EntityState)this).characterBody.healthComponent.Heal(num, val, true); } } public override void OnExit() { //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) EndStartupFreeze(); heartOverlayController?.SetHeartDrainActive(active: false); if (NetworkServer.active) { DotController.RemoveAllDots(((EntityState)this).gameObject); if (((EntityState)this).characterBody.HasBuff(SeamstressVariantBuffs.defianceBuff)) { ((EntityState)this).characterBody.RemoveBuff(SeamstressVariantBuffs.defianceBuff); } if (exitingDueToHeartExhaustion) { ((EntityState)this).characterBody.healthComponent.Suicide((GameObject)null, (GameObject)null, default(DamageTypeCombo)); } } if (((EntityState)this).isAuthority) { heart?.RequestSetDefianceVisualsActive(active: false); } ((EntityState)this).OnExit(); } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)9; } } public class FireScissors : BaseSkillState { public static float baseDuration = 0.5f; public static float procCoefficient = 1f; public static float force = 0f; private float duration; private bool hasFired; private bool _firingLeft; private Ray aimRay; private string chosenAnim; private string muzzleString; private GameObject projectilePrefab; private GameObject scissorFiringPrefab = SeamstressAssets.impDashEffect; private HurtBox _lockedTarget; private ScissorController _scissors; public override void OnEnter() { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); duration = baseDuration / ((BaseState)this).attackSpeedStat; aimRay = ((BaseState)this).GetAimRay(); ((BaseState)this).StartAimMode(aimRay, 2f, false); SeamstressController component = ((EntityState)this).GetComponent(); if ((Object)(object)component != (Object)null && component.blue && (Object)(object)SeamstressAssets.impDashEffect2 != (Object)null) { scissorFiringPrefab = SeamstressAssets.impDashEffect2; } SeamstressTracker component2 = ((Component)((EntityState)this).characterBody).GetComponent(); _lockedTarget = (((Object)(object)component2 != (Object)null) ? component2.GetTrackingTarget() : null); _scissors = (((Object)(object)((EntityState)this).characterBody != (Object)null) ? ((Component)((EntityState)this).characterBody).GetComponent() : null); bool flag = (Object)(object)_scissors != (Object)null && _scissors.HasLeftScissor; if ((Object)(object)_scissors != (Object)null && _scissors.HasRightScissor && !flag) { chosenAnim = "FireScissorR"; muzzleString = "SwingLeftSmall"; projectilePrefab = SeamstressVariantAssets.scissorRProjectile; _firingLeft = false; } else { chosenAnim = "FireScissorL"; muzzleString = "SwingRightSmall"; projectilePrefab = SeamstressVariantAssets.scissorLProjectile; _firingLeft = true; } Animator modelAnimator = ((EntityState)this).GetModelAnimator(); if (Object.op_Implicit((Object)(object)modelAnimator)) { ((EntityState)this).PlayCrossfade("Gesture, Override", chosenAnim, "Slash.playbackRate", duration, 0.05f); } } public override void OnExit() { ((EntityState)this).OnExit(); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (!hasFired) { Fire(); hasFired = true; } if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } private void Fire() { //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0068: 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_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Expected O, but got Unknown //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_0134: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)projectilePrefab == (Object)null) { return; } Util.PlaySound("Play_item_lunar_specialReplace_explode", ((EntityState)this).gameObject); Util.PlaySound("Play_imp_overlord_attack1_throw", ((EntityState)this).gameObject); Transform val = ((BaseState)this).FindModelChild(muzzleString); if ((Object)(object)val != (Object)null && (Object)(object)scissorFiringPrefab != (Object)null) { EffectData val2 = new EffectData { rotation = Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction), origin = val.position, scale = 0.5f }; EffectManager.SpawnEffect(scissorFiringPrefab, val2, true); } if (((EntityState)this).isAuthority) { Quaternion val3 = Util.QuaternionSafeLookRotation(((Ray)(ref aimRay)).direction); GameObject val4 = null; if (Object.op_Implicit((Object)(object)_lockedTarget) && (Object)(object)_lockedTarget.healthComponent != (Object)null && (Object)(object)_lockedTarget.healthComponent.body != (Object)null) { val4 = ((Component)_lockedTarget.healthComponent.body).gameObject; } ProjectileManager.instance.FireProjectile(projectilePrefab, ((Ray)(ref aimRay)).origin, val3, ((EntityState)this).gameObject, ((BaseState)this).damageStat, force, Util.CheckRoll(((BaseState)this).critStat, ((EntityState)this).characterBody.master), (DamageColorIndex)0, val4, -1f, (DamageTypeCombo?)null); if ((Object)(object)_scissors != (Object)null) { _scissors.NotifyScissorFired(_firingLeft); } } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)2; } } public class HealingHeart : BaseSkillState { public static SkillDef specialSkillDef; public float baseDuration = 0.6f; private BleedingHeartComponent heart; private Material destealthMaterial; private TemporaryOverlayInstance persistentDefianceOverlay; public bool normalExit = true; public override void OnEnter() { ((BaseState)this).OnEnter(); destealthMaterial = SeamstressAssets.destealthMaterial; heart = ((EntityState)this).GetComponent(); if (normalExit) { ((EntityState)this).PlayCrossfade("FullBody, Override", "RipHeart", "Dash.playbackRate", baseDuration * 2.25f, 0.05f); Util.PlaySound("Play_voidman_transform_return", ((EntityState)this).gameObject); if (NetworkServer.active && !((EntityState)this).characterBody.HasBuff(SeamstressVariantBuffs.defianceBuff)) { ((EntityState)this).characterBody.AddBuff(SeamstressVariantBuffs.defianceBuff); } } } public void PlayDestealthAnimation() { Animator modelAnimator = ((EntityState)this).GetModelAnimator(); if (Object.op_Implicit((Object)(object)modelAnimator) && Object.op_Implicit((Object)(object)destealthMaterial) && persistentDefianceOverlay == null) { persistentDefianceOverlay = TemporaryOverlayManager.AddOverlay(((EntityState)this).gameObject); persistentDefianceOverlay.duration = 1f; persistentDefianceOverlay.destroyComponentOnEnd = true; persistentDefianceOverlay.originalMaterial = destealthMaterial; persistentDefianceOverlay.inspectorCharacterModel = ((Component)modelAnimator).gameObject.GetComponent(); persistentDefianceOverlay.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f); persistentDefianceOverlay.animateShaderAlpha = true; } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= baseDuration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void ModifyNextState(EntityState nextState) { ((EntityState)this).ModifyNextState(nextState); if (NetworkServer.active && ((EntityState)this).characterBody.HasBuff(SeamstressVariantBuffs.defianceBuff) && !(nextState is DefiantHeart)) { ((EntityState)this).characterBody.RemoveBuff(SeamstressVariantBuffs.defianceBuff); } } public override void OnExit() { if (normalExit) { PlayDestealthAnimation(); if (NetworkServer.active) { TransferHeartServer(); } } ((EntityState)this).OnExit(); } private void TransferHeartServer() { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) float num = heart.ConsumeHeart(heart.GetHeart()); if (num > 0f) { ProcChainMask val = default(ProcChainMask); ProcTypeAPI.AddModdedProc(ref val, SeamstressVariantSurvivor.bypassHeartConversion); ((EntityState)this).characterBody.healthComponent.Heal(num, val, true); } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)9; } } public class SeamstressSpawnState : BaseSkillState { public GameObject spawnPrefab = SeamstressAssets.spawnPrefab; public static float duration = 2f; private static Material dissolveMaterial; private bool skipCustomSpawn; private bool hasSpawnEffectFired; public override void OnEnter() { //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) ((BaseState)this).OnEnter(); skipCustomSpawn = (Object)(object)Run.instance != (Object)null && Run.instance.stageClearCount > 0; if (skipCustomSpawn) { return; } if (NetworkServer.active) { ((EntityState)this).characterBody.AddBuff(Buffs.HiddenInvincibility); } ((EntityState)this).PlayAnimation("Body", "Spawn"); Transform modelTransform = ((EntityState)this).GetModelTransform(); if (Object.op_Implicit((Object)(object)modelTransform)) { if ((Object)(object)dissolveMaterial == (Object)null) { dissolveMaterial = Addressables.LoadAssetAsync((object)"RoR2/Base/Imp/matImpDissolve.mat").WaitForCompletion(); } TemporaryOverlayInstance val = TemporaryOverlayManager.AddOverlay(((EntityState)this).gameObject); val.duration = 1.5f; val.animateShaderAlpha = true; val.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f); val.destroyComponentOnEnd = true; val.originalMaterial = dissolveMaterial; } } public override void FixedUpdate() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Expected O, but got Unknown //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Expected O, but got Unknown //IL_0067: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); if (skipCustomSpawn) { if (((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextState((EntityState)new SpawnTeleporterState()); } return; } if (((EntityState)this).fixedAge > -2f && !hasSpawnEffectFired) { hasSpawnEffectFired = true; EffectData val = new EffectData(); val.origin = ((EntityState)this).transform.position; EffectManager.SpawnEffect(spawnPrefab, val, false); Util.PlaySound("sfx_seamstress_spawn", ((EntityState)this).gameObject); } if (((EntityState)this).fixedAge >= duration && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { ((EntityState)this).OnExit(); if (!skipCustomSpawn && NetworkServer.active) { ((EntityState)this).characterBody.RemoveBuff(Buffs.HiddenInvincibility); } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)9; } } } namespace SeamstressVariant.Survivors.SeamstressVariant.Components { internal class BleedingHeartComponent : NetworkBehaviour { private HealthComponent healthComponent; private CharacterBody body; private Material destealthMaterial; private GameObject trailEffectR; private GameObject trailEffectL; private bool sustainedVisualActive; private TemporaryOverlayInstance persistentDefianceOverlay; private EffectManagerHelper defianceBleedEffect; [SyncVar(hook = "OnMaxHeartChanged")] private float MaxHeart = 110f; [SyncVar(hook = "OnCurrentHeartChanged")] private float currentHeart = 0f; [SyncVar(hook = "OnDefianceVisualsActiveChanged")] private bool defianceVisualsActive; [SyncVar(hook = "OnDefiantStartupFreezeActiveChanged")] private bool defiantStartupFreezeActive; private int activeBleedStacks = 0; private int nearbyEnemyCount = 0; private const float NearbyEnemyRadius = 30f; private float scanTimer = 0f; private float healTimer = 0f; private const float ScanInterval = 1f; private const float HealInterval = 0.2f; private const float HealPerBleedStack = 1f; private const int HeartPerBleedChancePercent = 50; private bool startupMoveLockApplied; private bool cachedDisableAirControlUntilCollision; private bool cachedDisableAirControlUntilCollisionValid; private bool startupAntiGravityApplied; private bool startupFlightApplied; private bool isInitialized = false; private static int kCmdCmdRequestSetDefianceVisualsActive; private static int kCmdCmdRequestSetDefiantStartupFreezeActive; public float NetworkMaxHeart { get { return MaxHeart; } [param: In] set { ref float maxHeart = ref MaxHeart; if (NetworkServer.localClientActive && !((NetworkBehaviour)this).syncVarHookGuard) { ((NetworkBehaviour)this).syncVarHookGuard = true; OnMaxHeartChanged(value); ((NetworkBehaviour)this).syncVarHookGuard = false; } ((NetworkBehaviour)this).SetSyncVar(value, ref maxHeart, 1u); } } public float NetworkcurrentHeart { get { return currentHeart; } [param: In] set { ref float reference = ref currentHeart; if (NetworkServer.localClientActive && !((NetworkBehaviour)this).syncVarHookGuard) { ((NetworkBehaviour)this).syncVarHookGuard = true; OnCurrentHeartChanged(value); ((NetworkBehaviour)this).syncVarHookGuard = false; } ((NetworkBehaviour)this).SetSyncVar(value, ref reference, 2u); } } public bool NetworkdefianceVisualsActive { get { return defianceVisualsActive; } [param: In] set { ref bool reference = ref defianceVisualsActive; if (NetworkServer.localClientActive && !((NetworkBehaviour)this).syncVarHookGuard) { ((NetworkBehaviour)this).syncVarHookGuard = true; OnDefianceVisualsActiveChanged(value); ((NetworkBehaviour)this).syncVarHookGuard = false; } ((NetworkBehaviour)this).SetSyncVar(value, ref reference, 4u); } } public bool NetworkdefiantStartupFreezeActive { get { return defiantStartupFreezeActive; } [param: In] set { ref bool reference = ref defiantStartupFreezeActive; if (NetworkServer.localClientActive && !((NetworkBehaviour)this).syncVarHookGuard) { ((NetworkBehaviour)this).syncVarHookGuard = true; OnDefiantStartupFreezeActiveChanged(value); ((NetworkBehaviour)this).syncVarHookGuard = false; } ((NetworkBehaviour)this).SetSyncVar(value, ref reference, 8u); } } private void Awake() { healthComponent = ((Component)this).GetComponent(); body = ((Component)this).GetComponent(); destealthMaterial = SeamstressAssets.destealthMaterial; if ((Object)(object)healthComponent != (Object)null) { if (NetworkServer.active) { NetworkMaxHeart = healthComponent.fullHealth; } isInitialized = true; } } private void Update() { if (defiantStartupFreezeActive) { ApplyDefiantStartupFreezeLocal(); } if (NetworkServer.active && !((Object)(object)body == (Object)null) && !((Object)(object)healthComponent == (Object)null) && healthComponent.alive) { scanTimer -= Time.deltaTime; healTimer -= Time.deltaTime; if (scanTimer <= 0f) { scanTimer = 1f; ScanNearbyEnemies(); } if (healTimer <= 0f) { healTimer = 0.2f; ApplyPassiveHeal(); } } } private void OnEnable() { if ((Object)(object)body != (Object)null) { body.onRecalculateStats += OnBodyRecalculateStates; } } private void OnDisable() { if ((Object)(object)body != (Object)null) { body.onRecalculateStats -= OnBodyRecalculateStates; } RemoveDefiantStartupFreezeLocal(); RemoveDefianceVisualsLocal(); } private void OnBodyRecalculateStates(CharacterBody body) { if (NetworkServer.active) { NetworkMaxHeart = body.maxHealth; } } public void AddToHeart(float amount) { if (amount > 0f && isInitialized && (Object)(object)healthComponent != (Object)null && healthComponent.alive) { NetworkcurrentHeart = Mathf.Min(currentHeart + amount, MaxHeart); if (currentHeart < MaxHeart) { body.MarkAllStatsDirty(); } } } public float GetHeart() { return currentHeart; } public float ConsumeHeart(float amount) { if (!isInitialized || amount <= 0f) { return 0f; } float num = currentHeart; NetworkcurrentHeart = Mathf.Max(0f, currentHeart - amount); float num2 = num - currentHeart; if (num2 > 0f) { body.MarkAllStatsDirty(); } return num2; } public bool CanSustainDefiantHeart() { return currentHeart > 1f; } public float GetMaxHeart() { return MaxHeart; } public int GetBleedChanceBonusFromHeart() { return (int)(currentHeart / 50f); } public bool IsHeartFull() { return currentHeart >= MaxHeart; } public int GetActiveBleedStacks() { return activeBleedStacks; } public void OnCurrentHeartChanged(float newValue) { NetworkcurrentHeart = newValue; if (Object.op_Implicit((Object)(object)body)) { body.MarkAllStatsDirty(); } } public void OnMaxHeartChanged(float newValue) { NetworkMaxHeart = newValue; } private void OnDefianceVisualsActiveChanged(bool newValue) { NetworkdefianceVisualsActive = newValue; if (newValue) { ApplyDefianceVisualsLocal(); } else { RemoveDefianceVisualsLocal(); } } private void OnDefiantStartupFreezeActiveChanged(bool newValue) { NetworkdefiantStartupFreezeActive = newValue; if (newValue) { ApplyDefiantStartupFreezeLocal(); } else { RemoveDefiantStartupFreezeLocal(); } } public void RequestSetDefianceVisualsActive(bool active) { if (NetworkServer.active) { SetDefianceVisualsActiveServer(active); } else { CallCmdRequestSetDefianceVisualsActive(active); } } [Command] private void CmdRequestSetDefianceVisualsActive(bool active) { SetDefianceVisualsActiveServer(active); } private void SetDefianceVisualsActiveServer(bool active) { if (NetworkServer.active && defianceVisualsActive != active) { NetworkdefianceVisualsActive = active; OnDefianceVisualsActiveChanged(active); } } public void RequestSetDefiantStartupFreezeActive(bool active) { if (NetworkServer.active) { SetDefiantStartupFreezeActiveServer(active); } else { CallCmdRequestSetDefiantStartupFreezeActive(active); } } [Command] private void CmdRequestSetDefiantStartupFreezeActive(bool active) { SetDefiantStartupFreezeActiveServer(active); } private void SetDefiantStartupFreezeActiveServer(bool active) { if (NetworkServer.active && defiantStartupFreezeActive != active) { NetworkdefiantStartupFreezeActive = active; OnDefiantStartupFreezeActiveChanged(active); } } public int GetNearbyEnemyCount() { return nearbyEnemyCount; } private void ScanNearbyEnemies() { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)body == (Object)null) { return; } Vector3 footPosition = body.footPosition; float num = 900f; int num2 = 0; int num3 = 0; foreach (CharacterBody readOnlyInstances in CharacterBody.readOnlyInstancesList) { Vector3 val = readOnlyInstances.footPosition - footPosition; if (((Vector3)(ref val)).sqrMagnitude <= num) { num2++; num3 += readOnlyInstances.GetBuffCount(Buffs.Bleeding); num3 += readOnlyInstances.GetBuffCount(Buffs.SuperBleed); } } nearbyEnemyCount = num2; activeBleedStacks = num3; } private void ApplyPassiveHeal() { //IL_0047: 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) if (activeBleedStacks > 0 && !((Object)(object)healthComponent == (Object)null) && healthComponent.alive) { float num = 1f * (float)activeBleedStacks; healthComponent.Heal(num, default(ProcChainMask), true); } } private bool CountsAsNearbyCharacter(CharacterBody otherBody) { if ((Object)(object)otherBody == (Object)null || (Object)(object)otherBody == (Object)(object)body || (Object)(object)otherBody.healthComponent == (Object)null || !otherBody.healthComponent.alive) { return false; } return true; } private void ApplyDefianceBleedEffect() { if (!Object.op_Implicit((Object)(object)defianceBleedEffect)) { GameObject val = LegacyResourcesAPI.Load("Prefabs/BleedEffect"); if (Object.op_Implicit((Object)(object)val)) { defianceBleedEffect = EffectManager.GetAndActivatePooledEffect(val, ((Component)this).transform, true); } } } private void RemoveDefianceBleedEffect() { if (Object.op_Implicit((Object)(object)defianceBleedEffect)) { if (defianceBleedEffect.OwningPool != null) { ((Component)defianceBleedEffect).transform.SetParent((Transform)null); defianceBleedEffect.ReturnToPool(); } else { Object.Destroy((Object)(object)((Component)defianceBleedEffect).gameObject); } defianceBleedEffect = null; } } private Transform FindModelChild(string childName) { ModelLocator component = ((Component)this).GetComponent(); if (!Object.op_Implicit((Object)(object)component) || !Object.op_Implicit((Object)(object)component.modelTransform)) { return null; } ChildLocator component2 = ((Component)component.modelTransform).GetComponent(); if (!Object.op_Implicit((Object)(object)component2)) { return null; } return component2.FindChild(childName); } private Animator GetModelAnimator() { ModelLocator component = ((Component)this).GetComponent(); if (!Object.op_Implicit((Object)(object)component) || !Object.op_Implicit((Object)(object)component.modelTransform)) { return null; } return ((Component)component.modelTransform).GetComponent(); } private Transform GetModelTransform() { ModelLocator component = ((Component)this).GetComponent(); return Object.op_Implicit((Object)(object)component) ? component.modelTransform : null; } private void ApplyDefianceVisualsLocal() { if (sustainedVisualActive) { return; } sustainedVisualActive = true; Animator modelAnimator = GetModelAnimator(); if (Object.op_Implicit((Object)(object)modelAnimator) && Object.op_Implicit((Object)(object)destealthMaterial) && persistentDefianceOverlay == null) { persistentDefianceOverlay = TemporaryOverlayManager.AddOverlay(((Component)this).gameObject); persistentDefianceOverlay.duration = 9999f; persistentDefianceOverlay.destroyComponentOnEnd = true; persistentDefianceOverlay.originalMaterial = destealthMaterial; persistentDefianceOverlay.inspectorCharacterModel = ((Component)modelAnimator).gameObject.GetComponent(); persistentDefianceOverlay.alphaCurve = AnimationCurve.Linear(0f, 1f, 1f, 1f); persistentDefianceOverlay.animateShaderAlpha = true; } if (Object.op_Implicit((Object)(object)SeamstressAssets.trailEffectHands)) { Transform val = FindModelChild("HandR"); Transform val2 = FindModelChild("HandL"); if (Object.op_Implicit((Object)(object)val)) { trailEffectR = Object.Instantiate(SeamstressAssets.trailEffectHands, val); } if (Object.op_Implicit((Object)(object)val2)) { trailEffectL = Object.Instantiate(SeamstressAssets.trailEffectHands, val2); } } } private void RemoveDefianceVisualsLocal() { if (sustainedVisualActive) { sustainedVisualActive = false; if (persistentDefianceOverlay != null) { persistentDefianceOverlay.Destroy(); persistentDefianceOverlay = null; } if (Object.op_Implicit((Object)(object)trailEffectR)) { Object.Destroy((Object)(object)trailEffectR); trailEffectR = null; } if (Object.op_Implicit((Object)(object)trailEffectL)) { Object.Destroy((Object)(object)trailEffectL); trailEffectL = null; } Transform modelTransform = GetModelTransform(); if (Object.op_Implicit((Object)(object)modelTransform) && Object.op_Implicit((Object)(object)destealthMaterial)) { TemporaryOverlayInstance val = TemporaryOverlayManager.AddOverlay(((Component)this).gameObject); val.duration = 1f; val.destroyComponentOnEnd = true; val.originalMaterial = destealthMaterial; val.inspectorCharacterModel = ((Component)modelTransform).GetComponent(); val.alphaCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f); val.animateShaderAlpha = true; } Util.PlaySound("Play_voidman_transform_return", ((Component)this).gameObject); } } private void ApplyDefiantStartupFreezeLocal() { //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Unknown result type (might be due to invalid IL or missing references) CharacterMotor val = (Object.op_Implicit((Object)(object)body) ? body.characterMotor : null); if (Object.op_Implicit((Object)(object)val)) { if (!startupMoveLockApplied) { cachedDisableAirControlUntilCollision = val.disableAirControlUntilCollision; cachedDisableAirControlUntilCollisionValid = true; val.disableAirControlUntilCollision = true; startupMoveLockApplied = true; } if (!startupAntiGravityApplied) { CharacterGravityParameters gravityParameters = val.gravityParameters; gravityParameters.channeledAntiGravityGranterCount++; val.gravityParameters = gravityParameters; startupAntiGravityApplied = true; } if (!startupFlightApplied) { CharacterFlightParameters flightParameters = val.flightParameters; flightParameters.channeledFlightGranterCount++; val.flightParameters = flightParameters; startupFlightApplied = true; } val.velocity = Vector3.zero; } if (Object.op_Implicit((Object)(object)body) && Object.op_Implicit((Object)(object)body.characterDirection)) { body.characterDirection.moveVector = Vector3.zero; } InputBankTest component = ((Component)this).GetComponent(); if (Object.op_Implicit((Object)(object)component)) { component.moveVector = Vector3.zero; } } private void RemoveDefiantStartupFreezeLocal() { //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) CharacterMotor val = (Object.op_Implicit((Object)(object)body) ? body.characterMotor : null); if (!Object.op_Implicit((Object)(object)val)) { startupMoveLockApplied = false; cachedDisableAirControlUntilCollisionValid = false; startupAntiGravityApplied = false; startupFlightApplied = false; return; } if (startupMoveLockApplied && cachedDisableAirControlUntilCollisionValid) { val.disableAirControlUntilCollision = cachedDisableAirControlUntilCollision; } startupMoveLockApplied = false; cachedDisableAirControlUntilCollisionValid = false; if (startupFlightApplied) { CharacterFlightParameters flightParameters = val.flightParameters; flightParameters.channeledFlightGranterCount--; val.flightParameters = flightParameters; startupFlightApplied = false; } if (startupAntiGravityApplied) { CharacterGravityParameters gravityParameters = val.gravityParameters; gravityParameters.channeledAntiGravityGranterCount--; val.gravityParameters = gravityParameters; startupAntiGravityApplied = false; } } private void UNetVersion() { } protected static void InvokeCmdCmdRequestSetDefianceVisualsActive(NetworkBehaviour obj, NetworkReader reader) { if (!NetworkServer.active) { Debug.LogError((object)"Command CmdRequestSetDefianceVisualsActive called on client."); } else { ((BleedingHeartComponent)(object)obj).CmdRequestSetDefianceVisualsActive(reader.ReadBoolean()); } } protected static void InvokeCmdCmdRequestSetDefiantStartupFreezeActive(NetworkBehaviour obj, NetworkReader reader) { if (!NetworkServer.active) { Debug.LogError((object)"Command CmdRequestSetDefiantStartupFreezeActive called on client."); } else { ((BleedingHeartComponent)(object)obj).CmdRequestSetDefiantStartupFreezeActive(reader.ReadBoolean()); } } public void CallCmdRequestSetDefianceVisualsActive(bool active) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected O, but got Unknown //IL_0058: Unknown result type (might be due to invalid IL or missing references) if (!NetworkClient.active) { Debug.LogError((object)"Command function CmdRequestSetDefianceVisualsActive called on server."); return; } if (((NetworkBehaviour)this).isServer) { CmdRequestSetDefianceVisualsActive(active); return; } NetworkWriter val = new NetworkWriter(); val.Write((short)0); val.Write((short)5); val.WritePackedUInt32((uint)kCmdCmdRequestSetDefianceVisualsActive); val.Write(((Component)this).GetComponent().netId); val.Write(active); ((NetworkBehaviour)this).SendCommandInternal(val, 0, "CmdRequestSetDefianceVisualsActive"); } public void CallCmdRequestSetDefiantStartupFreezeActive(bool active) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected O, but got Unknown //IL_0058: Unknown result type (might be due to invalid IL or missing references) if (!NetworkClient.active) { Debug.LogError((object)"Command function CmdRequestSetDefiantStartupFreezeActive called on server."); return; } if (((NetworkBehaviour)this).isServer) { CmdRequestSetDefiantStartupFreezeActive(active); return; } NetworkWriter val = new NetworkWriter(); val.Write((short)0); val.Write((short)5); val.WritePackedUInt32((uint)kCmdCmdRequestSetDefiantStartupFreezeActive); val.Write(((Component)this).GetComponent().netId); val.Write(active); ((NetworkBehaviour)this).SendCommandInternal(val, 0, "CmdRequestSetDefiantStartupFreezeActive"); } static BleedingHeartComponent() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Expected O, but got Unknown //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Expected O, but got Unknown kCmdCmdRequestSetDefianceVisualsActive = -1462699852; NetworkBehaviour.RegisterCommandDelegate(typeof(BleedingHeartComponent), kCmdCmdRequestSetDefianceVisualsActive, new CmdDelegate(InvokeCmdCmdRequestSetDefianceVisualsActive)); kCmdCmdRequestSetDefiantStartupFreezeActive = -625713975; NetworkBehaviour.RegisterCommandDelegate(typeof(BleedingHeartComponent), kCmdCmdRequestSetDefiantStartupFreezeActive, new CmdDelegate(InvokeCmdCmdRequestSetDefiantStartupFreezeActive)); NetworkCRC.RegisterBehaviour("BleedingHeartComponent", 0); } public override bool OnSerialize(NetworkWriter writer, bool forceAll) { if (forceAll) { writer.Write(MaxHeart); writer.Write(currentHeart); writer.Write(defianceVisualsActive); writer.Write(defiantStartupFreezeActive); return true; } bool flag = false; if ((((NetworkBehaviour)this).syncVarDirtyBits & 1) != 0) { if (!flag) { writer.WritePackedUInt32(((NetworkBehaviour)this).syncVarDirtyBits); flag = true; } writer.Write(MaxHeart); } if ((((NetworkBehaviour)this).syncVarDirtyBits & 2) != 0) { if (!flag) { writer.WritePackedUInt32(((NetworkBehaviour)this).syncVarDirtyBits); flag = true; } writer.Write(currentHeart); } if ((((NetworkBehaviour)this).syncVarDirtyBits & 4) != 0) { if (!flag) { writer.WritePackedUInt32(((NetworkBehaviour)this).syncVarDirtyBits); flag = true; } writer.Write(defianceVisualsActive); } if ((((NetworkBehaviour)this).syncVarDirtyBits & 8) != 0) { if (!flag) { writer.WritePackedUInt32(((NetworkBehaviour)this).syncVarDirtyBits); flag = true; } writer.Write(defiantStartupFreezeActive); } if (!flag) { writer.WritePackedUInt32(((NetworkBehaviour)this).syncVarDirtyBits); } return flag; } public override void OnDeserialize(NetworkReader reader, bool initialState) { if (initialState) { MaxHeart = reader.ReadSingle(); currentHeart = reader.ReadSingle(); defianceVisualsActive = reader.ReadBoolean(); defiantStartupFreezeActive = reader.ReadBoolean(); return; } int num = (int)reader.ReadPackedUInt32(); if ((num & 1) != 0) { OnMaxHeartChanged(reader.ReadSingle()); } if ((num & 2) != 0) { OnCurrentHeartChanged(reader.ReadSingle()); } if ((num & 4) != 0) { OnDefianceVisualsActiveChanged(reader.ReadBoolean()); } if ((num & 8) != 0) { OnDefiantStartupFreezeActiveChanged(reader.ReadBoolean()); } } } internal class DeathGateComponent : NetworkBehaviour, IOnIncomingDamageServerReceiver { private bool specialSkillAvailableServer; private NetworkIdentity networkId; private EntityStateMachine heartEsm; private CharacterBody body; private HealthComponent healthComponent; private SkillLocator skillLocator; private GenericSkill specialSkill; private BleedingHeartComponent bleedingHeartComponent; private static int kCmdCmdSpecialSkillAvailable; private static int kRpcRpcActivateSpecialSkill; private bool IsAuthority => Util.HasEffectiveAuthority(networkId); public void Awake() { networkId = ((Component)this).GetComponent(); body = ((Component)this).GetComponent(); skillLocator = ((Component)this).GetComponent(); healthComponent = ((Component)this).GetComponent(); heartEsm = EntityStateMachine.FindByCustomName(((Component)this).gameObject, "Special"); bleedingHeartComponent = ((Component)this).GetComponent(); } private void Start() { specialSkill = skillLocator.special; } private void FixedUpdate() { if (IsAuthority) { bool flag = specialSkill.stock > 0 && (Object)(object)specialSkill.skillDef == (Object)(object)HealingHeart.specialSkillDef; if (flag != specialSkillAvailableServer) { CallCmdSpecialSkillAvailable(flag); } specialSkillAvailableServer = flag; } } [Command] public void CmdSpecialSkillAvailable(bool value) { specialSkillAvailableServer = value; } [ClientRpc] public void RpcActivateSpecialSkill() { if (IsAuthority) { heartEsm.SetNextState((EntityState)(object)new DefiantHeart()); } } public void OnIncomingDamageServer(DamageInfo damageInfo) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) if (!body.HasBuff(SeamstressVariantBuffs.defianceBuff) && damageInfo.damage >= healthComponent.combinedHealth && DamageTypeCombo.op_Implicit(damageInfo.damageType & DamageTypeCombo.op_Implicit((DamageType)1)) == 0 && !((Object)(object)specialSkill.skillDef != (Object)(object)HealingHeart.specialSkillDef) && specialSkillAvailableServer && !(bleedingHeartComponent.GetHeart() <= 0f)) { damageInfo.damageType |= DamageTypeCombo.op_Implicit((DamageType)1); body.AddBuff(SeamstressVariantBuffs.defianceBuff); CallRpcActivateSpecialSkill(); } } private void UNetVersion() { } protected static void InvokeCmdCmdSpecialSkillAvailable(NetworkBehaviour obj, NetworkReader reader) { if (!NetworkServer.active) { Debug.LogError((object)"Command CmdSpecialSkillAvailable called on client."); } else { ((DeathGateComponent)(object)obj).CmdSpecialSkillAvailable(reader.ReadBoolean()); } } public void CallCmdSpecialSkillAvailable(bool value) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected O, but got Unknown //IL_0058: Unknown result type (might be due to invalid IL or missing references) if (!NetworkClient.active) { Debug.LogError((object)"Command function CmdSpecialSkillAvailable called on server."); return; } if (((NetworkBehaviour)this).isServer) { CmdSpecialSkillAvailable(value); return; } NetworkWriter val = new NetworkWriter(); val.Write((short)0); val.Write((short)5); val.WritePackedUInt32((uint)kCmdCmdSpecialSkillAvailable); val.Write(((Component)this).GetComponent().netId); val.Write(value); ((NetworkBehaviour)this).SendCommandInternal(val, 0, "CmdSpecialSkillAvailable"); } protected static void InvokeRpcRpcActivateSpecialSkill(NetworkBehaviour obj, NetworkReader reader) { if (!NetworkClient.active) { Debug.LogError((object)"RPC RpcActivateSpecialSkill called on server."); } else { ((DeathGateComponent)(object)obj).RpcActivateSpecialSkill(); } } public void CallRpcActivateSpecialSkill() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0041: Unknown result type (might be due to invalid IL or missing references) if (!NetworkServer.active) { Debug.LogError((object)"RPC Function RpcActivateSpecialSkill called on client."); return; } NetworkWriter val = new NetworkWriter(); val.Write((short)0); val.Write((short)2); val.WritePackedUInt32((uint)kRpcRpcActivateSpecialSkill); val.Write(((Component)this).GetComponent().netId); ((NetworkBehaviour)this).SendRPCInternal(val, 0, "RpcActivateSpecialSkill"); } static DeathGateComponent() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Expected O, but got Unknown //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Expected O, but got Unknown kCmdCmdSpecialSkillAvailable = 1996683635; NetworkBehaviour.RegisterCommandDelegate(typeof(DeathGateComponent), kCmdCmdSpecialSkillAvailable, new CmdDelegate(InvokeCmdCmdSpecialSkillAvailable)); kRpcRpcActivateSpecialSkill = 291862879; NetworkBehaviour.RegisterRpcDelegate(typeof(DeathGateComponent), kRpcRpcActivateSpecialSkill, new CmdDelegate(InvokeRpcRpcActivateSpecialSkill)); NetworkCRC.RegisterBehaviour("DeathGateComponent", 0); } public override bool OnSerialize(NetworkWriter writer, bool forceAll) { bool result = default(bool); return result; } public override void OnDeserialize(NetworkReader reader, bool initialState) { } } internal class DefianceBenefitsController : NetworkBehaviour { private CharacterBody characterBody; private SetStateOnHurt setStateOnHurt; private static readonly BodyFlags DefianceBodyFlags = (BodyFlags)81920; private int previousBuffCount = 0; private BodyFlags appliedBodyFlags; private bool stateImmunitiesApplied; private const int MaxFervourStacks = 20; private float fervourAccumulator = 0f; [SyncVar(hook = "OnFervourStacksChanged")] private int fervourStacks = 0; private bool originalCanBeHitStunned; private bool originalCanBeStunned; private bool originalCanBeFrozen; private bool originalCanBeTaunted; public bool IsDefianceActive => previousBuffCount > 0; public int FervourStacks => fervourStacks; public int NetworkfervourStacks { get { return fervourStacks; } [param: In] set { ref int reference = ref fervourStacks; if (NetworkServer.localClientActive && !((NetworkBehaviour)this).syncVarHookGuard) { ((NetworkBehaviour)this).syncVarHookGuard = true; OnFervourStacksChanged(value); ((NetworkBehaviour)this).syncVarHookGuard = false; } ((NetworkBehaviour)this).SetSyncVar(value, ref reference, 1u); } } private void Awake() { characterBody = ((Component)this).GetComponent(); setStateOnHurt = ((Component)this).GetComponent(); if ((Object)(object)characterBody == (Object)null) { Log.Error("DefianceBenefitsController: CharacterBody not found on this GameObject"); ((Behaviour)this).enabled = false; return; } previousBuffCount = characterBody.GetBuffCount(SeamstressVariantBuffs.defianceBuff); if (previousBuffCount > 0) { Log.Debug("DefianceBenefitsController: Detected existing Defiance buff on Awake, applying benefits"); ApplyDefianceBenefits(); } } private void Update() { if ((Object)(object)characterBody == (Object)null) { return; } int buffCount = characterBody.GetBuffCount(SeamstressVariantBuffs.defianceBuff); if (buffCount != previousBuffCount) { if (buffCount > 0) { ApplyDefianceBenefits(); } else if (previousBuffCount > 0) { RestoreDefianceBenefits(); } previousBuffCount = buffCount; } if (buffCount > 0 && NetworkServer.active) { RemoveDebuffs(); TickFervour(); } } private void OnDisable() { if ((Object)(object)characterBody != (Object)null) { RestoreDefianceBenefits(); } previousBuffCount = 0; } private void ApplyDefianceBenefits() { ApplyDefianceFlags(); ApplyStateImmunities(); if (NetworkServer.active) { RemoveDebuffs(); fervourAccumulator = 0f; NetworkfervourStacks = 0; characterBody.MarkAllStatsDirty(); } } private void RestoreDefianceBenefits() { RestoreStateImmunities(); RestoreDefianceFlags(); fervourAccumulator = 0f; NetworkfervourStacks = 0; characterBody.MarkAllStatsDirty(); } private void TickFervour() { if (fervourStacks < 20) { fervourAccumulator += Time.deltaTime; bool flag = false; while (fervourAccumulator >= 1f && fervourStacks < 20) { fervourAccumulator -= 1f; NetworkfervourStacks = fervourStacks + 1; flag = true; } if (flag) { characterBody.MarkAllStatsDirty(); } } } private void ApplyDefianceFlags() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) appliedBodyFlags = (BodyFlags)(DefianceBodyFlags & ~characterBody.bodyFlags); CharacterBody obj = characterBody; obj.bodyFlags |= DefianceBodyFlags; } private void RestoreDefianceFlags() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Invalid comparison between Unknown and I4 //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001e: 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_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) if ((int)appliedBodyFlags != 0) { CharacterBody obj = characterBody; obj.bodyFlags &= ~appliedBodyFlags; appliedBodyFlags = (BodyFlags)0; } } private void ApplyStateImmunities() { if (!((Object)(object)setStateOnHurt == (Object)null) && !stateImmunitiesApplied) { originalCanBeHitStunned = setStateOnHurt.canBeHitStunned; originalCanBeStunned = setStateOnHurt.canBeStunned; originalCanBeFrozen = setStateOnHurt.canBeFrozen; originalCanBeTaunted = setStateOnHurt.canBeTaunted; setStateOnHurt.canBeHitStunned = false; setStateOnHurt.canBeStunned = false; setStateOnHurt.canBeFrozen = false; setStateOnHurt.canBeTaunted = false; setStateOnHurt.Cleanse(); stateImmunitiesApplied = true; } } private void RestoreStateImmunities() { if (!((Object)(object)setStateOnHurt == (Object)null) && stateImmunitiesApplied) { setStateOnHurt.canBeHitStunned = originalCanBeHitStunned; setStateOnHurt.canBeStunned = originalCanBeStunned; setStateOnHurt.canBeFrozen = originalCanBeFrozen; setStateOnHurt.canBeTaunted = originalCanBeTaunted; stateImmunitiesApplied = false; } } private void OnFervourStacksChanged(int newStacks) { NetworkfervourStacks = newStacks; } private void RemoveDebuffs() { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Invalid comparison between Unknown and I4 //IL_004d: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)characterBody == (Object)null) { return; } BuffIndex[] debuffBuffIndices = BuffCatalog.debuffBuffIndices; foreach (BuffIndex val in debuffBuffIndices) { if (characterBody.HasBuff(val) && (int)val != 236) { characterBody.SetBuffCount(val, 0); } } } private void OnDestroy() { if ((Object)(object)characterBody != (Object)null) { RestoreDefianceBenefits(); } } private void UNetVersion() { } public override bool OnSerialize(NetworkWriter writer, bool forceAll) { if (forceAll) { writer.WritePackedUInt32((uint)fervourStacks); return true; } bool flag = false; if ((((NetworkBehaviour)this).syncVarDirtyBits & 1) != 0) { if (!flag) { writer.WritePackedUInt32(((NetworkBehaviour)this).syncVarDirtyBits); flag = true; } writer.WritePackedUInt32((uint)fervourStacks); } if (!flag) { writer.WritePackedUInt32(((NetworkBehaviour)this).syncVarDirtyBits); } return flag; } public override void OnDeserialize(NetworkReader reader, bool initialState) { if (initialState) { fervourStacks = (int)reader.ReadPackedUInt32(); return; } int num = (int)reader.ReadPackedUInt32(); if ((num & 1) != 0) { OnFervourStacksChanged((int)reader.ReadPackedUInt32()); } } } internal class HeartOverlayController : NetworkBehaviour { private sealed class OverlayThemeCache { public GameObject instance; public Image[] filledImages; public TextMeshProUGUI[] texts; public ChildLocator childLocator; public Animator animator; } private BleedingHeartComponent heartComponent; private OverlayController overlayController; private readonly List fillUiList = new List(); private readonly List textList = new List(); private readonly List overlayThemeCaches = new List(); private static GameObject overlayPrefab; private static string overlayChildLocatorEntry; private static bool overlayAssetsLoaded = false; private static bool EnableThemePerfLogging = false; private const float ThemePerfLogInterval = 10f; private static readonly int overlayValueParamHash = Animator.StringToHash("corruption"); private static readonly int overlayDrainStateParamHash = Animator.StringToHash("isCorrupted"); private static readonly Color overlayWineColor = Color32.op_Implicit(new Color32((byte)196, (byte)66, (byte)82, byte.MaxValue)); private static readonly Color overlayDrainColor = Color.red; private int themeApplyCallCount; private float themeApplyTotalMs; private float themeApplyMaxMs; private float nextThemePerfLogTime; [SyncVar(hook = "OnHeartDrainActiveChanged")] private bool heartDrainActive; public bool NetworkheartDrainActive { get { return heartDrainActive; } [param: In] set { ref bool reference = ref heartDrainActive; if (NetworkServer.localClientActive && !((NetworkBehaviour)this).syncVarHookGuard) { ((NetworkBehaviour)this).syncVarHookGuard = true; OnHeartDrainActiveChanged(value); ((NetworkBehaviour)this).syncVarHookGuard = false; } ((NetworkBehaviour)this).SetSyncVar(value, ref reference, 1u); } } private void Awake() { heartComponent = ((Component)this).GetComponent(); } private void Start() { EnsureOverlayAssetsLoaded(); RegisterOverlay(); nextThemePerfLogTime = Time.unscaledTime + 10f; } private void OnHeartDrainActiveChanged(bool newValue) { NetworkheartDrainActive = newValue; } internal void SetHeartDrainActive(bool active) { if (heartDrainActive != active) { NetworkheartDrainActive = active; ApplyThemeToOverlayInstances(); ApplyOverlayStateToTrackedInstances(); } } private static void EnsureOverlayAssetsLoaded() { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) if (overlayAssetsLoaded) { return; } GameObject val = Addressables.LoadAssetAsync((object)"RoR2/DLC1/VoidSurvivor/VoidSurvivorBody.prefab").WaitForCompletion(); if ((Object)(object)val != (Object)null) { VoidSurvivorController component = val.GetComponent(); if ((Object)(object)component != (Object)null) { overlayPrefab = CreateOverlayClone(component.overlayPrefab); overlayChildLocatorEntry = component.overlayChildLocatorEntry; overlayAssetsLoaded = (Object)(object)overlayPrefab != (Object)null; } } } private static GameObject CreateOverlayClone(GameObject sourceOverlayPrefab) { if ((Object)(object)sourceOverlayPrefab == (Object)null) { return null; } GameObject val = Object.Instantiate(sourceOverlayPrefab); ((Object)val).name = "SeamstressHeartOverlayPrefab"; val.SetActive(false); Object.DontDestroyOnLoad((Object)(object)val); ApplyOverlayTheme(val); return val; } private static void ApplyOverlayTheme(GameObject overlayRoot) { //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Invalid comparison between Unknown and I4 //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) Image[] componentsInChildren = overlayRoot.GetComponentsInChildren(true); foreach (Image val in componentsInChildren) { if ((int)val.type == 3) { Color color = ((Graphic)val).color; ((Graphic)val).color = new Color(overlayWineColor.r, overlayWineColor.g, overlayWineColor.b, color.a); } } TextMeshProUGUI[] componentsInChildren2 = overlayRoot.GetComponentsInChildren(true); foreach (TextMeshProUGUI val2 in componentsInChildren2) { if ((Object)(object)val2 != (Object)null) { Color color2 = ((Graphic)val2).color; ((Graphic)val2).color = new Color(overlayWineColor.r, overlayWineColor.g, overlayWineColor.b, color2.a); } } } private void RegisterOverlay() { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)overlayPrefab == (Object)null) { return; } OverlayCreationParams val = new OverlayCreationParams { prefab = overlayPrefab, childLocatorEntry = overlayChildLocatorEntry }; overlayController = HudOverlayManager.AddOverlay(((Component)this).gameObject, val); overlayController.onInstanceAdded += OnOverlayInstanceAdded; overlayController.onInstanceRemove += OnOverlayInstanceRemoved; foreach (GameObject instances in overlayController.instancesList) { OnOverlayInstanceAdded(overlayController, instances); } } private void OnDisable() { if (overlayController != null) { overlayController.onInstanceAdded -= OnOverlayInstanceAdded; overlayController.onInstanceRemove -= OnOverlayInstanceRemoved; fillUiList.Clear(); textList.Clear(); overlayThemeCaches.Clear(); HudOverlayManager.RemoveOverlay(overlayController); overlayController = null; } NetworkheartDrainActive = false; } private void Update() { if ((Object)(object)heartComponent == (Object)null) { return; } EnsureTrackedOverlayInstances(); float maxHeart = heartComponent.GetMaxHeart(); float heart = heartComponent.GetHeart(); float tValue = ((maxHeart > 0f) ? (heart / maxHeart) : 0f); foreach (ImageFillController fillUi in fillUiList) { fillUi.SetTValue(tValue); } int num = Mathf.FloorToInt(heart); foreach (TextMeshProUGUI text in textList) { ((TMP_Text)text).SetText(num.ToString(), true); } ApplyOverlayStateToTrackedInstances(); } private void LateUpdate() { if (!((Object)(object)heartComponent == (Object)null)) { if (EnableThemePerfLogging) { Stopwatch stopwatch = Stopwatch.StartNew(); stopwatch.Stop(); RecordThemePerfSample((float)stopwatch.Elapsed.TotalMilliseconds); } if (EnableThemePerfLogging && Time.unscaledTime >= nextThemePerfLogTime) { nextThemePerfLogTime = Time.unscaledTime + 10f; } } } private void OnOverlayInstanceAdded(OverlayController controller, GameObject instance) { //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Invalid comparison between Unknown and I4 ImageFillController component = instance.GetComponent(); if ((Object)(object)component != (Object)null && !fillUiList.Contains(component)) { fillUiList.Add(component); } TextMeshProUGUI componentInChildren = instance.GetComponentInChildren(); if ((Object)(object)componentInChildren != (Object)null && !textList.Contains(componentInChildren)) { textList.Add(componentInChildren); } if (FindThemeCacheIndex(instance) == -1) { Image[] componentsInChildren = instance.GetComponentsInChildren(true); List list = new List(); Image[] array = componentsInChildren; foreach (Image val in array) { if ((Object)(object)val != (Object)null && (int)val.type == 3) { list.Add(val); } } overlayThemeCaches.Add(new OverlayThemeCache { instance = instance, filledImages = list.ToArray(), texts = instance.GetComponentsInChildren(true), childLocator = instance.GetComponent(), animator = instance.GetComponent() }); } ApplyThemeToOverlayInstance(instance); ApplyOverlayStateToTrackedInstances(); } private void OnOverlayInstanceRemoved(OverlayController controller, GameObject instance) { ImageFillController component = instance.GetComponent(); if ((Object)(object)component != (Object)null) { fillUiList.Remove(component); } TextMeshProUGUI componentInChildren = instance.GetComponentInChildren(); if ((Object)(object)componentInChildren != (Object)null) { textList.Remove(componentInChildren); } int num = FindThemeCacheIndex(instance); if (num >= 0) { overlayThemeCaches.RemoveAt(num); } } private void ApplyThemeToOverlayInstances() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) Color val = (heartDrainActive ? overlayDrainColor : overlayWineColor); for (int num = overlayThemeCaches.Count - 1; num >= 0; num--) { OverlayThemeCache overlayThemeCache = overlayThemeCaches[num]; if ((Object)(object)overlayThemeCache.instance == (Object)null) { overlayThemeCaches.RemoveAt(num); } else { ApplyThemeToOverlayCache(overlayThemeCache, val, val); } } } private void EnsureTrackedOverlayInstances() { if (overlayController == null) { return; } foreach (GameObject instances in overlayController.instancesList) { if ((Object)(object)instances != (Object)null && FindThemeCacheIndex(instances) == -1) { OnOverlayInstanceAdded(overlayController, instances); } } } private int FindThemeCacheIndex(GameObject overlayInstance) { for (int i = 0; i < overlayThemeCaches.Count; i++) { if ((Object)(object)overlayThemeCaches[i].instance == (Object)(object)overlayInstance) { return i; } } return -1; } private void ApplyThemeToOverlayInstance(GameObject instance) { //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Invalid comparison between Unknown and I4 //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) Image[] componentsInChildren = instance.GetComponentsInChildren(true); List list = new List(); Image[] array = componentsInChildren; foreach (Image val in array) { if ((Object)(object)val != (Object)null && (int)val.type == 3) { list.Add(val); } } OverlayThemeCache cache = new OverlayThemeCache { instance = instance, filledImages = list.ToArray(), texts = instance.GetComponentsInChildren(true) }; Color val2 = (heartDrainActive ? overlayDrainColor : overlayWineColor); ApplyThemeToOverlayCache(cache, val2, val2); } private unsafe static void ApplyThemeToOverlayCache(OverlayThemeCache cache, Color fillTargetColor, Color textTargetColor) { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) Image[] filledImages = cache.filledImages; Color val2 = default(Color); foreach (Image val in filledImages) { if (!((Object)(object)val == (Object)null)) { Color color = ((Graphic)val).color; ((Color)(ref val2))..ctor(fillTargetColor.r, fillTargetColor.g, fillTargetColor.b, color.a); if (color != val2) { ((Graphic)val).color = val2; } ((Graphic)val).canvasRenderer.SetColor(val2); } } TextMeshProUGUI[] texts = cache.texts; Color val4 = default(Color); Color32 val5 = default(Color32); foreach (TextMeshProUGUI val3 in texts) { if (!((Object)(object)val3 == (Object)null)) { Color color2 = ((Graphic)val3).color; ((Color)(ref val4))..ctor(textTargetColor.r, textTargetColor.g, textTargetColor.b, color2.a); if (color2 != val4) { ((Graphic)val3).color = val4; } Color32 faceColor = ((TMP_Text)val3).faceColor; ((Color32)(ref val5))..ctor((byte)Mathf.RoundToInt(textTargetColor.r * 255f), (byte)Mathf.RoundToInt(textTargetColor.g * 255f), (byte)Mathf.RoundToInt(textTargetColor.b * 255f), faceColor.a); if (!((object)(*(Color32*)(&faceColor))/*cast due to .constrained prefix*/).Equals((object?)val5)) { ((TMP_Text)val3).faceColor = val5; } val3.canvasRenderer.SetColor(val4); } } } private void ApplyOverlayStateToTrackedInstances() { float num = (((Object)(object)heartComponent != (Object)null) ? heartComponent.GetMaxHeart() : 0f); float num2 = (((Object)(object)heartComponent != (Object)null) ? heartComponent.GetHeart() : 0f); float normalizedHeart = ((num > 0f) ? (num2 / num) : 0f); for (int num3 = overlayThemeCaches.Count - 1; num3 >= 0; num3--) { OverlayThemeCache overlayThemeCache = overlayThemeCaches[num3]; if ((Object)(object)overlayThemeCache.instance == (Object)null) { overlayThemeCaches.RemoveAt(num3); } else { ApplyOverlayState(overlayThemeCache, num2, normalizedHeart); } } } private void ApplyOverlayState(OverlayThemeCache cache, float currentHeart, float normalizedHeart) { //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)cache.childLocator != (Object)null) { Transform val = cache.childLocator.FindChild("CorruptionThreshold"); if ((Object)(object)val != (Object)null) { val.rotation = Quaternion.Euler(0f, 0f, normalizedHeart * -360f); } Transform val2 = cache.childLocator.FindChild("MinCorruptionThreshold"); if ((Object)(object)val2 != (Object)null) { val2.rotation = Quaternion.identity; } } if ((Object)(object)cache.animator != (Object)null) { cache.animator.SetFloat(overlayValueParamHash, currentHeart); cache.animator.SetBool(overlayDrainStateParamHash, heartDrainActive); } } private void RecordThemePerfSample(float elapsedMs) { themeApplyCallCount++; themeApplyTotalMs += elapsedMs; if (elapsedMs > themeApplyMaxMs) { themeApplyMaxMs = elapsedMs; } } private void FlushThemePerfLog() { if (themeApplyCallCount > 0) { float num = themeApplyTotalMs / (float)themeApplyCallCount; themeApplyCallCount = 0; themeApplyTotalMs = 0f; themeApplyMaxMs = 0f; } } private void UNetVersion() { } public override bool OnSerialize(NetworkWriter writer, bool forceAll) { if (forceAll) { writer.Write(heartDrainActive); return true; } bool flag = false; if ((((NetworkBehaviour)this).syncVarDirtyBits & 1) != 0) { if (!flag) { writer.WritePackedUInt32(((NetworkBehaviour)this).syncVarDirtyBits); flag = true; } writer.Write(heartDrainActive); } if (!flag) { writer.WritePackedUInt32(((NetworkBehaviour)this).syncVarDirtyBits); } return flag; } public override void OnDeserialize(NetworkReader reader, bool initialState) { if (initialState) { heartDrainActive = reader.ReadBoolean(); return; } int num = (int)reader.ReadPackedUInt32(); if ((num & 1) != 0) { OnHeartDrainActiveChanged(reader.ReadBoolean()); } } } public class ScissorController : NetworkBehaviour { private CharacterBody characterBody; private GameObject scissorLModel; private GameObject scissorRModel; [SyncVar(hook = "OnHasLeftScissorChanged")] private bool hasLeftScissor; [SyncVar(hook = "OnHasRightScissorChanged")] private bool hasRightScissor; private int _lastVisualStock = -1; private static int kCmdCmdRequestScissorReconcile; private static int kCmdCmdRequestScissorFired; public bool HasLeftScissor => hasLeftScissor; public bool HasRightScissor => hasRightScissor; public bool NetworkhasLeftScissor { get { return hasLeftScissor; } [param: In] set { ref bool reference = ref hasLeftScissor; if (NetworkServer.localClientActive && !((NetworkBehaviour)this).syncVarHookGuard) { ((NetworkBehaviour)this).syncVarHookGuard = true; OnHasLeftScissorChanged(value); ((NetworkBehaviour)this).syncVarHookGuard = false; } ((NetworkBehaviour)this).SetSyncVar(value, ref reference, 1u); } } public bool NetworkhasRightScissor { get { return hasRightScissor; } [param: In] set { ref bool reference = ref hasRightScissor; if (NetworkServer.localClientActive && !((NetworkBehaviour)this).syncVarHookGuard) { ((NetworkBehaviour)this).syncVarHookGuard = true; OnHasRightScissorChanged(value); ((NetworkBehaviour)this).syncVarHookGuard = false; } ((NetworkBehaviour)this).SetSyncVar(value, ref reference, 2u); } } private void Awake() { characterBody = ((Component)this).GetComponent(); } private void Start() { TryCacheScissorModels(); if (NetworkServer.active) { SetLeftScissor(active: true); SetRightScissor(active: true); } ApplyVisualState(); } private void FixedUpdate() { if ((Object)(object)characterBody == (Object)null) { return; } GenericSkill val = characterBody.skillLocator?.secondary; if ((Object)(object)val == (Object)null) { return; } int num = Mathf.Clamp(val.stock, 0, 2); if (num != _lastVisualStock) { if (NetworkServer.active) { ReconcileScissorsFromStock(num); } else if (Util.HasEffectiveAuthority(((Component)this).gameObject)) { CallCmdRequestScissorReconcile(num); } ApplyVisualState(); _lastVisualStock = num; } } private void ReconcileScissorsFromStock(int visualStock) { bool flag = visualStock >= 2; bool flag2 = visualStock >= 1; if (hasLeftScissor != flag) { SetLeftScissor(flag); } if (hasRightScissor != flag2) { SetRightScissor(flag2); } } private void TryCacheScissorModels() { if ((Object)(object)scissorLModel != (Object)null && (Object)(object)scissorRModel != (Object)null) { return; } ModelLocator component = ((Component)this).GetComponent(); if (!Object.op_Implicit((Object)(object)component) || !Object.op_Implicit((Object)(object)component.modelTransform)) { return; } ChildLocator component2 = ((Component)component.modelTransform).GetComponent(); if (!Object.op_Implicit((Object)(object)component2)) { return; } if ((Object)(object)scissorLModel == (Object)null) { Transform val = component2.FindChild("ScissorLModel"); if (Object.op_Implicit((Object)(object)val)) { scissorLModel = ((Component)val).gameObject; } } if ((Object)(object)scissorRModel == (Object)null) { Transform val2 = component2.FindChild("ScissorRModel"); if (Object.op_Implicit((Object)(object)val2)) { scissorRModel = ((Component)val2).gameObject; } } } private void ApplyVisualState() { SetScissorVisual(scissorLModel, hasLeftScissor); SetScissorVisual(scissorRModel, hasRightScissor); } private static void SetScissorVisual(GameObject model, bool active) { if (!((Object)(object)model == (Object)null) && model.activeSelf != active) { model.SetActive(active); } } private void OnHasLeftScissorChanged(bool newValue) { NetworkhasLeftScissor = newValue; TryCacheScissorModels(); SetScissorVisual(scissorLModel, newValue); } private void OnHasRightScissorChanged(bool newValue) { NetworkhasRightScissor = newValue; TryCacheScissorModels(); SetScissorVisual(scissorRModel, newValue); } public void OnScissorFired(bool isLeft) { NotifyScissorFired(isLeft); } public void NotifyScissorFired(bool isLeft) { if (NetworkServer.active) { ApplyScissorFiredServer(isLeft); } else { CallCmdRequestScissorFired(isLeft); } } [Command] private void CmdRequestScissorReconcile(int visualStock) { ReconcileScissorsFromStock(Mathf.Clamp(visualStock, 0, 2)); } [Command] private void CmdRequestScissorFired(bool isLeft) { ApplyScissorFiredServer(isLeft); } private void ApplyScissorFiredServer(bool isLeft) { if (NetworkServer.active && !(isLeft ? (!hasLeftScissor) : (!hasRightScissor))) { if (isLeft) { SetLeftScissor(active: false); } else { SetRightScissor(active: false); } } } public void SetLeftScissor(bool active) { if (!NetworkServer.active || (Object)(object)characterBody == (Object)null || (Object)(object)SeamstressVariantBuffs.scissorLeftBuff == (Object)null) { return; } bool flag = hasLeftScissor; NetworkhasLeftScissor = active; OnHasLeftScissorChanged(active); bool flag2 = characterBody.HasBuff(SeamstressVariantBuffs.scissorLeftBuff); if (active) { if (!flag2) { characterBody.AddBuff(SeamstressVariantBuffs.scissorLeftBuff); } } else if (flag2) { characterBody.RemoveBuff(SeamstressVariantBuffs.scissorLeftBuff); } if (flag == active) { } } public void SetRightScissor(bool active) { if (!NetworkServer.active || (Object)(object)characterBody == (Object)null || (Object)(object)SeamstressVariantBuffs.scissorRightBuff == (Object)null) { return; } bool flag = hasRightScissor; NetworkhasRightScissor = active; OnHasRightScissorChanged(active); bool flag2 = characterBody.HasBuff(SeamstressVariantBuffs.scissorRightBuff); if (active) { if (!flag2) { characterBody.AddBuff(SeamstressVariantBuffs.scissorRightBuff); } } else if (flag2) { characterBody.RemoveBuff(SeamstressVariantBuffs.scissorRightBuff); } if (flag == active) { } } private void UNetVersion() { } protected static void InvokeCmdCmdRequestScissorReconcile(NetworkBehaviour obj, NetworkReader reader) { if (!NetworkServer.active) { Debug.LogError((object)"Command CmdRequestScissorReconcile called on client."); } else { ((ScissorController)(object)obj).CmdRequestScissorReconcile((int)reader.ReadPackedUInt32()); } } protected static void InvokeCmdCmdRequestScissorFired(NetworkBehaviour obj, NetworkReader reader) { if (!NetworkServer.active) { Debug.LogError((object)"Command CmdRequestScissorFired called on client."); } else { ((ScissorController)(object)obj).CmdRequestScissorFired(reader.ReadBoolean()); } } public void CallCmdRequestScissorReconcile(int visualStock) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected O, but got Unknown //IL_0058: Unknown result type (might be due to invalid IL or missing references) if (!NetworkClient.active) { Debug.LogError((object)"Command function CmdRequestScissorReconcile called on server."); return; } if (((NetworkBehaviour)this).isServer) { CmdRequestScissorReconcile(visualStock); return; } NetworkWriter val = new NetworkWriter(); val.Write((short)0); val.Write((short)5); val.WritePackedUInt32((uint)kCmdCmdRequestScissorReconcile); val.Write(((Component)this).GetComponent().netId); val.WritePackedUInt32((uint)visualStock); ((NetworkBehaviour)this).SendCommandInternal(val, 0, "CmdRequestScissorReconcile"); } public void CallCmdRequestScissorFired(bool isLeft) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected O, but got Unknown //IL_0058: Unknown result type (might be due to invalid IL or missing references) if (!NetworkClient.active) { Debug.LogError((object)"Command function CmdRequestScissorFired called on server."); return; } if (((NetworkBehaviour)this).isServer) { CmdRequestScissorFired(isLeft); return; } NetworkWriter val = new NetworkWriter(); val.Write((short)0); val.Write((short)5); val.WritePackedUInt32((uint)kCmdCmdRequestScissorFired); val.Write(((Component)this).GetComponent().netId); val.Write(isLeft); ((NetworkBehaviour)this).SendCommandInternal(val, 0, "CmdRequestScissorFired"); } static ScissorController() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Expected O, but got Unknown //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Expected O, but got Unknown kCmdCmdRequestScissorReconcile = -769684823; NetworkBehaviour.RegisterCommandDelegate(typeof(ScissorController), kCmdCmdRequestScissorReconcile, new CmdDelegate(InvokeCmdCmdRequestScissorReconcile)); kCmdCmdRequestScissorFired = 1214420425; NetworkBehaviour.RegisterCommandDelegate(typeof(ScissorController), kCmdCmdRequestScissorFired, new CmdDelegate(InvokeCmdCmdRequestScissorFired)); NetworkCRC.RegisterBehaviour("ScissorController", 0); } public override bool OnSerialize(NetworkWriter writer, bool forceAll) { if (forceAll) { writer.Write(hasLeftScissor); writer.Write(hasRightScissor); return true; } bool flag = false; if ((((NetworkBehaviour)this).syncVarDirtyBits & 1) != 0) { if (!flag) { writer.WritePackedUInt32(((NetworkBehaviour)this).syncVarDirtyBits); flag = true; } writer.Write(hasLeftScissor); } if ((((NetworkBehaviour)this).syncVarDirtyBits & 2) != 0) { if (!flag) { writer.WritePackedUInt32(((NetworkBehaviour)this).syncVarDirtyBits); flag = true; } writer.Write(hasRightScissor); } if (!flag) { writer.WritePackedUInt32(((NetworkBehaviour)this).syncVarDirtyBits); } return flag; } public override void OnDeserialize(NetworkReader reader, bool initialState) { if (initialState) { hasLeftScissor = reader.ReadBoolean(); hasRightScissor = reader.ReadBoolean(); return; } int num = (int)reader.ReadPackedUInt32(); if ((num & 1) != 0) { OnHasLeftScissorChanged(reader.ReadBoolean()); } if ((num & 2) != 0) { OnHasRightScissorChanged(reader.ReadBoolean()); } } } public class SeamstressTracker : MonoBehaviour { public float maxTrackingDistance = 60f; public float maxTrackingAngle = 30f; public float trackerUpdateFrequency = 10f; private CharacterBody _body; private TeamComponent _teamComponent; private InputBankTest _inputBank; private HurtBox _trackingTarget; private Indicator _indicator; private float _trackerUpdateStopwatch; private readonly BullseyeSearch _search = new BullseyeSearch(); private static GameObject _trackingPrefab; private void Awake() { //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Expected O, but got Unknown _body = ((Component)this).GetComponent(); _teamComponent = ((Component)this).GetComponent(); _inputBank = ((Component)this).GetComponent(); if ((Object)(object)_trackingPrefab == (Object)null) { _trackingPrefab = SeamstressAssets.telekinesisTracker; if ((Object)(object)_trackingPrefab == (Object)null) { _trackingPrefab = LegacyResourcesAPI.Load("Prefabs/HuntressTrackingIndicator"); Log.Warning("SeamstressTracker: SeamstressAssets.telekinesisTracker was null, falling back to HuntressTrackingIndicator."); } } _indicator = new Indicator(((Component)this).gameObject, _trackingPrefab); } private void OnEnable() { _indicator.active = true; } private void OnDisable() { _indicator.active = false; } private void FixedUpdate() { _trackerUpdateStopwatch += Time.fixedDeltaTime; if (_trackerUpdateStopwatch >= 1f / trackerUpdateFrequency) { _trackerUpdateStopwatch -= 1f / trackerUpdateFrequency; SearchForTarget(); } _indicator.targetTransform = (((Object)(object)_trackingTarget != (Object)null) ? ((Component)_trackingTarget).transform : null); } private void SearchForTarget() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) Ray aimRay = GetAimRay(); _search.searchOrigin = ((Ray)(ref aimRay)).origin; _search.searchDirection = ((Ray)(ref aimRay)).direction; _search.maxDistanceFilter = maxTrackingDistance; _search.maxAngleFilter = maxTrackingAngle; _search.teamMaskFilter = TeamMask.allButNeutral; ((TeamMask)(ref _search.teamMaskFilter)).RemoveTeam(TeamComponent.GetObjectTeam(((Component)this).gameObject)); _search.filterByLoS = true; _search.sortMode = (SortMode)2; _search.RefreshCandidates(); IEnumerable results = _search.GetResults(); HurtBox trackingTarget = null; using (IEnumerator enumerator = results.GetEnumerator()) { if (enumerator.MoveNext()) { HurtBox current = enumerator.Current; trackingTarget = current; } } _trackingTarget = trackingTarget; } private Ray GetAimRay() { //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: 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_004c: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)_inputBank)) { return new Ray(_inputBank.aimOrigin, _inputBank.aimDirection); } return new Ray(((Component)this).transform.position, ((Component)this).transform.forward); } public HurtBox GetTrackingTarget() { return _trackingTarget; } } public class SeamstressTrackingSkillDef : SkillDef { protected class InstanceData : BaseSkillInstanceData { public SeamstressTracker tracker; } public override BaseSkillInstanceData OnAssigned(GenericSkill skillSlot) { return (BaseSkillInstanceData)(object)new InstanceData { tracker = ((Component)skillSlot).GetComponent() }; } private static bool HasTarget(GenericSkill skillSlot) { return skillSlot.skillInstanceData is InstanceData instanceData && (Object)(object)instanceData.tracker != (Object)null && (Object)(object)instanceData.tracker.GetTrackingTarget() != (Object)null; } public override bool CanExecute(GenericSkill skillSlot) { return HasTarget(skillSlot) && ((SkillDef)this).CanExecute(skillSlot); } public override bool IsReady(GenericSkill skillSlot) { return ((SkillDef)this).IsReady(skillSlot) && HasTarget(skillSlot); } } } namespace SeamstressVariant.Survivors.SeamstressVariant.Achievements { [RegisterAchievement("LEVINTER_SEAMSTRESS_masteryAchievement", "LEVINTER_SEAMSTRESS_masteryUnlockable", null, 10u, null)] public class SeamstressVariantMasteryAchievement : BaseMasteryAchievement { public const string identifier = "LEVINTER_SEAMSTRESS_masteryAchievement"; public const string unlockableIdentifier = "LEVINTER_SEAMSTRESS_masteryUnlockable"; public override string RequiredCharacterBody => CharacterBase.instance.bodyName; public override float RequiredDifficultyCoefficient => 3f; } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { internal IgnoresAccessChecksToAttribute(string assemblyName) { } } }