Decompiled source of EclipsedShoresBaseMod v2.0.3
ESBM.dll
Decompiled 3 hours ago
The result has been truncated due to the large size, download it to view full contents!
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.Configuration; using BepInEx.Logging; using ESBM.TweakHelpers; using ESBM.Utils; using ESBM.Utils.Assets; using EntityStates; using EntityStates.BeetleMonster; using EntityStates.Captain.Weapon; using EntityStates.MeridianEvent; using EntityStates.Missions.BrotherEncounter; using KinematicCharacterController; using Microsoft.CodeAnalysis; using Mono.Cecil; using Mono.Cecil.Cil; using MonoMod.Cil; using MonoMod.RuntimeDetour; using On.EntityStates.BeetleMonster; using On.EntityStates.Captain.Weapon; using On.EntityStates.MeridianEvent; using On.EntityStates.Missions.BrotherEncounter; using On.RoR2; using R2API; using RoR2; using RoR2.Audio; using RoR2.CharacterAI; using RoR2.EntitlementManagement; using RoR2.ExpansionManagement; using RoR2.Navigation; using RoR2.Projectile; using RoR2.Skills; using RoR2.UI; using TMPro; using UnityEngine; using UnityEngine.AI; using UnityEngine.AddressableAssets; using UnityEngine.Audio; using UnityEngine.Networking; using UnityEngine.SceneManagement; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("ESBM")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+6d6d844bbae1f1ed1aeb6c6755f8ac36b8186a69")] [assembly: AssemblyProduct("ESBM")] [assembly: AssemblyTitle("ESBM")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] [module: UnverifiableCode] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace ESBM { public class Beetles { [CompilerGenerated] private static class <>O { public static hook_OnEnter <0>__HandleBeetleJump; public static hook_FixedUpdate <1>__HandleBeetleHitbox; public static hook_Start <2>__OnStageStart; } public static bool currentRunNotInferno = true; public static bool Enabled => ESBM.Bind("Enemy Tweaks", "Jumping Beetles", "Should Beetles perform leaps to close distance. Leaps are more effective and precise at longer ranges, and leaps are much shorter up close.", val: true); public static void Initialize() { //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_002d: Expected O, but got Unknown //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) //IL_004e: Expected O, but got Unknown //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Expected O, but got Unknown if (Enabled) { object obj = <>O.<0>__HandleBeetleJump; if (obj == null) { hook_OnEnter val = HandleBeetleJump; <>O.<0>__HandleBeetleJump = val; obj = (object)val; } HeadbuttState.OnEnter += (hook_OnEnter)obj; object obj2 = <>O.<1>__HandleBeetleHitbox; if (obj2 == null) { hook_FixedUpdate val2 = HandleBeetleHitbox; <>O.<1>__HandleBeetleHitbox = val2; obj2 = (object)val2; } HeadbuttState.FixedUpdate += (hook_FixedUpdate)obj2; GameObject beetleMaster = GameObject.BeetleMaster; SkillDef.BeetleBodyHeadbutt.baseRechargeInterval = 2f; SkillDef.BeetleBodyHeadbutt.beginSkillCooldownOnSkillEnd = true; AISkillDriver[] array = (from x in beetleMaster.GetComponents<AISkillDriver>() where (int)x.skillSlot == 0 select x).ToArray(); AISkillDriver[] array2 = array; foreach (AISkillDriver val3 in array2) { val3.maxDistance = 50f; val3.aimType = (AimType)2; } Transform transform = ((Component)GameObject.BeetleBody.GetComponentInChildren<HitBox>()).transform; transform.localScale *= 1.4f; object obj3 = <>O.<2>__OnStageStart; if (obj3 == null) { hook_Start val4 = OnStageStart; <>O.<2>__OnStageStart = val4; obj3 = (object)val4; } Stage.Start += (hook_Start)obj3; } } private static IEnumerator OnStageStart(orig_Start orig, Stage self) { yield return orig.Invoke(self); } private static void HandleBeetleHitbox(orig_FixedUpdate orig, HeadbuttState self) { orig.Invoke(self); if (self.attack != null && ((EntityState)self).isAuthority) { self.attack.Fire((List<HurtBox>)null); } } private static void HandleBeetleJump(orig_OnEnter orig, HeadbuttState self) { //IL_0129: 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_0134: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_015a: 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_006e: 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_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: 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_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); self.duration *= 0.75f; if (!((BaseState)self).isGrounded) { return; } float num = 60f; float num2 = 15f; CharacterMaster master = ((EntityState)self).characterBody.master; BaseAI component = ((Component)master).GetComponent<BaseAI>(); if (Object.op_Implicit((Object)(object)component.currentEnemy.gameObject)) { num = Mathf.Clamp(Vector3.Distance(((EntityState)self).transform.position, component.currentEnemy.gameObject.transform.position), 15f, 45f); Vector3 position = component.currentEnemy.gameObject.transform.position; if (position.y > ((EntityState)self).transform.position.y) { num2 = position.y - ((EntityState)self).transform.position.y; } if (num < 30f) { num *= 1.75f; } } ((BaseCharacterController)((EntityState)self).characterMotor).Motor.ForceUnground(0.1f); ((EntityState)self).characterMotor.velocity = ((EntityState)self).characterDirection.forward * num + Vector3.up * Util.Remap(num, 0f, 60f, 1f, num2 * 2f); } } public class Mithrix { [CompilerGenerated] private static class <>O { public static hook_TakeDamageProcess <0>__OnHitEnemy; } public static bool NoCripple; public static void Initialize() { //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_0040: Expected O, but got Unknown NoCripple = ESBM.Bind("Enemy Tweaks", "No Phase 4 Cripple", "Prevent Mithrix from applying Crippled during phase 4?", val: true); if (NoCripple) { object obj = <>O.<0>__OnHitEnemy; if (obj == null) { hook_TakeDamageProcess val = OnHitEnemy; <>O.<0>__OnHitEnemy = val; obj = (object)val; } HealthComponent.TakeDamageProcess += (hook_TakeDamageProcess)obj; } } private static void OnHitEnemy(orig_TakeDamageProcess orig, HealthComponent self, DamageInfo damageInfo) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) if (NoCripple && ((Enum)damageInfo.damageType.damageType).HasFlag((Enum)(object)(DamageType)4194304) && Object.op_Implicit((Object)(object)PhaseCounter.instance) && PhaseCounter._instance.phase > 2) { ref DamageType damageType = ref damageInfo.damageType.damageType; damageType = (DamageType)((uint)damageType & 0xFFBFFFFFu); } orig.Invoke(self, damageInfo); } } [BepInPlugin("_0.Smxrez.ESBM", "ESBM", "1.0.1")] public class ESBM : BaseUnityPlugin { public const string PluginGUID = "_0.Smxrez.ESBM"; public const string PluginAuthor = "Smxrez"; public const string PluginName = "ESBM"; public const string PluginVersion = "1.0.1"; public static ManualLogSource ModLogger; private static ConfigFile conf; public static BindingFlags FLAGS = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic; public void Awake() { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Expected O, but got Unknown ModLogger = ((BaseUnityPlugin)this).Logger; conf = new ConfigFile(Path.Combine(Paths.ConfigPath, "Smxrez.ESBM.cfg"), true); MiscTweaks.Initialize(); ItemWeightImprovement.Initialize(); BodyCustomizer.Initializer(); Beetles.Initialize(); Mithrix.Initialize(); PlayerRespawns.Initialize(); NoDiabloDamage.Initialize(); } public void Start() { StunResistance.Initialize(); } public static T Bind<T>(string sec, string key, string desc, T val) { return conf.Bind<T>(sec, key, val, desc).Value; } public static void ApplyIfExists(string assembly, Action<Assembly> handler) { Assembly assembly2 = AppDomain.CurrentDomain.GetAssemblies().FirstOrDefault((Assembly x) => x.GetName().Name == assembly); if (assembly2 != null) { handler(assembly2); } } } public class BodyCustomizer { [CompilerGenerated] private static class <>O { public static hook_Init <0>__OnCatalogInit; } [StructLayout(LayoutKind.Auto)] [CompilerGenerated] private struct <>c__DisplayClass3_0 { public string bodyName; } public static ConfigFile BodyConfig; public static ConfigFile BodyEnableConfig; public static void Initializer() { //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Expected O, but got Unknown //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_001c: Expected O, but got Unknown object obj = <>O.<0>__OnCatalogInit; if (obj == null) { hook_Init val = OnCatalogInit; <>O.<0>__OnCatalogInit = val; obj = (object)val; } BodyCatalog.Init += (hook_Init)obj; BodyConfig = new ConfigFile(Path.Combine(Paths.ConfigPath, "ESBM-BodyConfig.cfg"), true); } private static IEnumerator OnCatalogInit(orig_Init orig) { yield return orig.Invoke(); <>c__DisplayClass3_0 CS$<>8__locals0 = default(<>c__DisplayClass3_0); foreach (GameObject body in BodyCatalog.allBodyPrefabs) { CS$<>8__locals0.bodyName = ((Object)body).name.Replace("'", ""); if (BodyConfig.Bind<bool>("Config Generation", CS$<>8__locals0.bodyName, false, "Generate configs for this body.").Value) { CharacterBody c = body.GetComponent<CharacterBody>(); c.baseDamage = Bind<float>("Base Damage", "The base damage of the survivor.", c.baseDamage, ref c.levelDamage); c.baseAttackSpeed = Bind<float>("Base Attack Speed", "The base attack speed of the survivor.", c.baseAttackSpeed, ref c.levelAttackSpeed); c.baseMaxHealth = Bind<float>("Base Max Health", "The base maximum health of the survivor.", c.baseMaxHealth, ref c.levelMaxHealth); c.baseArmor = Bind<float>("Base Armor", "The base armor of the survivor.", c.baseArmor, ref c.levelArmor); c.baseMoveSpeed = Bind<float>("Base Movement Speed", "The base movement speed of the survivor.", c.baseMoveSpeed, ref c.levelMoveSpeed); c.baseRegen = Bind<float>("Base Regen", "The base regen of the survivor.", c.baseRegen, ref c.levelRegen); } CS$<>8__locals0 = default(<>c__DisplayClass3_0); T Bind<T>(string name, string desc, T val, ref T levelVal) { T value = BodyConfig.Bind<T>(CS$<>8__locals0.bodyName, name, val, desc).Value; levelVal = BodyConfig.Bind<T>(CS$<>8__locals0.bodyName, name.Replace("Base", "Level"), levelVal, desc.Replace("base", "level")).Value; return value; } } } } public class ItemWeightImprovement { [CompilerGenerated] private static class <>O { public static hook_OnInteractionBegin <0>__HandleChestLootReroll; } public static bool Enabled => ESBM.Bind("Item Weight Tweaks", "Enabled", "Enable item weight scaling? This scales weights so that you are more likely to receive duplicates the more diverse your inventory is.", val: false); public static float Ratio => ESBM.Bind("Item Weight Tweaks", "Inventory Ratio", "The percentage ratio of stacked to unstacked items, as a percentage of stacked compared to total inventory. Item weights of duplicates are increased the further the ratio is from this config.", 2.5f); public static void Initialize() { //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_0030: Expected O, but got Unknown if (Enabled) { _ = Ratio; object obj = <>O.<0>__HandleChestLootReroll; if (obj == null) { hook_OnInteractionBegin val = HandleChestLootReroll; <>O.<0>__HandleChestLootReroll = val; obj = (object)val; } PurchaseInteraction.OnInteractionBegin += (hook_OnInteractionBegin)obj; } } private static void HandleChestLootReroll(orig_OnInteractionBegin orig, PurchaseInteraction self, Interactor activator) { //IL_000e: 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_00bd: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)((Component)self).GetComponent<ChestBehavior>())) { Scene activeScene = SceneManager.GetActiveScene(); if (!((Scene)(ref activeScene)).name.StartsWith("it")) { ChestBehavior component = ((Component)self).GetComponent<ChestBehavior>(); if (component.dropTable is BasicPickupDropTable && Object.op_Implicit((Object)(object)((Component)activator).GetComponent<CharacterBody>())) { PickupDropTable dropTable = component.dropTable; BasicPickupDropTable val = (BasicPickupDropTable)(object)((dropTable is BasicPickupDropTable) ? dropTable : null); if (!(val.equipmentWeight > 0f) && !(val.lunarItemWeight > 0f) && !(val.lunarEquipmentWeight > 0f) && !(val.lunarCombinedWeight > 0f)) { ? val2 = component; PickupDropTable dropTable2 = component.dropTable; ((ChestBehavior)val2).dropPickup = RollModifiedDrop((BasicPickupDropTable)(object)((dropTable2 is BasicPickupDropTable) ? dropTable2 : null), ((Component)activator).GetComponent<CharacterBody>()); } } } } orig.Invoke(self, activator); } public static PickupIndex RollModifiedDrop(BasicPickupDropTable table, CharacterBody user) { //IL_0019: 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_0021: Unknown result type (might be due to invalid IL or missing references) DiversePickupTable diversePickupTable = new DiversePickupTable(table, Run.instance.stageRng); return diversePickupTable.GenerateDropForPlayer(user.inventory); } } public class DiversePickupTable { public WeightedSelection<List<PickupIndex>> TierSelection = new WeightedSelection<List<PickupIndex>>(8); public Xoroshiro128Plus rng; public void PopulateFromDropTable(BasicPickupDropTable table) { TierSelection.Clear(); TierSelection.AddChoice(new List<PickupIndex>(), table.tier1Weight); AddToSelection(Run.instance.availableTier1DropList, ref TierSelection.choices[TierSelection.Count - 1].value, table); TierSelection.AddChoice(new List<PickupIndex>(), table.tier2Weight); AddToSelection(Run.instance.availableTier2DropList, ref TierSelection.choices[TierSelection.Count - 1].value, table); TierSelection.AddChoice(new List<PickupIndex>(), table.tier3Weight); AddToSelection(Run.instance.availableTier3DropList, ref TierSelection.choices[TierSelection.Count - 1].value, table); TierSelection.AddChoice(new List<PickupIndex>(), table.voidTier1Weight); AddToSelection(Run.instance.availableVoidTier1DropList, ref TierSelection.choices[TierSelection.Count - 1].value, table); TierSelection.AddChoice(new List<PickupIndex>(), table.voidTier2Weight); AddToSelection(Run.instance.availableVoidTier2DropList, ref TierSelection.choices[TierSelection.Count - 1].value, table); TierSelection.AddChoice(new List<PickupIndex>(), table.voidTier3Weight); AddToSelection(Run.instance.availableVoidTier3DropList, ref TierSelection.choices[TierSelection.Count - 1].value, table); } public DiversePickupTable(BasicPickupDropTable table, Xoroshiro128Plus rng) { PopulateFromDropTable(table); this.rng = rng; } public PickupIndex GenerateDropForPlayer(Inventory inventory) { //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_005d: 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_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) List<PickupIndex> list = TierSelection.Evaluate(rng.nextNormalizedFloat); WeightedSelection<PickupIndex> val = new WeightedSelection<PickupIndex>(8); float sameTypeWeightMultiplier = GetSameTypeWeightMultiplier(GetTierForSelection(list), inventory); ESBM.ModLogger.LogError((object)("Stackable Weight For Player: " + sameTypeWeightMultiplier)); foreach (PickupIndex item in list) { ItemDef itemDef = ItemCatalog.GetItemDef(PickupCatalog.GetPickupDef(item).itemIndex); float num = 1f; if (inventory.GetItemCount(itemDef) > 0) { num *= ((inventory.GetItemCount(itemDef) > 1) ? sameTypeWeightMultiplier : (sameTypeWeightMultiplier * 0.5f)); } val.AddChoice(item, num); } return val.Evaluate(rng.nextNormalizedFloat); } public static float GetSameTypeWeightMultiplier(ItemTierDef tier, Inventory inventory) { //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_0026: Unknown result type (might be due to invalid IL or missing references) float result = 1f; int num = 0; int num2 = 0; foreach (ItemIndex item in inventory.itemAcquisitionOrder) { int itemCount = inventory.GetItemCount(item); num += itemCount; if (itemCount > 1) { num2 += itemCount; } } float num3 = (float)num2 / (float)num; if (num3 < ItemWeightImprovement.Ratio) { result = 1f + (ItemWeightImprovement.Ratio - num3); } return result; } public ItemTierDef GetTierForSelection(List<PickupIndex> selection) { //IL_0003: 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) return ItemCatalog.GetItemDef(PickupCatalog.GetPickupDef(selection[0]).itemIndex)._itemTierDef; } public void AddToSelection(List<PickupIndex> indices, ref List<PickupIndex> selection, BasicPickupDropTable table) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) foreach (PickupIndex index in indices) { if (!IsFilterRequired() || PassesFilter(index)) { selection.Add(index); } } bool IsFilterRequired() { if (table.requiredItemTags.Length == 0) { return table.bannedItemTags.Length == 0; } return true; } bool PassesFilter(PickupIndex index) { //IL_0001: 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_000f: Invalid comparison between Unknown and I4 //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0047: 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_008f: Unknown result type (might be due to invalid IL or missing references) PickupDef pickupDef = PickupCatalog.GetPickupDef(index); if ((int)pickupDef.itemIndex != -1) { ItemDef itemDef = ItemCatalog.GetItemDef(pickupDef.itemIndex); ItemTag[] bannedItemTags = table.bannedItemTags; foreach (ItemTag value in bannedItemTags) { if (Array.IndexOf(itemDef.tags, value) != -1) { return false; } } ItemTag[] requiredItemTags = table.requiredItemTags; foreach (ItemTag value2 in requiredItemTags) { if (Array.IndexOf(itemDef.tags, value2) == -1) { return false; } } return true; } return false; } } } public static class MiscTweaks { public static void Initialize() { ESBM.ApplyIfExists("RazorhiveMod", delegate(Assembly x) { if (ESBM.Bind("Mod Changes :: Razorhive", "Disable Hit Refresh", "Removes Razorhives ability to refresh on hit.", val: false)) { new FieldPatch(x, "RazorwireMod.Items.HiveOrb", "damageType", new ValueData { iVals = new int[0] }, "OnArrival", "r2api_moddedDamageTypes"); new FieldPatch(x, "RazorwireMod.Items.Razorhive", "ItemFullDescription", new ValueData { sVal = "", filter = new Filter { StringFilter = "Each sting <style=cIsUtility>refreshes</style> the duration. " }, operation = "Replace" }); } }); ESBM.ApplyIfExists("Hex3Mod", delegate(Assembly x) { //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_011d: Expected O, but got Unknown //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Expected O, but got Unknown if (ESBM.Bind("Mod Changes :: Hex3Mod", "Captains Favor Corruption", "Makes Captains Favor corrupt Sale Star.", val: false)) { new MethodPatch(x, "Hex3Mod.Items.CaptainsFavor", "AddHooks", new ValueData { sVal = "LowerPricedChests", filter = new Filter { StringFilter = "FourHundredTickets" } }, Operation.Replace); new MethodPatch(x, "Hex3Mod.Items.CaptainsFavor", "AddTokens", new ValueData { sVal = "The first chests you open each stage will be replaced by a Void Potential. <style=cIsVoid>Corrupts all Sale Stars.</style>", filter = new Filter { StringFilter = "The first chests you open each stage will be replaced by a Void Potential. <style=cIsVoid>Corrupts all 400 Tickets.</style>" } }, Operation.Replace); new MethodPatch(x, "Hex3Mod.Items.CaptainsFavor", "UpdateItemStatus", new ValueData { sVal = "The first <style=cStack>(+1 per stack)</style> chest you open each stage will be replaced by a <style=cIsVoid>Void Potential</style>, inheriting the chest's item tiers. <style=cIsVoid>Corrupts all Sale Stars.</style>", filter = new Filter { StringFilter = "The first <style=cStack>(+1 per stack)</style> chest you open each stage will be replaced by a <style=cIsVoid>Void Potential</style>, inheriting the chest's item tiers. <style=cIsVoid>Corrupts all 400 Tickets.</style>" } }, Operation.Replace); } float nerf = ESBM.Bind("Mod Changes :: Hex3Mod", "The Unforgivable Stack Nerf", "Nerfs the reduction per stack on The Unforgivable. Default is 0.5", 0.5f); ILHook val = new ILHook((MethodBase)x.GetType("Hex3Mod.Items.TheUnforgivable/UnforgivableBehavior").GetMethod("FixedUpdate", ESBM.FLAGS), (Manipulator)delegate(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown ILCursor val2 = new ILCursor(il); val2.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchDiv(x) }); val2.Remove(); val2.EmitDelegate<Func<float, float, float>>((Func<float, float, float>)((float interval, float stack) => (stack >= 2f) ? (interval * Mathf.Pow(1f - nerf, stack)) : interval)); }); new MethodPatch(x, "Hex3Mod.Items.TheUnforgivable", "UpdateItemStatus", new ValueData { sVal = "Activate your <style=cIsDamage>on-kill effects</style> at your location every <style=cIsDamage>{0}</style> <style=cStack>" + $"(-{nerf * 100f}% per stack)</style> seconds.", filter = new Filter { StringFilter = "Activate your <style=cIsDamage>on-kill effects</style> at your location every <style=cIsDamage>{0}</style> <style=cStack>(-50% per stack)</style> seconds." } }, Operation.Replace); }); ESBM.ApplyIfExists("UmbralMithrix", delegate(Assembly x) { if (ESBM.Bind("Mod Changes :: Umbral Mithrix", "No Glass Clones", "Removes the glass clones from the Umbral Mithrix fight.", val: false)) { new MethodPatch(x, "UmbralMithrix.CloneController", "FixedUpdate", new ValueData(), Operation.Return); } }); ESBM.ApplyIfExists("MysticsItemsPlugin", delegate(Assembly x) { if (ESBM.Bind("Mod Changes :: MysticsItems", "Black Monolith Retier", "Makes Black Monolith a red item.", val: false)) { new FieldPatch(x, "MysticsItems.Items.ExtraShrineUse", "itemDef", new ValueData { spVal = SpriteHandler.ProcessSprite("texRedMonolith.png") }, "OnLoad", "pickupIconSprite", InjectionTiming.End); new MethodPatch(x, "MysticsItems.Items.ExtraShrineUse", "SetItemTierWhenAvailable", new ValueData { eVal = "Tier3" }, Operation.Input, "OnLoad", 1); } int num = ESBM.Bind("Mod Changes :: MysticsItems", "Black Monolith Usages", "Increases the use count of Black Monolith. Default is 1.", 1); new MethodPatch(x, "MysticsItems.Items.ExtraShrineUse", "UpdateShrine", new ValueData { iVal = 2, operation = "Multiply" }, Operation.Input, null, 2); LanguageAPI.AddOverlay("ITEM_MYSTICSITEMS_EXTRASHRINEUSE_DESC", $"All Shrines can be used <style=cIsUtility>{num} <style=cStack>(+{num} per stack)</style></style> more times."); LanguageAPI.AddOverlay("ITEM_MYSTICSITEMS_EXTRASHRINEUSE_PICKUP", "All Shrines can be used " + HumanFriendlyInteger.IntegerToWritten(num) + " more time" + ((num > 1) ? "s" : "") + "."); }); } } public static class NoDiabloDamage { [CompilerGenerated] private static class <>O { public static hook_ModifyProjectile <0>__ModifyProjectile; public static hook_TakeDamage <1>__TakeDamage; } public static ModdedDamageType DiabloType = DamageAPI.ReserveDamageType(); public static void Initialize() { //IL_002b: 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: Expected O, but got Unknown //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_0057: Expected O, but got Unknown if (ESBM.Bind("Vanilla Changes :: Diablo Strike", "Ally Protection", "Prevents Diablo damage against allies (knockback still applies)", val: false)) { object obj = <>O.<0>__ModifyProjectile; if (obj == null) { hook_ModifyProjectile val = ModifyProjectile; <>O.<0>__ModifyProjectile = val; obj = (object)val; } CallAirstrikeAlt.ModifyProjectile += (hook_ModifyProjectile)obj; object obj2 = <>O.<1>__TakeDamage; if (obj2 == null) { hook_TakeDamage val2 = TakeDamage; <>O.<1>__TakeDamage = val2; obj2 = (object)val2; } HealthComponent.TakeDamage += (hook_TakeDamage)obj2; } } private static void TakeDamage(orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo) { //IL_0007: 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_0027: Invalid comparison between Unknown and I4 //IL_004f: 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_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_006a: 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) if (DamageAPI.HasModdedDamageType(ref damageInfo.damageType, DiabloType) && (int)self.body.teamComponent.teamIndex == 1 && (Object)(object)damageInfo.attacker != (Object)(object)((Component)self).gameObject) { damageInfo.damage = 1f; damageInfo.damageType |= DamageTypeCombo.op_Implicit((DamageType)2048); damageInfo.force *= 0.35f; } orig.Invoke(self, damageInfo); } private static void ModifyProjectile(orig_ModifyProjectile orig, CallAirstrikeAlt self, ref FireProjectileInfo fireProjectileInfo) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self, ref fireProjectileInfo); DamageTypeCombo value = default(DamageTypeCombo); ((DamageTypeCombo)(ref value))..ctor(DamageTypeCombo.op_Implicit((DamageType)32), (DamageTypeExtended)0, (DamageSource)4); DamageAPI.AddModdedDamageType(ref value, DiabloType); fireProjectileInfo.damageTypeOverride = value; } } public class PlayerRespawns { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static Action<TeleporterInteraction> <>9__6_0; public static hook_OnEnter <>9__6_1; public static hook_OnEnter <>9__6_2; public static hook_OnEnter <>9__6_3; public static Func<PlayerCharacterMasterController, bool> <>9__7_0; internal void <Initialize>b__6_0(TeleporterInteraction x) { AttemptRespawnDeadPlayers(); } internal void <Initialize>b__6_1(orig_OnEnter x, MissionCompleted y) { x.Invoke(y); AttemptRespawnDeadPlayers(); } internal void <Initialize>b__6_2(orig_OnEnter x, Phase1 y) { x.Invoke(y); AttemptRespawnDeadPlayers(); } internal void <Initialize>b__6_3(orig_OnEnter x, Phase1 y) { x.Invoke(y); AttemptRespawnDeadPlayers(); } internal bool <AttemptRespawnDeadPlayers>b__7_0(PlayerCharacterMasterController x) { return Object.op_Implicit((Object)(object)x.body); } } public static bool BeforeMithrixEnabled => ESBM.Bind("Player Respawns", "Before Final Bosses", "Should all dead players respawn at the start of a final boss?", val: false); public static bool AfterVieldsEnabled => ESBM.Bind("Player Respawns", "After Void Cells", "Should all dead players respawn upon completion of the Void Fields?", val: false); public static bool AfterTeleporterEnabled => ESBM.Bind("Player Respawns", "After Teleporter", "Should all dead players respawn after the teleporter event is over?", val: false); public static void Initialize() { //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_0057: Expected O, but got Unknown //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_0086: Expected O, but got Unknown //IL_00a0: 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: Expected O, but got Unknown if (AfterTeleporterEnabled) { TeleporterInteraction.onTeleporterChargedGlobal += delegate { AttemptRespawnDeadPlayers(); }; } if (AfterVieldsEnabled) { object obj = <>c.<>9__6_1; if (obj == null) { hook_OnEnter val = delegate(orig_OnEnter x, MissionCompleted y) { x.Invoke(y); AttemptRespawnDeadPlayers(); }; <>c.<>9__6_1 = val; obj = (object)val; } MissionCompleted.OnEnter += (hook_OnEnter)obj; } if (!BeforeMithrixEnabled) { return; } object obj2 = <>c.<>9__6_2; if (obj2 == null) { hook_OnEnter val2 = delegate(orig_OnEnter x, Phase1 y) { x.Invoke(y); AttemptRespawnDeadPlayers(); }; <>c.<>9__6_2 = val2; obj2 = (object)val2; } Phase1.OnEnter += (hook_OnEnter)obj2; object obj3 = <>c.<>9__6_3; if (obj3 == null) { hook_OnEnter val3 = delegate(orig_OnEnter x, Phase1 y) { x.Invoke(y); AttemptRespawnDeadPlayers(); }; <>c.<>9__6_3 = val3; obj3 = (object)val3; } Phase1.OnEnter += (hook_OnEnter)obj3; } public static void AttemptRespawnDeadPlayers() { //IL_00d9: Unknown result type (might be due to invalid IL or missing references) if (!NetworkServer.active) { return; } PlayerCharacterMasterController[] array = PlayerCharacterMasterController.instances.Where((PlayerCharacterMasterController x) => Object.op_Implicit((Object)(object)x.body)).ToArray(); foreach (PlayerCharacterMasterController instance in PlayerCharacterMasterController.instances) { if (Object.op_Implicit((Object)(object)instance.master) && (!Object.op_Implicit((Object)(object)instance.body) || !instance.body.healthComponent.alive) && (!Object.op_Implicit((Object)(object)instance.master.bodyInstanceObject) || !instance.master.bodyInstanceObject.GetComponent<CharacterBody>().healthComponent.alive)) { instance.master.deathFootPosition = array[Random.Range(0, array.Length)].body.footPosition; instance.master.RespawnExtraLifeShrine(); } } } } public static class StunResistance { [CompilerGenerated] private static class <>O { public static hook_SetStun <0>__ResistStun; public static hook_SetFrozen <1>__ResistFreeze; public static hook_SetShock <2>__ResistShock; } public static BuffDef bdStunRes; public static float ResistPerStack; public static float LargeEnemyMultiplier; public static void Initialize() { //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_006f: Expected O, but got Unknown //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Expected O, but got Unknown //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_00b1: Expected O, but got Unknown if (ESBM.Bind("Enemy CC Resistance", "Enabled", "Whether enemies should build up a tolerance to CC effects.", val: false)) { bdStunRes = ScriptableObject.CreateInstance<BuffDef>(); bdStunRes.isHidden = true; bdStunRes.canStack = true; bdStunRes.isDebuff = false; ContentAddition.AddBuffDef(bdStunRes); object obj = <>O.<0>__ResistStun; if (obj == null) { hook_SetStun val = ResistStun; <>O.<0>__ResistStun = val; obj = (object)val; } SetStateOnHurt.SetStun += (hook_SetStun)obj; object obj2 = <>O.<1>__ResistFreeze; if (obj2 == null) { hook_SetFrozen val2 = ResistFreeze; <>O.<1>__ResistFreeze = val2; obj2 = (object)val2; } SetStateOnHurt.SetFrozen += (hook_SetFrozen)obj2; object obj3 = <>O.<2>__ResistShock; if (obj3 == null) { hook_SetShock val3 = ResistShock; <>O.<2>__ResistShock = val3; obj3 = (object)val3; } SetStateOnHurt.SetShock += (hook_SetShock)obj3; ResistPerStack = ESBM.Bind("Enemy CC Resistance", "Resist Percentage", "How much to resist CC effects by for each CC re-application.", 0.2f); LargeEnemyMultiplier = ESBM.Bind("Enemy CC Resistance", "Large Enemy Multiplier", "The effectiveness multiplier against elites and bosses.", 1.5f); } } private static void ResistStun(orig_SetStun orig, SetStateOnHurt self, float duration) { //IL_00b6: 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) CharacterBody component = ((Component)self).GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component)) { int buffCount = component.GetBuffCount(bdStunRes); duration = ((!component.isElite && !component.isChampion) ? (duration * ((buffCount > 1) ? Mathf.Pow(1f - ResistPerStack, (float)(buffCount - 1)) : 1f)) : (duration * ((buffCount > 1) ? Mathf.Pow(1f - ResistPerStack * LargeEnemyMultiplier, (float)(buffCount - 1)) : 1f))); component.AddTimedBuff(bdStunRes, 8f); foreach (TimedBuff timedBuff in component.timedBuffs) { if (timedBuff.buffIndex == bdStunRes.buffIndex) { timedBuff.timer = 8f; } } } orig.Invoke(self, duration); } private static void ResistFreeze(orig_SetFrozen orig, SetStateOnHurt self, float duration) { //IL_00b6: 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) CharacterBody component = ((Component)self).GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component)) { int buffCount = component.GetBuffCount(bdStunRes); duration = ((!component.isElite && !component.isChampion) ? (duration * ((buffCount > 1) ? Mathf.Pow(1f - ResistPerStack, (float)(buffCount - 1)) : 1f)) : (duration * ((buffCount > 1) ? Mathf.Pow(1f - ResistPerStack * LargeEnemyMultiplier, (float)(buffCount - 1)) : 1f))); component.AddTimedBuff(bdStunRes, 8f); foreach (TimedBuff timedBuff in component.timedBuffs) { if (timedBuff.buffIndex == bdStunRes.buffIndex) { timedBuff.timer = timedBuff.totalDuration; } } } orig.Invoke(self, duration); } private static void ResistShock(orig_SetShock orig, SetStateOnHurt self, float duration) { //IL_00b6: 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) CharacterBody component = ((Component)self).GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component)) { int buffCount = component.GetBuffCount(bdStunRes); duration = ((!component.isElite && !component.isChampion) ? (duration * ((buffCount > 1) ? Mathf.Pow(1f - ResistPerStack, (float)(buffCount - 1)) : 1f)) : (duration * ((buffCount > 1) ? Mathf.Pow(1f - ResistPerStack * LargeEnemyMultiplier, (float)(buffCount - 1)) : 1f))); component.AddTimedBuff(bdStunRes, 8f); foreach (TimedBuff timedBuff in component.timedBuffs) { if (timedBuff.buffIndex == bdStunRes.buffIndex) { timedBuff.timer = timedBuff.totalDuration; } } } orig.Invoke(self, duration); } } } namespace ESBM.TweakHelpers { public enum InjectionTiming { Before, End } public class FieldPatch { public string typeName; public string fieldName; public ValueData mod; public string injection; public InjectionTiming timing; private FieldInfo info; private PropertyInfo pInfo; private Sprite sprite; public string path; private FieldInfo[] infos; private bool post = false; public FieldPatch(Assembly assembly, string type, string field, ValueData mod, string method = null, string childPath = null, InjectionTiming timing = InjectionTiming.Before, Sprite sprite = null) { typeName = type; fieldName = field; this.mod = mod; injection = method; this.timing = timing; this.sprite = sprite; path = childPath; Apply(assembly); } public void Apply(Assembly assembly) { //IL_011d: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Expected O, but got Unknown //IL_0122: Unknown result type (might be due to invalid IL or missing references) Type type = assembly.GetType(typeName); if (mod == null || (Object)(object)mod.spVal != (Object)null) { } info = type.GetField(fieldName, ESBM.FLAGS); if (info == null) { TryApplyProperty(type); return; } infos = ResolveFields(info); if (infos == null) { return; } if (timing == InjectionTiming.End) { post = true; } if (string.IsNullOrEmpty(injection) && infos[infos.Length - 1].IsStatic) { FieldInfo fieldInfo = infos[infos.Length - 1]; if (!(fieldInfo == null)) { mod.Apply(fieldInfo); } } else { new ILHook((MethodBase)type.GetMethod(injection, ESBM.FLAGS), new Manipulator(Hook)); } } public FieldInfo[] ResolveFields(FieldInfo info) { if (string.IsNullOrEmpty(path)) { return new FieldInfo[1] { info }; } string[] array = path.Split("/"); FieldInfo[] array2 = new FieldInfo[array.Length + 1]; array2[0] = info; for (int i = 0; i < array.Length; i++) { info = info.FieldType.GetField(array[i], ESBM.FLAGS); array2[i + 1] = info; } return array2; } public void TryApplyProperty(Type type) { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Expected O, but got Unknown //IL_002f: Unknown result type (might be due to invalid IL or missing references) pInfo = type.GetProperty(fieldName, ESBM.FLAGS); new ILHook((MethodBase)pInfo.GetMethod, new Manipulator(PropertyHook)); } public void Hook(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown ILCursor val = new ILCursor(il); if (post) { while (val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchRet(x) })) { int index = val.Index; val.Index = index - 1; EmitIL(val); val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchRet(x) }); } } else { EmitIL(val); } } public void EmitIL(ILCursor c) { //IL_0060: 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_009b: 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) //IL_00be: Unknown result type (might be due to invalid IL or missing references) if (infos[infos.Length - 1].IsStatic) { mod.EmitValue(infos[infos.Length - 1], c); c.Emit(OpCodes.Stsfld, infos[infos.Length - 1]); return; } c.Emit(OpCodes.Ldarg_0); for (int i = 0; i < infos.Length; i++) { FieldInfo fieldInfo = infos[i]; if (i == infos.Length - 1) { mod.EmitValue(fieldInfo, c); c.Emit(OpCodes.Stfld, fieldInfo); } else if (fieldInfo.FieldType.IsValueType) { c.Emit(OpCodes.Ldflda, fieldInfo); } else { c.Emit(OpCodes.Ldfld, fieldInfo); } } } public void PropertyHook(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_0030: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); if (mod.operation == null) { mod.EmitValue(pInfo, val); val.Emit(OpCodes.Ret); return; } while (val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchRet(x) })) { int index = val.Index; val.Index = index - 1; mod.EmitValue(pInfo, val, op: true); val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchRet(x) }); } } } public enum Operation { Replace, Suppress, Return, Input } public class MethodPatch { public string typeName; public string methodName; public ValueData mod; public Operation operation; public int index; public string injection; private MethodInfo info; private MethodInfo target; private ParameterInfo param; private int paramCount; public MethodPatch(Assembly assembly, string type, string method, ValueData mod, Operation operation, string replace = null, int param = 0) { typeName = type; methodName = method; this.mod = mod; injection = replace; this.operation = operation; index = param; Apply(assembly); } public void Apply(Assembly assembly) { //IL_0168: Unknown result type (might be due to invalid IL or missing references) //IL_0172: Expected O, but got Unknown //IL_016d: 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_00b0: Expected O, but got Unknown //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_0196: Unknown result type (might be due to invalid IL or missing references) //IL_01a0: Expected O, but got Unknown //IL_019b: 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_00dc: Expected O, but got Unknown //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_01c4: Unknown result type (might be due to invalid IL or missing references) //IL_01ce: Expected O, but got Unknown //IL_01c9: 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_0142: Expected O, but got Unknown //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_0227: Unknown result type (might be due to invalid IL or missing references) //IL_0231: Expected O, but got Unknown //IL_022c: Unknown result type (might be due to invalid IL or missing references) Type type = assembly.GetType(typeName); try { info = type.GetMethod(methodName, ESBM.FLAGS); } catch { info = type.GetMethods(ESBM.FLAGS).FirstOrDefault((MethodInfo x) => x.GetParameters().Count() >= index); } paramCount = info.GetParameters().Length; if (injection != null) { target = type.GetMethod(injection, ESBM.FLAGS); if (operation == Operation.Suppress) { new ILHook((MethodBase)target, new Manipulator(SuppressI)); } else if (operation == Operation.Return) { new ILHook((MethodBase)target, new Manipulator(ReturnI)); } else if (operation == Operation.Input) { ParameterInfo[] parameters = info.GetParameters(); if (index - 1 < parameters.Length) { param = parameters[index - 1]; new ILHook((MethodBase)target, new Manipulator(InputI)); } } } else if (operation == Operation.Suppress) { new ILHook((MethodBase)info, new Manipulator(Suppress)); } else if (operation == Operation.Return) { new ILHook((MethodBase)info, new Manipulator(Return)); } else if (operation == Operation.Replace) { new ILHook((MethodBase)info, new Manipulator(Replace)); } else if (operation == Operation.Input) { ParameterInfo[] parameters2 = info.GetParameters(); if (index - 1 < parameters2.Length) { param = parameters2[index - 1]; new ILHook((MethodBase)info, new Manipulator(Input)); } } } public void Replace(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown ILCursor val = new ILCursor(il); if (mod.sVal != null) { while (val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdstr(x, mod.filter.StringFilter) })) { val.Prev.Operand = mod.sVal; } } else if (mod.filter.FloatFilter != null) { while (val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, float.Parse(mod.filter.FloatFilter)) })) { val.Prev.Operand = mod.fVal; } } else if (mod.filter.IntFilter != null) { while (val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, (float)int.Parse(mod.filter.IntFilter)) })) { val.Prev.Operand = mod.iVal; } } } public void Suppress(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_003c: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); if (info.ReturnType != typeof(void)) { val.EmitDelegate<Func<object>>((Func<object>)(() => GetDefaultValue(info.ReturnType))); } val.Emit(OpCodes.Ret); } public void Return(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_001d: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); mod.EmitValue(info, val); val.Emit(OpCodes.Ret); } public void Input(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); if (mod.operation != null) { val.Emit(OpCodes.Ldarg, info.IsStatic ? (index - 1) : index); } mod.EmitValue(param.ParameterType, val, mod.operation != null); val.Emit(OpCodes.Starg, info.IsStatic ? (index - 1) : index); } public void SuppressI(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_002c: 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) ILCursor val = new ILCursor(il); while (val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, (MethodBase)info) })) { int num = val.Index; val.Index = num - 1; val.Remove(); for (int i = 0; i < paramCount; i++) { val.Emit(OpCodes.Pop); } if (!info.IsStatic) { val.Emit(OpCodes.Pop); } if (info.ReturnType != typeof(void)) { val.EmitDelegate<Func<object>>((Func<object>)(() => GetDefaultValue(info.ReturnType))); } } } public void ReturnI(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_002c: 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) ILCursor val = new ILCursor(il); while (val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, (MethodBase)info) })) { int num = val.Index; val.Index = num - 1; val.Remove(); for (int i = 0; i < paramCount; i++) { val.Emit(OpCodes.Pop); } if (!info.IsStatic) { val.Emit(OpCodes.Pop); } if (info.ReturnType != typeof(void)) { mod.EmitValue(info, val); } val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, (MethodBase)info) }); } } public void InputI(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown //IL_0058: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); while (val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, (MethodBase)info) })) { int num = val.Index; val.Index = num - 1; int num2 = val.Index; Instruction val2 = FindParameter(il, val.Next); val.Index = il.IndexOf(val2); if (mod.operation == null) { val.Emit(OpCodes.Pop); } mod.EmitValue(param, val, mod.operation != null); val.Index = num2; val.TryGotoNext((MoveType)2, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, (MethodBase)info) }); } } private object GetDefaultValue(Type t) { if (t.IsValueType) { return Activator.CreateInstance(t); } return null; } private Instruction FindParameter(ILContext il, Instruction call) { List<Instruction> list = ((IEnumerable<Instruction>)il.Body.Instructions).ToList(); Stack<Instruction> stack = new Stack<Instruction>(); foreach (Instruction item in list) { int num = StackChange(item); if (num > 0) { for (int i = 0; i < num; i++) { stack.Push(item); } } if (num < 0) { for (int j = 0; j < Math.Abs(num); j++) { if (stack.Count > 0) { stack.Pop(); } } } if (item == call) { int num2 = paramCount + ((!info.IsStatic) ? 1 : 0); return stack.ElementAt(stack.Count - (num2 - (index - 1))); } } return null; } private int StackChange(Instruction i) { //IL_0004: 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_000c: 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_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Invalid comparison between Unknown and I4 //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: 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_00a9: 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_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Invalid comparison between Unknown and I4 //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Invalid comparison between Unknown and I4 //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Invalid comparison between Unknown and I4 //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Invalid comparison between Unknown and I4 //IL_0034: 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_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Invalid comparison between Unknown and I4 //IL_0046: 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_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_00e4: 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) int num = 0; OpCode opCode = i.OpCode; StackBehaviour stackBehaviourPop = ((OpCode)(ref opCode)).StackBehaviourPop; StackBehaviour val = stackBehaviourPop; if ((int)val != 1) { if ((int)val != 2) { if ((int)val == 27 && (i.OpCode == OpCodes.Call || i.OpCode == OpCodes.Callvirt)) { object operand = i.Operand; IMethodSignature val2 = (IMethodSignature)((operand is IMethodSignature) ? operand : null); int num2 = val2.Parameters.Count; if (val2.HasThis) { num2++; } num += num2; } } else { num += 2; } } else { num++; } opCode = i.OpCode; StackBehaviour stackBehaviourPush = ((OpCode)(ref opCode)).StackBehaviourPush; StackBehaviour val3 = stackBehaviourPush; if ((int)val3 != 20) { if ((int)val3 != 21) { if ((int)val3 == 28 && (i.OpCode == OpCodes.Call || i.OpCode == OpCodes.Callvirt)) { object operand2 = i.Operand; IMethodSignature val4 = (IMethodSignature)((operand2 is IMethodSignature) ? operand2 : null); if (((MemberReference)val4.ReturnType).FullName != typeof(void).FullName) { num--; } } } else { num -= 2; } } else { num--; } return num; } } public static class SpriteHandler { public static Sprite ProcessSprite(string resource) { //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Expected O, but got Unknown //IL_0182: 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_00aa: 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_00b7: Expected O, but got Unknown //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Unknown result type (might be due to invalid IL or missing references) Stream manifestResourceStream = typeof(SpriteHandler).Assembly.GetManifestResourceStream("ESBM.Resources." + resource); byte[] array = new byte[manifestResourceStream.Length]; manifestResourceStream.Read(array); Texture2D val = new Texture2D(2, 2, (TextureFormat)4, false); ImageConversion.LoadImage(val, array); ((Texture)val).filterMode = (FilterMode)1; ((Texture)val).wrapMode = (TextureWrapMode)1; val.Apply(false, false); int width = ((Texture)val).width; int height = ((Texture)val).height; int num = Math.Max(width, height); int num2 = (num - width) / 2; int num3 = (num - height) / 2; Texture2D val2 = val; if (width != height) { val2 = new Texture2D(num, num, val.format, false); Color val3 = default(Color); ((Color)(ref val3))..ctor(0f, 0f, 0f, 0f); for (int i = 0; i < num; i++) { for (int j = 0; j < num; j++) { val2.SetPixel(j, i, val3); } } for (int k = 0; k < height; k++) { for (int l = 0; l < width; l++) { val2.SetPixel(l + num2, k + num3, val.GetPixel(l, k)); } } val2.Apply(false, false); } return Sprite.Create(val2, new Rect(0f, 0f, (float)((Texture)val2).width, (float)((Texture)val2).height), new Vector2(0.5f, 0.5f), 100f, 0u, (SpriteMeshType)0); } } public class ValueData { public string sVal; public int iVal; public float fVal; public bool bVal; public string eVal; public Sprite spVal; public string[] sVals; public int[] iVals; public float[] fVals; public bool[] bVals; public string operation; public Filter filter; public void Apply(FieldInfo info, object instance = null) { object obj = null; if (info.FieldType == typeof(string)) { obj = sVal; } else if (info.FieldType == typeof(int)) { obj = iVal; } else if (info.FieldType == typeof(byte)) { obj = (byte)iVal; } else if (info.FieldType == typeof(float)) { obj = fVal; } else if (info.FieldType == typeof(bool)) { obj = sVal; } else if (info.FieldType.IsEnum) { obj = Enum.Parse(info.FieldType, eVal); } else if (info.FieldType == typeof(string[])) { obj = sVals; } else if (info.FieldType == typeof(int[])) { obj = iVals; } else if (info.FieldType == typeof(byte[])) { obj = CastArray<byte>(iVals); } else if (info.FieldType == typeof(float[])) { obj = fVals; } else if (info.FieldType == typeof(bool[])) { obj = bVals; } else { if (!(info.FieldType == typeof(Sprite))) { return; } obj = spVal; } info.SetValue(instance, v(obj)); object v(object f) { object value = info.GetValue(instance); if (value != null) { return ResolveOperation(value, f); } return f; } } public void Apply(PropertyInfo info, object instance) { object obj = null; if (info.PropertyType == typeof(string)) { obj = sVal; } else if (info.PropertyType == typeof(int)) { obj = iVal; } else if (info.PropertyType == typeof(byte)) { obj = (byte)iVal; } else if (info.PropertyType == typeof(float)) { obj = fVal; } else if (info.PropertyType == typeof(bool)) { obj = sVal; } else if (info.PropertyType.IsEnum) { obj = Enum.Parse(info.PropertyType, eVal); } else if (info.PropertyType == typeof(string[])) { obj = sVals; } else if (info.PropertyType == typeof(int[])) { obj = iVals; } else if (info.PropertyType == typeof(byte[])) { obj = CastArray<byte>(iVals); } else if (info.PropertyType == typeof(float[])) { obj = fVals; } else if (info.PropertyType == typeof(bool[])) { obj = bVals; } else { if (!(info.PropertyType == typeof(Sprite))) { return; } obj = spVal; } info.SetValue(instance, v(obj)); object v(object f) { object value = info.GetValue(instance); if (value != null) { return ResolveOperation(value, f); } return f; } } public void EmitValue(PropertyInfo info, ILCursor c, bool op = false) { EmitValue(info.PropertyType, c, op); } public void EmitValue(FieldInfo info, ILCursor c, bool op = false) { EmitValue(info.FieldType, c, op); } public void EmitValue(MethodInfo info, ILCursor c, bool op = false) { EmitValue(info.ReturnType, c, op); } public void EmitValue(ParameterInfo info, ILCursor c, bool op = false) { EmitValue(info.ParameterType, c, op); } public void EmitValue(Type type, ILCursor c, bool ope = false) { //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: 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) //IL_028a: Unknown result type (might be due to invalid IL or missing references) if (type == typeof(string)) { Emit(OpCodes.Ldstr, sVal); } else if (type == typeof(int) || type == typeof(byte)) { Emit(OpCodes.Ldc_I4, iVal); } else if (type == typeof(float)) { Emit(OpCodes.Ldc_R4, fVal); } else if (type == typeof(bool)) { Emit(OpCodes.Ldc_I4, bVal ? 1 : 0); } else if (type == typeof(int[])) { EmitArray(c, iVals); } else if (type == typeof(byte[])) { EmitArray(c, CastArray<byte>(iVals)); } else if (type == typeof(string[])) { EmitArray(c, sVals); } else if (type == typeof(float[])) { EmitArray(c, fVals); } else if (type == typeof(bool[])) { EmitArray(c, bVals); } else if (type == typeof(Sprite)) { c.EmitDelegate<Func<Sprite>>((Func<Sprite>)(() => spVal)); } else if (type.IsEnum) { Type underlyingType = Enum.GetUnderlyingType(type); c.Emit(GetOpCode(underlyingType), Convert.ChangeType(Enum.Parse(type, eVal), underlyingType)); } void Emit(OpCode op, object val) { //IL_002b: Unknown result type (might be due to invalid IL or missing references) if (ope) { ToObject(c, type); } c.Emit(op, val); if (ope) { ToObject(c, type); c.EmitDelegate<Func<object, object, object>>((Func<object, object, object>)((object l, object r) => ResolveOperation(l, r))); FromObject(c, type); } } } public void FromObject(ILCursor c, Type t) { //IL_001e: 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) if (t.IsValueType) { c.Emit(OpCodes.Unbox_Any, t); } else { c.Emit(OpCodes.Castclass, t); } } public void ToObject(ILCursor c, Type t) { //IL_001e: 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) if (t.IsValueType) { c.Emit(OpCodes.Box, t); } else { c.Emit(OpCodes.Castclass, typeof(object)); } } public OpCode GetOpCode(Type type) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: 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_005b: 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_0097: 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_00b6: 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_00dd: 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_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) if (type == typeof(byte)) { return OpCodes.Ldc_I4; } if (type == typeof(int)) { return OpCodes.Ldc_I4; } if (type == typeof(short)) { return OpCodes.Ldc_I4; } if (type == typeof(long)) { return OpCodes.Ldc_I8; } if (type == typeof(ulong)) { return OpCodes.Ldc_I8; } if (type == typeof(float)) { return OpCodes.Ldc_R4; } if (type == typeof(double)) { return OpCodes.Ldc_R8; } return OpCodes.Ldc_I4; } public T[] CastArray<T>(Array array) { T[] array2 = new T[array.Length]; for (int i = 0; i < array.Length; i++) { array2[i] = (T)array.GetValue(i); } return array2; } public void EmitArray<T>(ILCursor c, T[] array) { c.EmitDelegate<Func<T[]>>((Func<T[]>)(() => array)); } public object ResolveOperation(object left, object right) { if (operation == null) { return right; } bool flag = left is float || right is float; switch (operation.ToLower()) { case "add": if (left is string text && right is string text2) { return text + text2; } if (flag) { return Convert.ToSingle(left) + Convert.ToSingle(right); } return Convert.ToInt32(left) + Convert.ToInt32(right); case "sub": case "subtract": if (flag) { return Convert.ToSingle(left) - Convert.ToSingle(right); } return Convert.ToInt32(left) - Convert.ToInt32(right); case "mul": case "mult": case "multiply": if (flag) { return Convert.ToSingle(left) * Convert.ToSingle(right); } return Convert.ToInt32(left) * Convert.ToInt32(right); case "div": case "divide": if (flag) { return Convert.ToSingle(left) / Convert.ToSingle(right); } return Convert.ToInt32(left) / Convert.ToInt32(right); case "mod": case "modulo": if (flag) { return Convert.ToSingle(left) % Convert.ToSingle(right); } return Convert.ToInt32(left) % Convert.ToInt32(right); case "replace": return (left as string).Replace(filter.StringFilter, right as string); default: return right; } } } public class Filter { public string StringFilter; public string FloatFilter; public string IntFilter; } } namespace ESBM.Utils { public static class StringExtensions { public static void Add(this string token, string text) { LanguageAPI.Add(token, text); } public static void RemoveComponent<T>(this GameObject gameObject) where T : Component { Object.Destroy((Object)(object)gameObject.GetComponent<T>()); } public static void RemoveComponents<T>(this GameObject gameObject) where T : Component { T[] components = gameObject.GetComponents<T>(); for (int i = 0; i < components.Length; i++) { Object.Destroy((Object)(object)components[i]); } } public static T GetRandom<T>(this List<T> list, Xoroshiro128Plus rng = null) { if (rng == null) { return list[Random.RandomRangeInt(0, list.Count)]; } return list[rng.RangeInt(0, list.Count)]; } public static void AddComponent<T>(this Component self) where T : Component { self.gameObject.AddComponent<T>(); } } public static class HumanFriendlyInteger { private static string[] ones = new string[10] { "", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine" }; private static string[] teens = new string[10] { "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen" }; private static string[] tens = new string[8] { "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety" }; private static string[] thousandsGroups = new string[4] { "", " Thousand", " Million", " Billion" }; private static string FriendlyInteger(int n, string leftDigits, int thousands) { if (n == 0) { return leftDigits; } string text = leftDigits; if (text.Length > 0) { text += " "; } if (n < 10) { text += ones[n]; } else if (n < 20) { text += teens[n - 10]; } else if (n < 100) { text += FriendlyInteger(n % 10, tens[n / 10 - 2], 0); } else if (n < 1000) { text += FriendlyInteger(n % 100, ones[n / 100] + " Hundred", 0); } else { text += FriendlyInteger(n % 1000, FriendlyInteger(n / 1000, "", thousands + 1), 0); if (n % 1000 == 0) { return text; } } return text + thousandsGroups[thousands]; } public static string IntegerToWritten(int n) { if (n == 0) { return "Zero"; } if (n < 0) { return "Negative " + IntegerToWritten(-n); } return FriendlyInteger(n, "", 0).ToLower(); } } public static class Keywords { public static string Poison = "KEYWORD_POISON"; public static string Regenerative = "KEYWORD_RAPID_REGEN"; public static string Agile = "KEYWORD_AGILE"; public static string HealthCost = "KEYWORD_PERCENT_HP"; public static string Disperse = "KEYWORD_SONIC_BOOM"; public static string Weak = "KEYWORD_WEAK"; public static string Heavy = "KEYWORD_HEAVY"; public static string Freeze = "KEYWORD_FREEZING"; public static string Stun = "KEYWORD_STUNNING"; public static string Expose = "KEYWORD_EXPOSE"; public static string Shock = "KEYWORD_SHOCKING"; public static string Slayer = "KEYWORD_SLAYER"; public static string Hemorrhage = "KEYWORD_SUPERBLEED"; public static string Ignite = "KEYWORD_IGNITE"; public static string Weakpoint = "KEYWORD_WEAKPOINT"; public static string ActiveReload = "KEYWORD_ACTIVERELOAD"; public static string VoidCorruption = "KEYWORD_VOIDCORRUPTION"; } public static class Events { public static uint Play_item_proc_increasePrimaryDamage = 3525110178u; public static uint Play_item_proc_lowerPricedChest = 2861334124u; public static uint Play_obj_portalShaping_activate = 3169369792u; public static uint Play_item_proc_lowerHealthHigherDamage_active_loop = 2806077218u; public static uint Play_item_proc_lowerHealthHigherDamage_proc = 3144264115u; public static uint Stop_item_proc_lowerHealthHigherDamage_active_loop = 1766373184u; public static uint Play_AMB_zone_helminthRoost = 1401190132u; public static uint Play_env_helminth_jumppad_launch = 804535113u; public static uint Play_env_helminth_jumppad_loop = 1121351506u; public static uint Stop_env_helminth_jumppad_loop = 1859759472u; public static uint Play_item_proc_onLevelUpFreeUnlock_activate = 2156400271u; public static uint Play_item_proc_onLevelUpFreeUnlock_idle = 2826299554u; public static uint Play_item_proc_extraStatsOnLevelUp = 1263627182u; public static uint Play_AMB_zone_villageNight = 446631000u; public static uint Play_item_proc_extraShrineItem = 3488308441u; public static uint Play_ui_artifact_delusion_activate = 2155448709u; public static uint Play_ui_artifact_delusion_failure = 2684473644u; public static uint Play_ui_artifact_delusion_reset = 708431835u; public static uint Play_ui_artifact_delusion_success = 3325363891u; public static uint Play_halcyonite_death = 3525343637u; public static uint Play_halcyonite_idle_loop = 983867080u; public static uint Play_halcyonite_impact = 33305611u; public static uint Play_halcyonite_move_loop = 480080479u; public static uint Play_halcyonite_skill1_chargeup = 1290182503u; public static uint Play_halcyonite_skill1_swing = 936256326u; public static uint Play_halcyonite_skill1_thrust = 1083715706u; public static uint Play_halcyonite_skill2_chargeup = 3979952754u; public static uint Play_halcyonite_skill2_shoot = 3274455546u; public static uint Play_halcyonite_skill3_end = 3079505645u; public static uint Play_halcyonite_skill3_loop = 67562408u; public static uint Play_halcyonite_skill3_start = 970916454u; public static uint Play_halcyonite_spawn = 3688151658u; public static uint Play_halcyonite_VO_alert = 1322088115u; public static uint Stop_halcyonite_idle_loop = 1332844866u; public static uint Stop_halcyonite_move_loop = 2962578225u; public static uint Stop_halcyonite_skill3_loop = 3070087286u; public static uint Play_AMB_zone_lakesDay = 3374250540u; public static uint Play_env_lakes_jumppad_launch = 1567260962u; public static uint Play_env_lakes_jumppad_loop = 3135402281u; public static uint Play_env_lakes_waterfall_loop = 1015031338u; public static uint Stop_env_lakes_jumppad_loop = 417186615u; public static uint Stop_env_lakes_waterfall_loop = 3880166920u; public static uint Play_seeker_selectScreen_idle = 1955843131u; public static uint Play_seeker_skill1_fire = 3158006061u; public static uint Play_seeker_skill1_fire_orb = 39374599u; public static uint Play_seeker_skill1_impact = 2378122475u; public static uint Play_seeker_skill1_orb_explo = 3861306019u; public static uint Play_seeker_skill2_active_loop = 2229939235u; public static uint Play_seeker_skill2_alt_fire = 3268729620u; public static uint Play_seeker_skill2_alt_loop = 2382979698u; public static uint Play_seeker_skill2_end = 3897039939u; public static uint Play_seeker_skill2_fire = 2101638456u; public static uint Play_seeker_skill2_flight_loop = 3838730855u; public static uint Play_seeker_skill2_start = 1063538712u; public static uint Play_seeker_skill3_explo = 985996859u; public static uint Play_seeker_skill3_start = 90951373u; public static uint Play_seeker_skill4_combo_correct = 177463755u; public static uint Play_seeker_skill4_combo_wrong = 884291666u; public static uint Play_seeker_skill4_start = 3296174602u; public static uint Play_seeker_skill4_timeout = 2305681923u; public static uint Play_seeker_skill4_win = 732991608u; public static uint Play_seeker_step = 4226349104u; public static uint Play_seeker_step_sprint = 1145656191u; public static uint Stop_seeker_skill2_active_loop = 127139369u; public static uint Stop_seeker_skill2_alt_loop = 3707674044u; public static uint Stop_seeker_skill2_flight_loop = 2720151021u; public static uint Stop_seeker_skill3_loop = 1337233567u; public static uint Stop_seeker_skill4_start = 2327375048u; public static uint Play_wBisonDeath = 1113517888u; public static uint Play_wBisonHit = 1197473233u; public static uint Play_wBisonShoot1 = 3268390400u; public static uint Play_wBisonSpawn = 1249767875u; public static uint Play_wBlastdoor = 3043230225u; public static uint Play_wBoarDeath = 3944593657u; public static uint Play_wBoarExplosion = 3091761946u; public static uint Play_wBoarHit = 1332006904u; public static uint Play_wBoarMDeath = 2887033908u; public static uint Play_wBoarShoot1 = 2651342963u; public static uint Play_wBoss1Shoot1 = 3380168965u; public static uint Play_wBoss1Shoot2 = 3380168966u; public static uint Play_wBossSkill2 = 857592033u; public static uint Play_wBubbleShield = 3999340508u; public static uint Play_wBullet1 = 3448409474u; public static uint Play_wBullet2 = 3448409473u; public static uint Play_wBullet3 = 3448409472u; public static uint Play_wCasing = 1800381192u; public static uint Play_wChainLightning = 1913174254u; public static uint Play_wChat = 1231583519u; public static uint Play_wChefShoot2_1 = 4002996080u; public static uint Play_wChest0 = 273185112u; public static uint Play_wChest1 = 273185113u; public static uint Play_wChest2 = 273185114u; public static uint Play_wChest5 = 273185117u; public static uint Play_wChildDeath = 3731152613u; public static uint Play_wChildGShoot1 = 2978407106u; public static uint Play_wChildHit = 4072685316u; public static uint Play_wChildShoot1 = 4260787991u; public static uint Play_wClayDeath = 1853199952u; public static uint Play_wClayHit = 2864197409u; public static uint Play_wClayShoot1 = 1969574576u; public static uint Play_wClaySpawn = 1481867283u; public static uint Play_wClick = 1105771879u; public static uint Play_wCoin = 1232716514u; public static uint Play_wCoins = 2360199605u; public static uint Play_wCrabDeath = 2914438815u; public static uint Play_wCrabSpawn = 400103432u; public static uint Play_wCrit_01 = 3774687669u; public static uint Play_wCrowbar = 2755541643u; public static uint Play_wCutsceneAlarm = 2172459452u; public static uint Play_wCutsceneJet = 197474154u; public static uint Play_wCutscenePass = 1461112566u; public static uint Play_wDifficulty = 3657652262u; public static uint Play_wDoll = 1118795882u; public static uint Play_wDrill = 1252691444u; public static uint Play_wDrone1Spawn = 3109566651u; public static uint Play_wEfMushroom = 3355655210u; public static uint Play_wEmbryo = 3519041107u; public static uint Play_wError = 2120356473u; public static uint Play_wExplosiveShot = 1244890662u; public static uint Play_wFeralShoot1 = 732734997u; public static uint Play_wFeralShoot2 = 732734998u; public static uint Play_wFrozen = 1850209911u; public static uint Play_wGeyser = 2014257388u; public static uint Play_wGiantJellyExplosion = 923348941u; public static uint Play_wGiantJellyHit = 3830172407u; public static uint Play_wGolemAttack1 = 1019251312u; public static uint Play_wGolemDeath = 469957963u; public static uint Play_wGolemHit = 1924739498u; public static uint Play_wGolemSpawn = 2658053020u; public static uint Play_wGuardDeath = 2195517878u; public static uint Play_wGuardHit = 3726358359u; public static uint Play_wGuardSpawn = 1193575573u; public static uint Play_wHeavyShoot1 = 2266555164u; public static uint Play_wHitlist = 1828045284u; public static uint Play_wHuntressShoot1 = 2714607293u; public static uint Play_wHuntressShoot3 = 2714607295u; public static uint Play_wImpDeath = 1405469125u; public static uint Play_wImpGShoot1 = 702433570u; public static uint Play_wImpHit = 2697432036u; public static uint Play_wImpShoot1 = 2776445175u; public static uint Play_wImpShoot2 = 2776445172u; public static uint Play_wJanitorShoot1_1 = 2483794322u; public static uint Play_wJanitorShoot1_2 = 2483794321u; public static uint Play_wJanitorShoot2_1 = 1409879677u; public static uint Play_wJanitorShoot2_2 = 1409879678u; public static uint Play_wJanitorShoot4_1 = 1410865383u; public static uint Play_wJanitorShoot4_2 = 1410865380u; public static uint Play_wJarSouls = 4162844532u; public static uint Play_wJellyDeath = 2679553851u; public static uint Play_wJellyHit = 213554906u; public static uint Play_wLevelUp = 1919980434u; public static uint Play_wLevelUpWar = 4023542052u; public static uint Play_wLightning = 1330288141u; public static uint Play_wLizardDeath = 2074794113u; public static uint Play_wLizardGDeath = 4177291774u; public static uint Play_wLizardGHit = 1425978735u; public static uint Play_wLizardGShoot1 = 1170430294u; public static uint Play_wLizardGSpawn = 2684018717u; public static uint Play_wLizardHit = 4207177744u; public static uint Play_wLizardShoot1 = 287412267u; public static uint Play_wLizardSpawn = 1283696654u; public static uint Play_wMine = 1021358464u; public static uint Play_wMinerShoot1 = 1056078324u; public static uint Play_wMinerShoot2 = 1056078327u; public static uint Play_wMinerShoot3 = 1056078326u; public static uint Play_wMinerShoot4 = 1056078321u; public static uint Play_wMissileLaunch = 3415171634u; public static uint Play_wMS = 3023098025u; public static uint Play_wMush = 1473662818u; public static uint Play_wMushDeath = 3463803836u; public static uint Play_wMushHit = 2887429069u; public static uint Play_wMushShoot1 = 487910212u; public static uint Play_wMushSpawn = 4208364455u; public static uint Play_wNautShoot1 = 874719151u; public static uint Play_wPickup = 745840569u; public static uint Play_wPigShoot1 = 4172429713u; public static uint Play_wPodDeath = 368641344u; public static uint Play_wPodHit = 4069172177u; public static uint Play_wPyroShoot1 = 1977581991u; public static uint Play_wReflect = 3534459008u; public static uint Play_wReload = 1935874270u; public static uint Play_wRevive = 3924543518u; public static uint Play_wRiotGrenade = 1170699791u; public static uint Play_wRiotShoot1 = 392428577u; public static uint Play_wSamuraiShoot1 = 2292726403u; public static uint Play_wSamuraiShoot2 = 2292726400u; public static uint Play_wScavengerHit = 3803292342u; public static uint Play_wShield = 144484126u; public static uint Play_wShrine1 = 1516352125u; public static uint Play_wSmite = 1676655215u; public static uint Play_wSniper = 1326789400u; public static uint Play_wSniper2 = 2522836730u; public static uint Play_wSniperShoot3 = 3029163620u; public static uint Play_wSpiderHit = 1534240581u; public static uint Play_wSpiderShoot1 = 4018099836u; public static uint Play_wSpitterHit = 530229631u; public static uint Play_wSpitterShoot1 = 1863108870u; public static uint Play_wSpitterSpawn = 291139117u; public static uint Play_wSqueaky = 1860044956u; public static uint Play_wTeleporter = 1289080377u; public static uint Play_wUse = 1100859862u; public static uint Play_wWatch = 3354880454u; public static uint Play_wWispBDeath = 3021624856u; public static uint Play_wWispBShoot1 = 2025586984u; public static uint Play_wWispDeath = 3169292106u; public static uint Play_wWispGDeath = 1968672835u; public static uint Play_wWispGShoot1 = 969982957u; public static uint Play_wWispHit = 2561235483u; public static uint Play_wWispShoot1 = 914723770u; public static uint Play_wWispSpawn = 3436613665u; public static uint Play_wWormBurning = 2192059253u; public static uint Play_wWormDeath = 3793594386u; public static uint Play_wWormExplosion = 2529227609u; public static uint Play_wWormHit = 3504753139u; public static uint Play_wWormRoar = 1700089088u; public static uint Play_obj_portalColossus_activate = 812056455u; public static uint Play_obj_portalColossus_loop = 1986410382u; public static uint Play_obj_shrineColossus_activate = 2363010998u; public static uint Play_obj_shrineColossus_locked_loop = 3583777048u; public static uint Stop_obj_portalColossus_loop = 1709721620u; public static uint Stop_obj_shrineColossus_locked_loop = 602838254u; public static uint Play_AMB_zone_village = 2140215618u; public static uint Kill_loops = 3633988413u; public static uint Kill_SelectScreen = 314485028u; public static uint Pause_All = 3864097025u; public static uint Play_Achievement = 3433956687u; public static uint Play_acid_larva_attack1_explo = 2451117845u; public static uint Play_acid_larva_attack1_loop = 3362763155u; public static uint Play_acid_larva_attack1_start = 1646746355u; public static uint Play_acid_larva_death = 3568098837u; public static uint Play_acid_larva_idle = 2621183947u; public static uint Play_acid_larva_impact = 2231265675u; public static uint Play_acid_larva_spawn = 3730906858u; public static uint Play_acid_larva_sprint_land = 2824450583u; public static uint Play_acid_larva_sprint_leap = 2639308470u; public static uint Play_acid_larva_step = 828559811u; public static uint Play_acrid_m1_bigSlash = 1656148530u; public static uint Play_acrid_m1_hit = 1822928838u; public static uint Play_acrid_m1_slash = 1719910342u; public static uint Play_acrid_m2_bite_hit = 2714436782u; public static uint Play_acrid_m2_bite_shoot = 456215952u; public static uint Play_acrid_m2_explode = 2736075181u; public static uint Play_acrid_m2_fly_loop = 644013190u; public static uint Play_acrid_m2_shoot = 999289595u; public static uint Play_acrid_R_fly_loop = 1915769387u; public static uint Play_acrid_R_infect = 1007919396u; public static uint Play_acrid_R_shoot = 1160201708u; public static uint Play_acrid_shift_fly_loop = 642600073u; public static uint Play_acrid_shift_jump = 1749522733u; public static uint Play_acrid_shift_land = 320622162u; public static uint Play_acrid_shift_puddle_loop = 1556265730u; public static uint Play_acrid_sprint_start = 801642819u; public static uint Play_acrid_sprint_stop = 3680364993u; public static uint Play_acrid_step = 372958860u; public static uint Play_acrid_step_sprint = 2575316715u; public static uint Play_acrid_step_sprint_hand = 3560327381u; public static uint Play_affix_mendingBomb_explode = 841626335u; public static uint Play_affix_mendingChain_loop = 3768810533u; public static uint Play_affix_void_bug_infect = 939369398u; public static uint Play_affix_void_bug_loop = 1959624827u; public static uint Play_affix_void_bug_spawn = 3394761874u; public static uint Play_affix_void_spawn = 1535219985u; public static uint Play_AMB_zone_arena = 1539048487u; public static uint Play_AMB_zone_artifactWorld = 4134483156u; public static uint Play_AMB_zone_char_select = 1641027481u; public static uint Play_AMB_zone_damp_cave_simple = 1142851345u; public static uint Play_AMB_zone_dark_rain = 938309267u; public static uint Play_AMB_zone_desert = 56392161u; public static uint Play_AMB_zone_lakesDay_01 = 438484882u; public static uint Play_AMB_zone_limbo = 1359925925u; public static uint Play_AMB_zone_moon = 3075336325u; public static uint Play_AMB_zone_rootJungle = 2348244945u; public static uint Play_AMB_zone_ship_graveyard = 642154978u; public static uint Play_AMB_zone_skyMeadow = 3453798682u; public static uint Play_AMB_zone_skyMeadow_hiddenLab = 3040657526u; public static uint Play_AMB_zone_tundra = 38798342u; public static uint Play_AMB_zone_wisp_graveyard = 751162865u; public static uint Play_arenaCrab_idle_VO = 158852972u; public static uint Play_arenaCrab_swim_land = 2386788264u; public static uint Play_arenaCrab_swim_loop = 2401300333u; public static uint Play_arenaCrab_swim_plant = 1572198610u; public static uint Play_arenaCrab_swim_stroke = 2022745195u; public static uint Play_arenaCrab_swim_uproot = 3172304260u; public static uint Play_artifactBoss_attack1_explode = 71177277u; public static uint Play_artifactBoss_attack1_flightLoop = 2591078442u; public static uint Play_artifactBoss_attack1_shoot = 2196529419u; public static uint Play_artifactBoss_death = 4163357724u; public static uint Play_artifactBoss_idle_VO = 1345400638u; public static uint Play_artifactBoss_loop_level1 = 184703648u; public static uint Play_artifactBoss_loop_level2 = 184703651u; public static uint Play_artifactBoss_loop_level3 = 184703650u; public static uint Play_artifactBoss_spawn = 188493575u; public static uint Play_artifactBoss_takehit = 1098257974u; public static uint Play_bandit2_m1_reload_bullet = 452712768u; public static uint Play_bandit2_m1_reload_finish = 888917029u; public static uint Play_bandit2_m1_rifle = 2347126876u; public static uint Play_bandit2_m1_shotgun = 4206201632u; public static uint Play_bandit2_m2_alt_throw = 595565201u; public static uint Play_bandit2_m2_impact = 2278422317u; public static uint Play_bandit2_m2_slash = 4103120750u; public static uint Play_bandit2_R_alt_kill = 4143438424u; public static uint Play_bandit2_R_fire = 1435016856u; public static uint Play_bandit2_R_kill = 3719464252u; public static uint Play_bandit2_R_load = 3765877048u; public static uint Play_bandit2_shift_enter = 2967307668u; public static uint Play_bandit2_shift_exit = 850833398u; public static uint Play_bandit2_step = 3692683083u; public static uint Play_bandit2_step_sprint = 1764271662u; public static uint Play_bandit_M1_pump = 1853111450u; public static uint Play_bandit_M1_shot = 3033552564u; public static uint Play_bandit_M2_load = 2190546849u; public static uint Play_bandit_M2_shot = 1980580961u; public static uint Play_bandit_shift_end = 2770013503u; public static uint Play_bandit_shift_jump = 1325724668u; public static uint Play_bandit_shift_land = 1259710815u; public static uint Play_beetle_guard_attack1 = 763398245u; public static uint Play_beetle_guard_attack2_initial = 2581251415u; public static uint Play_beetle_guard_attack2_spikeLoop = 542781083u; public static uint Play_beetle_guard_death = 1527577102u; public static uint Play_beetle_guard_idle_VO = 3561602500u; public static uint Play_beetle_guard_impact = 2349109310u; public static uint Play_beetle_guard_spawn = 515189165u; public static uint Play_beetle_guard_step = 2628071246u; public static uint Play_beetle_queen_attack1 = 555937964u; public static uint Play_beetle_queen_attack2_impact = 3157521796u; public static uint Play_beetle_queen_attack2_projectile_loop = 1477410428u; public static uint Play_beetle_queen_attack2_shoot = 4217844119u; public static uint Play_beetle_queen_death = 451763711u; public static uint Play_beetle_queen_impact = 806513485u; public static uint Play_beetle_queen_spawn = 2698326632u; public static uint Play_beetle_queen_step = 2551161845u; public static uint Play_beetle_queen_VO_idle = 1845046503u; public static uint Play_beetle_worker_attack = 4241852727u; public static uint Play_beetle_worker_death = 383219511u; public static uint Play_beetle_worker_idle = 1901530073u; public static uint Play_beetle_worker_impact = 1338816453u; public static uint Play_beetle_worker_spawn = 1471942880u; public static uint Play_beetle_worker_step = 1809191501u; public static uint Play_bellBody_attackCreate = 780374380u; public static uint Play_bellBody_attackLand = 1732098311u; public static uint Play_bellBody_attackShoot = 4097802741u; public static uint Play_bellBody_death = 2182572274u; public static uint Play_bellBody_idle_loop = 345208571u; public static uint Play_bellBody_idle_VO = 4021378928u; public static uint Play_bellBody_impact = 2147523650u; public static uint Play_bellBody_spawn = 4144720393u; public static uint Play_bison_charge_attack_collide = 2909411958u; public static uint Play_bison_charge_attack_end_skid = 2235015895u; public static uint Play_bison_charge_attack_start = 2509443544u; public static uint Play_bison_charge_attack_tell = 4101791573u; public static uint Play_bison_death = 3590751484u; public static uint Play_bison_headbutt_attack_hit = 3802411724u; public static uint Play_bison_headbutt_attack_swing = 1417054473u; public static uint Play_bison_idle_graze = 2516815946u; public static uint Play_bison_idle_VO = 3855060446u; public static uint Play_bison_impact = 4030239748u; public static uint Play_bison_spawn = 3910957799u; public static uint Play_bison_step = 2839275484u; public static uint Play_bison_step_charge = 532574671u; public static uint Play_bleedOnCritAndExplode_explode = 2693964769u; public static uint Play_bleedOnCritAndExplode_impact = 3570667772u; public static uint Play_blindVermin_attack1_bite = 901504895u; public static uint Play_blindVermin_death = 3786262665u; public static uint Play_blindVermin_idle_VO = 2536191415u; public static uint Play_blindVermin_impact = 121244671u; public static uint Play_blindVermin_spawn = 2995165238u; public static uint Play_blindVermin_step = 294344023u; public static uint Play_boss_spawn_radius_appear = 4035156426u; public static uint Play_boss_spawn_rumble = 2327315087u; public static uint Play_captain_drone_idle_VO = 1028355892u; public static uint Play_captain_drone_quick_move = 8118127u; public static uint Play_captain_drone_zap = 3992615829u; public static uint Play_captain_m1_chargeStart = 2544146878u; public static uint Play_captain_m1_hit = 3819278833u; public static uint Play_captain_m1_reload = 2226849933u; public static uint Play_captain_m1_shootWide = 532604026u; public static uint Play_captain_m1_shotgun_charge_loop = 2453063032u; public static uint Play_captain_m1_shotgun_shootTight = 1348536996u; public static uint Play_captain_m2_tazed_loop = 3117407908u; public static uint Play_captain_m2_tazer_bounce = 1888136956u; public static uint Play_captain_m2_tazer_impact = 58834266u; public static uint Play_captain_m2_tazer_shoot = 832597929u; public static uint Play_captain_R_aim = 364785367u; public static uint Play_captain_R_aiming_loop = 1040620982u; public static uint Play_captain_R_confirmLocation = 1531948689u; public static uint Play_captain_R_impact = 3902637834u; public static uint Play_captain_R_turret_build = 1359756347u; public static uint Play_captain_R_turret_healing_loop = 788149618u; public static uint Play_captain_shift_active_loop = 3941125189u; public static uint Play_captain_shift_confirm = 2140775262u; public static uint Play_captain_shift_end = 803261989u; public static uint Play_captain_shift_impact = 3269630552u; public static uint Play_captain_shift_preImpact = 1069989355u; public static uint Play_captain_shift_start = 2113266862u; public static uint Play_captain_sprint_start = 3430012852u; public static uint Play_captain_sprint_stop = 1094493224u; public static uint Play_captain_step = 1226612947u; public static uint Play_captain_step_sprint = 2831720022u; public static uint Play_captain_utility_variant_impact = 1357225738u; public static uint Play_captain_utility_variant_laser_loop = 2451237826u; public static uint Play_captain_utility_variant_preImpact = 3461917085u; public static uint Play_char_glass_death = 359633836u; public static uint Play_char_jump_VO = 1654395377u; public static uint Play_char_land = 81910470u; public static uint Play_char_land_fall_damage = 2642009198u; public static uint Play_clayboss_death = 2559714313u; public static uint Play_clayboss_idle_loop = 3870838284u; public static uint Play_clayboss_idle_VO = 628079927u; public static uint Play_clayboss_impact = 1890981503u; public static uint Play_clayboss_M1_explo = 2368148000u; public static uint Play_clayboss_m1_lidClose = 1576056771u; public static uint Play_clayboss_m1_lidOpen = 1470926389u; public static uint Play_clayboss_m1_shoot = 2922284055u; public static uint Play_clayboss_m2_explo = 4043539191u; public static uint Play_clayboss_m2_projectile_loop = 3593581531u; public static uint Play_clayboss_m2_rise = 916955724u; public static uint Play_clayboss_m2_shoot = 600290068u; public static uint Play_clayboss_R_mulch_loop = 968500644u; public static uint Play_clayboss_R_start = 988517284u; public static uint Play_clayboss_R_tether_loop = 3132967749u; public static uint Play_clayboss_spawn = 1768616886u; public static uint Play_clayboss_step = 3088890839u; public static uint Play_clayboss_step_legMove = 869404285u; public static uint Play_clayboss_walk_loop = 212114079u; public static uint Play_clayBruiser_attack1_shoot_bullet = 491470286u; public static uint Play_clayBruiser_attack1_shoot_flyby = 3572694566u; public static uint Play_clayBruiser_attack1_shootLoop = 649113537u; public static uint Play_clayBruiser_attack1_windDown = 263088688u; public static uint Play_clayBruiser_attack1_windUp = 1916278867u; public static uint Play_clayBruiser_attack2_shoot = 1288244652u; public static uint Play_clayBruiser_death = 3332873880u; public static uint Play_clayBruiser_idle_VO = 2519366882u; public static uint Play_clayBruiser_impact = 1250949200u; public static uint Play_clayBruiser_spawn = 817063995u; public static uint Play_clayBruiser_step = 1697475496u; public static uint Play_clayGrenadier_attack1_chargeup = 318212996u; public static uint Play_clayGrenadier_attack1_explode = 2432531130u; public static uint Play_clayGrenadier_attack1_launch = 1826024586u; public static uint Play_clayGrenadier_attack2_chargeup = 1264580