Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of MiscMods v1.0.2
MiscMods.dll
Decompiled 2 years ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using EntityStates; using EntityStates.BeetleGuardMonster; using EntityStates.Bell.BellWeapon; using EntityStates.ClayBoss; using EntityStates.ClayBoss.ClayBossWeapon; using EntityStates.GravekeeperBoss; using EntityStates.GreaterWispMonster; using EntityStates.ImpBossMonster; using EntityStates.ImpMonster; using EntityStates.LemurianBruiserMonster; using EntityStates.LemurianMonster; using EntityStates.MagmaWorm; using EntityStates.RoboBallBoss.Weapon; using EntityStates.ScavMonster; using EntityStates.VagrantMonster.Weapon; using EntityStates.Vulture.Weapon; using HG; using HG.GeneralSerializer; using HarmonyLib; using IL.EntityStates; using IL.EntityStates.BeetleGuardMonster; using IL.EntityStates.Bell.BellWeapon; using IL.EntityStates.ClayBoss; using IL.EntityStates.ClayBoss.ClayBossWeapon; using IL.EntityStates.GravekeeperBoss; using IL.EntityStates.GreaterWispMonster; using IL.EntityStates.ImpBossMonster; using IL.EntityStates.ImpMonster; using IL.EntityStates.LemurianBruiserMonster; using IL.EntityStates.LemurianMonster; using IL.EntityStates.RoboBallBoss.Weapon; using IL.EntityStates.ScavMonster; using IL.EntityStates.VagrantMonster.Weapon; using IL.EntityStates.Vulture.Weapon; using KinematicCharacterController; using Microsoft.CodeAnalysis; using MiscMods.Config; using MiscMods.Hooks; using MiscMods.StolenContent; using MiscMods.StolenContent.Beetle; using MiscMods.StolenContent.Donger; using MiscMods.StolenContent.Imp; using MiscMods.StolenContent.Lemur; using MiscMods.StolenContent.Lunar; using MiscMods.StolenContent.Wisp; using MiscMods.StolenContent.Worm; using Mono.Cecil.Cil; using MonoMod.Cil; using MonoMod.RuntimeDetour; using MonoMod.RuntimeDetour.HookGen; using Moonstorm; using On.EntityStates.LemurianMonster; using On.KinematicCharacterController; using On.RoR2; using On.RoR2.CharacterAI; using On.RoR2.Projectile; using On.RoR2.Stats; using R2API; using R2API.Utils; using RiftTitansMod; using RiftTitansMod.Modules; using RiftTitansMod.SkillStates.Blue; using RiftTitansMod.SkillStates.Chicken; using RiskOfOptions; using RiskOfOptions.OptionConfigs; using RiskOfOptions.Options; using RoR2; using RoR2.CharacterAI; using RoR2.Navigation; using RoR2.Projectile; using RoR2.Skills; using RoR2.Stats; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Events; using UnityEngine.Networking; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("MiscMods")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+63b89e2c6d1010600c62ce196a31f4f2d6fa3d58")] [assembly: AssemblyProduct("MiscMods")] [assembly: AssemblyTitle("MiscMods")] [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 MiscMods { [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.score.MiscMods", "MiscMods", "1.0.2")] public class MiscPlugin : BaseUnityPlugin { public const string PluginGUID = "com.score.MiscMods"; public const string PluginAuthor = "score"; public const string PluginName = "MiscMods"; public const string PluginVersion = "1.0.2"; public static MiscPlugin Instance { get; private set; } public static bool LeagueOfLiteralGays => Chainloader.PluginInfos.ContainsKey("com.phreel.TitansOfTheRiftSOTV"); public static bool MSUInstalled => Chainloader.PluginInfos.ContainsKey("com.TeamMoonstorm.MoonstormSharedUtils"); public void Awake() { Instance = this; Log.Init(((BaseUnityPlugin)this).Logger); PluginConfig.Init(((BaseUnityPlugin)this).Config); if (PluginConfig.enableEnemiesPlus.Value) { PluginConfig.EnemiesPlusConfig.Init(); } if (PluginConfig.enableCruelty.Value) { Cruelty.Init(); } if (PluginConfig.enablePrediction.Value) { PredictionHooks.Init(); } if (PluginConfig.enableDirector.Value) { CombatDirector.Init(); } if (PluginConfig.enableUnholy.Value) { UnholyHooks.Init(); } if (PluginConfig.enableShmoovement.Value) { Shmoovement.Init(); } HarmonyHooks.Init(); } } public static class Log { private static ManualLogSource _logSource; internal static void Init(ManualLogSource logSource) { _logSource = logSource; } public static void Debug(string data) { _logSource.LogDebug((object)data); } public static void Error(string data) { _logSource.LogError((object)data); } public static void Fatal(string data) { _logSource.LogFatal((object)data); } public static void Info(string data) { _logSource.LogInfo((object)data); } public static void Message(string data) { _logSource.LogMessage((object)data); } public static void Warning(string data) { _logSource.LogWarning((object)data); } } public static class Utils { private const float zero = 1E-05f; private static float dt => Time.fixedDeltaTime; public static void DumpEntityStateConfig(EntityStateConfiguration esc) { for (int i = 0; i < esc.serializedFieldsCollection.serializedFields.Length; i++) { if (Object.op_Implicit(esc.serializedFieldsCollection.serializedFields[i].fieldValue.objectValue)) { Debug.Log((object)(esc.serializedFieldsCollection.serializedFields[i].fieldName + " - " + (object)esc.serializedFieldsCollection.serializedFields[i].fieldValue.objectValue)); } else { Debug.Log((object)(esc.serializedFieldsCollection.serializedFields[i].fieldName + " - " + esc.serializedFieldsCollection.serializedFields[i].fieldValue.stringValue)); } } } public static void DumpEntityStateConfig(string entityStateName) { DumpEntityStateConfig(LegacyResourcesAPI.Load<EntityStateConfiguration>("entitystateconfigurations/" + entityStateName)); } public static void DumpAddressableEntityStateConfig(string addressablePath) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) DumpEntityStateConfig(Addressables.LoadAssetAsync<EntityStateConfiguration>((object)addressablePath).WaitForCompletion()); } public static Object GetEntityStateFieldObject(string entityStateName, string fieldName) { EntityStateConfiguration val = LegacyResourcesAPI.Load<EntityStateConfiguration>("entitystateconfigurations/" + entityStateName); for (int i = 0; i < val.serializedFieldsCollection.serializedFields.Length; i++) { if (val.serializedFieldsCollection.serializedFields[i].fieldName == fieldName) { return val.serializedFieldsCollection.serializedFields[i].fieldValue.objectValue; } } return null; } public static string GetEntityStateFieldString(string entityStateName, string fieldName) { EntityStateConfiguration val = LegacyResourcesAPI.Load<EntityStateConfiguration>("entitystateconfigurations/" + entityStateName); for (int i = 0; i < val.serializedFieldsCollection.serializedFields.Length; i++) { if (val.serializedFieldsCollection.serializedFields[i].fieldName == fieldName) { return val.serializedFieldsCollection.serializedFields[i].fieldValue.stringValue; } } return string.Empty; } public static bool SetEntityStateField(string entityStateName, string fieldName, Object newObject) { EntityStateConfiguration val = LegacyResourcesAPI.Load<EntityStateConfiguration>("entitystateconfigurations/" + entityStateName); for (int i = 0; i < val.serializedFieldsCollection.serializedFields.Length; i++) { if (val.serializedFieldsCollection.serializedFields[i].fieldName == fieldName) { val.serializedFieldsCollection.serializedFields[i].fieldValue.objectValue = newObject; return true; } } return false; } public static bool SetEntityStateField(string entityStateName, string fieldName, string value) { EntityStateConfiguration val = LegacyResourcesAPI.Load<EntityStateConfiguration>("entitystateconfigurations/" + entityStateName); for (int i = 0; i < val.serializedFieldsCollection.serializedFields.Length; i++) { if (val.serializedFieldsCollection.serializedFields[i].fieldName == fieldName) { val.serializedFieldsCollection.serializedFields[i].fieldValue.stringValue = value; return true; } } return false; } public static bool SetAddressableEntityStateField(string fullEntityStatePath, string fieldName, string value) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) EntityStateConfiguration val = Addressables.LoadAssetAsync<EntityStateConfiguration>((object)fullEntityStatePath).WaitForCompletion(); for (int i = 0; i < val.serializedFieldsCollection.serializedFields.Length; i++) { if (val.serializedFieldsCollection.serializedFields[i].fieldName == fieldName) { val.serializedFieldsCollection.serializedFields[i].fieldValue.stringValue = value; return true; } } return false; } public static bool SetAddressableEntityStateField(string fullEntityStatePath, string fieldName, Object newObject) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) EntityStateConfiguration val = Addressables.LoadAssetAsync<EntityStateConfiguration>((object)fullEntityStatePath).WaitForCompletion(); for (int i = 0; i < val.serializedFieldsCollection.serializedFields.Length; i++) { if (val.serializedFieldsCollection.serializedFields[i].fieldName == fieldName) { val.serializedFieldsCollection.serializedFields[i].fieldValue.objectValue = newObject; return true; } } return false; } public static Object GetAddressableEntityStateFieldObject(string fullEntityStatePath, string fieldName) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) EntityStateConfiguration val = Addressables.LoadAssetAsync<EntityStateConfiguration>((object)fullEntityStatePath).WaitForCompletion(); for (int i = 0; i < val.serializedFieldsCollection.serializedFields.Length; i++) { if (val.serializedFieldsCollection.serializedFields[i].fieldName == fieldName) { return val.serializedFieldsCollection.serializedFields[i].fieldValue.objectValue; } } return null; } public static string GetAddressableEntityStateFieldString(string fullEntityStatePath, string fieldName) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) EntityStateConfiguration val = Addressables.LoadAssetAsync<EntityStateConfiguration>((object)fullEntityStatePath).WaitForCompletion(); for (int i = 0; i < val.serializedFieldsCollection.serializedFields.Length; i++) { if (val.serializedFieldsCollection.serializedFields[i].fieldName == fieldName) { return val.serializedFieldsCollection.serializedFields[i].fieldValue.stringValue; } } return string.Empty; } public static void ReorderSkillDrivers(this GameObject master, int targetIdx) { AISkillDriver[] components = master.GetComponents<AISkillDriver>(); master.ReorderSkillDrivers(components, components.Length - 1, targetIdx); } public static void ReorderSkillDrivers(this GameObject master, AISkillDriver targetSkill, int targetIdx) { AISkillDriver[] components = master.GetComponents<AISkillDriver>(); master.ReorderSkillDrivers(components, Array.IndexOf(components, targetSkill), targetIdx); } public static void ReorderSkillDrivers(this GameObject master, AISkillDriver[] skills, int currentIdx, int targetIdx) { if (currentIdx < 0 || currentIdx >= skills.Length) { Log.Error($"{currentIdx} index not found or out of range. Must be less than {skills.Length}"); return; } string targetName = skills[currentIdx].customName; if (targetIdx < 0 || targetIdx >= skills.Length) { Log.Error($"Unable to reorder skilldriver {targetName} into position {targetIdx}. target must be less than {skills.Length}"); return; } if (targetIdx == currentIdx) { Log.Warning($"Skilldriver {targetName} already has the target index of {targetIdx}"); return; } Dictionary<string, string> dictionary = skills.Where((AISkillDriver s) => (Object)(object)s.nextHighPriorityOverride != (Object)null).ToDictionary((AISkillDriver s) => s.customName, (AISkillDriver s) => s.nextHighPriorityOverride.customName); if (targetIdx > currentIdx) { master.AddComponentCopy<AISkillDriver>(skills[currentIdx]); Object.DestroyImmediate((Object)(object)skills[currentIdx]); } for (int i = targetIdx; i < skills.Length; i++) { if (i != currentIdx) { master.AddComponentCopy<AISkillDriver>(skills[i]); Object.DestroyImmediate((Object)(object)skills[i]); } } skills = master.GetComponents<AISkillDriver>(); AISkillDriver val = ((IEnumerable<AISkillDriver>)skills).FirstOrDefault((Func<AISkillDriver, bool>)((AISkillDriver s) => s.customName == targetName)); if ((Object)(object)val != (Object)null && Array.IndexOf(skills, val) == targetIdx) { Log.Debug($"Successfully set {targetName} to {targetIdx}"); } else { Log.Error($"Done fucked it up on {targetName} with {targetIdx}"); } if (!dictionary.Any()) { return; } foreach (AISkillDriver val2 in skills) { if (Object.op_Implicit((Object)(object)val2) && dictionary.TryGetValue(val2.customName, out var target)) { AISkillDriver val3 = ((IEnumerable<AISkillDriver>)skills).FirstOrDefault((Func<AISkillDriver, bool>)((AISkillDriver s) => s.customName == target)); if ((Object)(object)val3 == (Object)null) { Log.Error("Unable to reset skill override for " + val2.customName + " targeting " + target); continue; } val2.nextHighPriorityOverride = val3; Log.Debug("successfully reset override for " + val2.customName + " targeting " + target); } } } public static void RemoveComponent<T>(this GameObject go) where T : Component { T val = default(T); if (go.TryGetComponent<T>(ref val)) { Object.Destroy((Object)(object)val); } } public static void RemoveComponents<T>(this GameObject go) where T : Component { T[] components = go.GetComponents<T>(); for (int i = 0; i < components.Length; i++) { Object.Destroy((Object)(object)components[i]); } } public static T GetCopyOf<T>(this Component comp, T other) where T : Component { Type type = ((object)comp).GetType(); if (type != ((object)other).GetType()) { return default(T); } BindingFlags bindingAttr = BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic; PropertyInfo[] properties = type.GetProperties(bindingAttr); foreach (PropertyInfo propertyInfo in properties) { if (propertyInfo.CanWrite) { try { propertyInfo.SetValue(comp, propertyInfo.GetValue(other, null), null); } catch { } } } FieldInfo[] fields = type.GetFields(bindingAttr); foreach (FieldInfo fieldInfo in fields) { fieldInfo.SetValue(comp, fieldInfo.GetValue(other)); } return (T)(object)((comp is T) ? comp : null); } public static T GetCopyOf<T>(this ScriptableObject comp, T other) where T : ScriptableObject { Type type = ((object)comp).GetType(); if (type != ((object)other).GetType()) { return default(T); } BindingFlags bindingAttr = BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic; PropertyInfo[] properties = type.GetProperties(bindingAttr); foreach (PropertyInfo propertyInfo in properties) { if (propertyInfo.CanWrite) { try { propertyInfo.SetValue(comp, propertyInfo.GetValue(other, null), null); } catch { } } } FieldInfo[] fields = type.GetFields(bindingAttr); foreach (FieldInfo fieldInfo in fields) { fieldInfo.SetValue(comp, fieldInfo.GetValue(other)); } return (T)(object)((comp is T) ? comp : null); } public static T AddComponentCopy<T>(this GameObject go, T toAdd) where T : Component { return ((Component)(object)go.AddComponent<T>()).GetCopyOf(toAdd); } public static void EmitPredictAimray<T>(this ILCursor c, string prefabName = "projectilePrefab") { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0046: 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_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) c.Emit(OpCodes.Ldarg_0); c.Emit(OpCodes.Call, (MethodBase)AccessTools.PropertyGetter(typeof(EntityState), "characterBody")); FieldInfo fieldInfo = AccessTools.Field(typeof(T), prefabName); if (!fieldInfo.IsStatic) { c.Emit(OpCodes.Ldarg_0); } if (!fieldInfo.IsStatic) { c.Emit(OpCodes.Ldfld, fieldInfo); } else { c.Emit(OpCodes.Ldsfld, fieldInfo); } c.Emit(OpCodes.Call, (MethodBase)Reflection.GetMethodCached(typeof(Utils), "PredictAimray")); } public static Ray PredictAimrayOLD(Ray aimRay, CharacterBody body, GameObject projectilePrefab) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_00af: 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_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_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_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_00dd: 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) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: 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) if (!Object.op_Implicit((Object)(object)body) || !Object.op_Implicit((Object)(object)body.master) || !Object.op_Implicit((Object)(object)projectilePrefab)) { return aimRay; } float num = 0f; ProjectileSimple val = default(ProjectileSimple); if (projectilePrefab.TryGetComponent<ProjectileSimple>(ref val)) { num = val.desiredForwardSpeed; } ProjectileCharacterController val2 = default(ProjectileCharacterController); if (projectilePrefab.TryGetComponent<ProjectileCharacterController>(ref val2)) { num = Mathf.Max(num, val2.velocity); } CharacterBody aimTargetBody = GetAimTargetBody(body); if (num > 0f && Object.op_Implicit((Object)(object)aimTargetBody)) { Vector3 position = aimTargetBody.transform.position; Vector3 velocity; Vector3 accel; if (Object.op_Implicit((Object)(object)aimTargetBody.characterMotor) && aimTargetBody.characterMotor.hasEffectiveAuthority) { velocity = aimTargetBody.characterMotor.velocity; accel = GetAccel(aimTargetBody.characterMotor, ref velocity); } else { velocity = (position - aimTargetBody.previousPosition) / dt; accel = Vector3.zero; } if (((Vector3)(ref velocity)).sqrMagnitude > 1E-05f) { return GetRay(aimRay, num, position, velocity, accel); } } return aimRay; } public static Ray PredictAimray(Ray aimRay, CharacterBody body, GameObject projectilePrefab) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_00af: 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_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_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_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_00dd: 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) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: 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) if (!Object.op_Implicit((Object)(object)body) || !Object.op_Implicit((Object)(object)body.master) || !Object.op_Implicit((Object)(object)projectilePrefab)) { return aimRay; } float num = 0f; ProjectileSimple val = default(ProjectileSimple); if (projectilePrefab.TryGetComponent<ProjectileSimple>(ref val)) { num = val.desiredForwardSpeed; } ProjectileCharacterController val2 = default(ProjectileCharacterController); if (projectilePrefab.TryGetComponent<ProjectileCharacterController>(ref val2)) { num = Mathf.Max(num, val2.velocity); } CharacterBody aimTargetBody = GetAimTargetBody(body); if (num > 0f && Object.op_Implicit((Object)(object)aimTargetBody)) { Vector3 position = aimTargetBody.transform.position; Vector3 velocity; Vector3 accel; if (Object.op_Implicit((Object)(object)aimTargetBody.characterMotor) && aimTargetBody.characterMotor.hasEffectiveAuthority) { velocity = aimTargetBody.characterMotor.velocity; accel = GetAccel(aimTargetBody.characterMotor, ref velocity); } else { velocity = (position - aimTargetBody.previousPosition) / dt; accel = Vector3.zero; } if (((Vector3)(ref velocity)).sqrMagnitude > 1E-05f) { return GetRay(aimRay, num, position, velocity, accel); } } return aimRay; } private static Vector3 GetAccel(CharacterMotor motor, ref Vector3 velocity) { //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0081: 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) float num = motor.acceleration; if (motor.isAirControlForced || !motor.isGrounded) { num *= (motor.disableAirControlUntilCollision ? 0f : motor.airControl); } Vector3 val = motor.moveDirection; if (!motor.isFlying) { val.y = 0f; } if (motor.body.isSprinting) { float magnitude = ((Vector3)(ref val)).magnitude; if (magnitude < 1f && magnitude > 0f) { float num2 = 1f / ((Vector3)(ref val)).magnitude; val *= num2; } } Vector3 val2 = val * motor.walkSpeed; if (!motor.isFlying) { val2.y = velocity.y; } val2 = Vector3.MoveTowards(velocity, val2, num * Time.fixedDeltaTime); if (motor.useGravity) { ref float y = ref val2.y; y += Physics.gravity.y * dt; if (motor.isGrounded) { y = Mathf.Max(y, 0f); } } return (val2 - velocity) / Time.fixedDeltaTime; } public static Ray GetRay(Ray aimRay, float sP, Vector3 pT, Vector3 vT, Vector3 aT) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //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) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) float guess = Vector3.Distance(((Ray)(ref aimRay)).origin, pT) / sP; pT -= ((Ray)(ref aimRay)).origin; bool flag = ((Vector3)(ref aT)).sqrMagnitude > 1E-05f; float num = ((Vector3)(ref vT)).sqrMagnitude - Pow2(sP); float num2 = 2f * Vector3.Dot(vT, pT); float sqrMagnitude = ((Vector3)(ref pT)).sqrMagnitude; if (flag) { float a = ((Vector3)(ref aT)).sqrMagnitude * 0.25f; float b = Vector3.Dot(aT, vT); num += Vector3.Dot(aT, pT); guess = SolveQuarticNewton(guess, 6, a, b, num, num2, sqrMagnitude); } else { guess = SolveQuadraticNewton(guess, 6, num, num2, sqrMagnitude); } if (guess > 0f) { Vector3 val = pT + vT * guess; if (flag) { val += 0.5f * aT * Pow2(guess); } return new Ray(((Ray)(ref aimRay)).origin, val); } return aimRay; } private static float SolveQuarticNewton(float guess, int iterations, float a, float b, float c, float d, float e) { for (int i = 0; i < iterations; i++) { guess -= EvalQuartic(guess, a, b, c, d, e) / EvalQuarticDerivative(guess, a, b, c, d); } return guess; } private static float EvalQuartic(float t, float a, float b, float c, float d, float e) { return a * Pow4(t) + b * Pow3(t) + c * Pow2(t) + d * t + e; } private static float EvalQuarticDerivative(float t, float a, float b, float c, float d) { return 4f * a * Pow3(t) + 3f * b * Pow2(t) + 2f * c * t + d; } private static float SolveQuadraticNewton(float guess, int iterations, float a, float b, float c) { for (int i = 0; i < iterations; i++) { guess -= EvalQuadratic(guess, a, b, c) / EvalQuadraticDerivative(guess, a, b); } return guess; } private static float EvalQuadratic(float t, float a, float b, float c) { return a * Pow2(t) + b * t + c; } private static float EvalQuadraticDerivative(float t, float a, float b) { return 2f * a * t + b; } private static float Pow2(float n) { return n * n; } private static float Pow3(float n) { return n * n * n; } private static float Pow4(float n) { return n * n * n * n; } private static CharacterBody GetAimTargetBody(CharacterBody body) { BaseAI[] aiComponents = body.master.aiComponents; foreach (BaseAI val in aiComponents) { if (Object.op_Implicit((Object)(object)val) && val.hasAimTarget) { Target aimTarget = val.skillDriverEvaluation.aimTarget; if (Object.op_Implicit((Object)(object)aimTarget.characterBody) && Object.op_Implicit((Object)(object)aimTarget.healthComponent) && aimTarget.healthComponent.alive) { return aimTarget.characterBody; } } } return null; } public static bool TryModifyFieldValue<T>(this EntityStateConfiguration entityStateConfiguration, string fieldName, T value) { ref SerializedField orCreateField = ref ((SerializedFieldCollection)(ref entityStateConfiguration.serializedFieldsCollection)).GetOrCreateField(fieldName); Type typeFromHandle = typeof(T); if (Object.op_Implicit(orCreateField.fieldValue.objectValue) && typeof(Object).IsAssignableFrom(typeFromHandle)) { ref Object objectValue = ref orCreateField.fieldValue.objectValue; object obj = value; objectValue = (Object)((obj is Object) ? obj : null); return true; } if (orCreateField.fieldValue.stringValue != null && StringSerializer.CanSerializeType(typeFromHandle)) { orCreateField.fieldValue.stringValue = StringSerializer.Serialize(typeFromHandle, (object)value); return true; } return false; } } } namespace MiscMods.StolenContent { public class Cruelty { public class CombatCruelty : MonoBehaviour { private CombatDirector director; private Xoroshiro128Plus rng; public void SetCombatListener(CombatDirector d) { director = d; rng = director.rng; ((UnityEvent<GameObject>)(object)director.onSpawnedServer).AddListener((UnityAction<GameObject>)OnSpawnedServer); } private void OnSpawnedServer(GameObject masterObject) { if (Util.CheckRoll((float)PluginConfig.CrueltyConfig.triggerChance.Value, 0f, (CharacterMaster)null)) { CharacterMaster component = masterObject.GetComponent<CharacterMaster>(); if (Object.op_Implicit((Object)(object)component) && component.hasBody && Object.op_Implicit((Object)(object)component.inventory) && component.inventory.GetItemCount(Items.HealthDecay) <= 0) { CreateCrueltyElite(component); } } } private void CreateCrueltyElite(CharacterMaster master) { //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0050: 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_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Invalid comparison between Unknown and I4 //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) CharacterBody body = master.GetBody(); Inventory inventory = master.inventory; if (!Object.op_Implicit((Object)(object)body) || !Object.op_Implicit((Object)(object)inventory) || !Object.op_Implicit((Object)(object)director)) { return; } List<BuffIndex> list = new List<BuffIndex>(); BuffIndex[] eliteBuffIndices = BuffCatalog.eliteBuffIndices; foreach (BuffIndex val in eliteBuffIndices) { if (body.HasBuff(val) && !list.Contains(val)) { list.Add(val); } } if (PluginConfig.CrueltyConfig.onlyApplyToElites.Value && !list.Any()) { return; } DeathRewards component = ((Component)body).GetComponent<DeathRewards>(); uint num = 0u; uint num2 = 0u; if (Object.op_Implicit((Object)(object)component)) { num = component.expReward; num2 = component.goldReward; } (EliteDef, float) result; while (director.monsterCredit > 0f && list.Count < PluginConfig.CrueltyConfig.maxAffixes.Value && GetRandom(director.monsterCredit, director.currentMonsterCard, rng, list, out result)) { if ((int)inventory.currentEquipmentIndex == -1) { inventory.SetEquipmentIndex(result.Item1.eliteEquipmentDef.equipmentIndex); } BuffIndex buffIndex = result.Item1.eliteEquipmentDef.passiveBuffDef.buffIndex; list.Add(buffIndex); body.AddBuff(buffIndex); float num3 = list.Count; CombatDirector obj = director; obj.monsterCredit -= result.Item2 / num3; inventory.GiveItem(Items.BoostHp, Mathf.RoundToInt((result.Item1.healthBoostCoefficient - 1f) * 10f / num3)); inventory.GiveItem(Items.BoostDamage, Mathf.RoundToInt((result.Item1.damageBoostCoefficient - 1f) * 10f / num3)); if (Object.op_Implicit((Object)(object)component)) { component.expReward += Convert.ToUInt32((float)num / num3); component.goldReward += Convert.ToUInt32((float)num2 / num3); } if (!Util.CheckRoll((float)PluginConfig.CrueltyConfig.successChance.Value, 0f, (CharacterMaster)null)) { break; } } } } public class ScriptedCruelty : MonoBehaviour { private Xoroshiro128Plus rng; private ScriptedCombatEncounter encounter; public void SetCombatListener(ScriptedCombatEncounter enc) { encounter = enc; rng = encounter.rng; encounter.combatSquad.onMemberAddedServer += OnMemberAddedServer; } private void OnMemberAddedServer(CharacterMaster master) { if ((PluginConfig.CrueltyConfig.guaranteeSpecialBoss.Value || Util.CheckRoll((float)PluginConfig.CrueltyConfig.triggerChance.Value, 0f, (CharacterMaster)null)) && Object.op_Implicit((Object)(object)master) && master.hasBody && Object.op_Implicit((Object)(object)master.inventory) && master.inventory.GetItemCount(Items.HealthDecay) <= 0) { CreateCrueltyElite(master); } } private void CreateCrueltyElite(CharacterMaster master) { //IL_0036: 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_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Invalid comparison between Unknown and I4 //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_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) CharacterBody body = master.GetBody(); Inventory inventory = master.inventory; if (!Object.op_Implicit((Object)(object)body) || !Object.op_Implicit((Object)(object)inventory)) { return; } List<BuffIndex> list = new List<BuffIndex>(); BuffIndex[] eliteBuffIndices = BuffCatalog.eliteBuffIndices; foreach (BuffIndex val in eliteBuffIndices) { if (body.HasBuff(val) && !list.Contains(val)) { list.Add(val); } } DeathRewards component = ((Component)body).GetComponent<DeathRewards>(); uint num = 0u; uint num2 = 0u; if (Object.op_Implicit((Object)(object)component)) { num = component.expReward; num2 = component.goldReward; } EliteDef result; while (list.Count < PluginConfig.CrueltyConfig.maxAffixes.Value && GetScriptedRandom(rng, list, out result)) { if ((int)inventory.currentEquipmentIndex == -1) { inventory.SetEquipmentIndex(result.eliteEquipmentDef.equipmentIndex); } BuffIndex buffIndex = result.eliteEquipmentDef.passiveBuffDef.buffIndex; list.Add(buffIndex); body.AddBuff(buffIndex); float num3 = list.Count; inventory.GiveItem(Items.BoostHp, Mathf.RoundToInt((result.healthBoostCoefficient - 1f) * 10f / num3)); inventory.GiveItem(Items.BoostDamage, Mathf.RoundToInt((result.damageBoostCoefficient - 1f) * 10f / num3)); if (Object.op_Implicit((Object)(object)component)) { component.expReward += Convert.ToUInt32((float)num / num3); component.goldReward += Convert.ToUInt32((float)num2 / num3); } if (!Util.CheckRoll((float)PluginConfig.CrueltyConfig.successChance.Value, 0f, (CharacterMaster)null)) { break; } } } } [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_Awake <>9__1_0; public static hook_Awake <>9__1_1; public static Func<EliteTierDef, bool> <>9__5_0; public static Func<EliteTierDef, IEnumerable<EliteDef>> <>9__5_1; public static Func<EliteTierDef, EliteDef, global::<>f__AnonymousType0<EliteTierDef, EliteDef>> <>9__5_2; public static Func<global::<>f__AnonymousType0<EliteTierDef, EliteDef>, EliteDef> <>9__5_4; public static Func<EliteTierDef, IEnumerable<EliteDef>> <>9__6_1; public static Func<EliteTierDef, EliteDef, global::<>f__AnonymousType0<EliteTierDef, EliteDef>> <>9__6_2; internal void <Init>b__1_0(orig_Awake orig, CombatDirector self) { orig.Invoke(self); if (NetworkServer.active && PluginConfig.CrueltyConfig.enabled.Value) { ((Component)self).gameObject.AddComponent<CombatCruelty>().SetCombatListener(self); } } internal void <Init>b__1_1(orig_Awake orig, ScriptedCombatEncounter self) { orig.Invoke(self); if (NetworkServer.active && PluginConfig.CrueltyConfig.enabled.Value) { ((Component)self).gameObject.AddComponent<ScriptedCruelty>().SetCombatListener(self); } } internal bool <GetScriptedRandom>b__5_0(EliteTierDef etd) { if (etd != null) { return !etd.canSelectWithoutAvailableEliteDef; } return false; } internal IEnumerable<EliteDef> <GetScriptedRandom>b__5_1(EliteTierDef etd) { return etd.availableDefs; } internal global::<>f__AnonymousType0<EliteTierDef, EliteDef> <GetScriptedRandom>b__5_2(EliteTierDef etd, EliteDef ed) { return new { etd, ed }; } internal EliteDef <GetScriptedRandom>b__5_4(global::<>f__AnonymousType0<EliteTierDef, EliteDef> <>h__TransparentIdentifier0) { return <>h__TransparentIdentifier0.ed; } internal IEnumerable<EliteDef> <GetRandom>b__6_1(EliteTierDef etd) { return etd.availableDefs; } internal global::<>f__AnonymousType0<EliteTierDef, EliteDef> <GetRandom>b__6_2(EliteTierDef etd, EliteDef ed) { return new { etd, ed }; } } public static List<EquipmentDef> BlacklistedElites = new List<EquipmentDef>(); public static void Init() { //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Expected O, but got Unknown //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Expected O, but got Unknown PluginConfig.CrueltyConfig.Init(); RoR2Application.onLoad = (Action)Delegate.Combine(RoR2Application.onLoad, new Action(OnLoad)); object obj = <>c.<>9__1_0; if (obj == null) { hook_Awake val = delegate(orig_Awake orig, CombatDirector self) { orig.Invoke(self); if (NetworkServer.active && PluginConfig.CrueltyConfig.enabled.Value) { ((Component)self).gameObject.AddComponent<CombatCruelty>().SetCombatListener(self); } }; <>c.<>9__1_0 = val; obj = (object)val; } CombatDirector.Awake += (hook_Awake)obj; object obj2 = <>c.<>9__1_1; if (obj2 == null) { hook_Awake val2 = delegate(orig_Awake orig, ScriptedCombatEncounter self) { orig.Invoke(self); if (NetworkServer.active && PluginConfig.CrueltyConfig.enabled.Value) { ((Component)self).gameObject.AddComponent<ScriptedCruelty>().SetCombatListener(self); } }; <>c.<>9__1_1 = val2; obj2 = (object)val2; } ScriptedCombatEncounter.Awake += (hook_Awake)obj2; } private static void OnLoad() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Invalid comparison between Unknown and I4 //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Invalid comparison between Unknown and I4 //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) EquipmentIndex val = EquipmentCatalog.FindEquipmentIndex("AffixBlightedMoffein"); if ((int)val != -1) { EquipmentDef equipmentDef = EquipmentCatalog.GetEquipmentDef(val); if (Object.op_Implicit((Object)(object)equipmentDef) && Object.op_Implicit((Object)(object)equipmentDef.passiveBuffDef) && Object.op_Implicit((Object)(object)equipmentDef.passiveBuffDef.eliteDef)) { BlacklistedElites.Add(equipmentDef); } } EquipmentIndex val2 = EquipmentCatalog.FindEquipmentIndex("EliteLunarEquipment"); if ((int)val2 != -1) { EquipmentDef equipmentDef2 = EquipmentCatalog.GetEquipmentDef(val2); if (Object.op_Implicit((Object)(object)equipmentDef2) && Object.op_Implicit((Object)(object)equipmentDef2.passiveBuffDef) && Object.op_Implicit((Object)(object)equipmentDef2.passiveBuffDef.eliteDef)) { BlacklistedElites.Add(equipmentDef2); } } } public static bool GetScriptedRandom(Xoroshiro128Plus rng, List<BuffIndex> currentBuffs, out EliteDef result) { result = null; EliteTierDef[] combatDirectorEliteTiers = EliteAPI.GetCombatDirectorEliteTiers(); if (combatDirectorEliteTiers == null || combatDirectorEliteTiers.Length == 0) { return false; } IEnumerable<EliteDef> source = from etd in combatDirectorEliteTiers where etd != null && !etd.canSelectWithoutAvailableEliteDef from ed in etd.availableDefs where IsValid(ed, currentBuffs) select ed; if (source.Any()) { int index = rng.RangeInt(0, source.Count()); result = source.ElementAt(index); return true; } return false; } public static bool GetRandom(float availableCredits, DirectorCard card, Xoroshiro128Plus rng, List<BuffIndex> currentBuffs, out (EliteDef def, float cost) result) { result = default((EliteDef, float)); EliteTierDef[] combatDirectorEliteTiers = EliteAPI.GetCombatDirectorEliteTiers(); if (combatDirectorEliteTiers == null || combatDirectorEliteTiers.Length == 0) { return false; } DirectorCard obj = card; int cost = ((obj != null) ? obj.cost : 0); IEnumerable<(EliteDef, float)> source = from etd in combatDirectorEliteTiers where IsValid(etd, card, cost, availableCredits) from ed in etd.availableDefs where IsValid(ed, currentBuffs) select (ed, etd.costMultiplier * (float)cost); if (source.Any()) { int index = rng.RangeInt(0, source.Count()); result = source.ElementAt(index); return true; } return false; } private static bool IsValid(EliteDef ed, List<BuffIndex> currentBuffs) { //IL_005f: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)ed) && ed.IsAvailable() && Object.op_Implicit((Object)(object)ed.eliteEquipmentDef) && Object.op_Implicit((Object)(object)ed.eliteEquipmentDef.passiveBuffDef) && ed.eliteEquipmentDef.passiveBuffDef.isElite && !BlacklistedElites.Contains(ed.eliteEquipmentDef)) { return !currentBuffs.Contains(ed.eliteEquipmentDef.passiveBuffDef.buffIndex); } return false; } private static bool IsValid(EliteTierDef etd, DirectorCard card, int cost, float availableCredits) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) bool flag = availableCredits >= (float)cost * etd.costMultiplier; if (etd != null && !etd.canSelectWithoutAvailableEliteDef && flag) { if (card != null) { return etd.CanSelect(card.spawnCard.eliteRules); } return true; } return false; } } } namespace MiscMods.StolenContent.Worm { internal class WormChanges { [CompilerGenerated] private static class <>O { public static hook_FixedUpdateServer <0>__RemoveRandomTurns; } internal GameObject MagmaWorm => Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/MagmaWorm/MagmaWormBody.prefab").WaitForCompletion(); internal GameObject ElectricWorm => Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/ElectricWorm/ElectricWormBody.prefab").WaitForCompletion(); internal GameObject MagmaWormMaster => Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/MagmaWorm/MagmaWormMaster.prefab").WaitForCompletion(); internal GameObject ElectricWormMaster => Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/ElectricWorm/ElectricWormMaster.prefab").WaitForCompletion(); public static WormChanges Instance { get; private set; } public static void Init() { if (Instance == null) { Instance = new WormChanges(); } } private WormChanges() { //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_0021: Expected O, but got Unknown //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) object obj = <>O.<0>__RemoveRandomTurns; if (obj == null) { hook_FixedUpdateServer val = RemoveRandomTurns; <>O.<0>__RemoveRandomTurns = val; obj = (object)val; } WormBodyPositionsDriver.FixedUpdateServer += (hook_FixedUpdateServer)obj; MagmaWormMaster.ReorderSkillDrivers(1); ParticleSystem[] componentsInChildren = ((Component)MagmaWorm.GetComponent<ModelLocator>().modelTransform).gameObject.GetComponentsInChildren<ParticleSystem>(); foreach (ParticleSystem obj2 in componentsInChildren) { obj2.startSize *= 2f; } SkillDef skillDef = MagmaWorm.GetComponent<SkillLocator>().utility.skillFamily.variants[0].skillDef; skillDef.activationState = new SerializableEntityStateType(typeof(Leap)); skillDef.baseRechargeInterval = 60f; skillDef.activationStateMachineName = "Weapon"; AISkillDriver[] components = MagmaWormMaster.GetComponents<AISkillDriver>(); foreach (AISkillDriver val2 in components) { if (val2.customName == "Blink") { val2.shouldSprint = true; val2.minDistance = 0f; val2.aimType = (AimType)1; } else { val2.skillSlot = (SkillSlot)(-1); } } } private static void RemoveRandomTurns(orig_FixedUpdateServer orig, WormBodyPositionsDriver self) { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: 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) //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_0131: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_0141: Unknown result type (might be due to invalid IL or missing references) //IL_0147: Unknown result type (might be due to invalid IL or missing references) //IL_014d: 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_0164: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Unknown result type (might be due to invalid IL or missing references) //IL_016e: Unknown result type (might be due to invalid IL or missing references) //IL_0173: Unknown result type (might be due to invalid IL or missing references) //IL_0175: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_018a: Unknown result type (might be due to invalid IL or missing references) //IL_01b2: Unknown result type (might be due to invalid IL or missing references) //IL_0224: Unknown result type (might be due to invalid IL or missing references) //IL_0229: Unknown result type (might be due to invalid IL or missing references) //IL_022e: Unknown result type (might be due to invalid IL or missing references) //IL_0244: Unknown result type (might be due to invalid IL or missing references) //IL_0250: Unknown result type (might be due to invalid IL or missing references) //IL_0255: Unknown result type (might be due to invalid IL or missing references) //IL_025f: Unknown result type (might be due to invalid IL or missing references) //IL_0264: Unknown result type (might be due to invalid IL or missing references) //IL_026f: Unknown result type (might be due to invalid IL or missing references) //IL_0277: Unknown result type (might be due to invalid IL or missing references) //IL_0281: Unknown result type (might be due to invalid IL or missing references) //IL_0288: Unknown result type (might be due to invalid IL or missing references) //IL_0294: Unknown result type (might be due to invalid IL or missing references) //IL_029a: Unknown result type (might be due to invalid IL or missing references) //IL_02a4: Unknown result type (might be due to invalid IL or missing references) //IL_02a9: Unknown result type (might be due to invalid IL or missing references) //IL_02ba: Unknown result type (might be due to invalid IL or missing references) //IL_032b: Unknown result type (might be due to invalid IL or missing references) //IL_0331: Unknown result type (might be due to invalid IL or missing references) //IL_01d9: Unknown result type (might be due to invalid IL or missing references) //IL_01de: Unknown result type (might be due to invalid IL or missing references) //IL_01e3: Unknown result type (might be due to invalid IL or missing references) //IL_01fa: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) CharacterBody component = ((Component)self).gameObject.GetComponent<CharacterBody>(); Vector3 val = self.referenceTransform.position; if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.master) && ((object)(from machine in ((Component)self).gameObject.GetComponents<EntityStateMachine>() where machine.customName == "Weapon" select machine).First().state).GetType() != typeof(Leap)) { BaseAI component2 = component.masterObject.GetComponent<BaseAI>(); if (Object.op_Implicit((Object)(object)component2) && component2.currentEnemy != null && (Object)(object)component2.currentEnemy.characterBody != (Object)null) { val = component2.currentEnemy.characterBody.corePosition; } } float speedMultiplier = self.wormBodyPositions.speedMultiplier; Vector3 val2 = val - self.chaserPosition; Vector3 normalized = ((Vector3)(ref val2)).normalized; float num = (float)((self.chaserIsUnderground ? ((double)self.maxTurnSpeed) : ((double)self.maxTurnSpeed * (double)self.turnRateCoefficientAboveGround)) * (Math.PI / 180.0)); Vector3 val3 = Vector3.RotateTowards(new Vector3(self.chaserVelocity.x, 0f, self.chaserVelocity.z), new Vector3(normalized.x, 0f, normalized.z) * speedMultiplier, num * Time.fixedDeltaTime, float.PositiveInfinity); val3 = ((Vector3)(ref val3)).normalized * speedMultiplier; float num2 = val.y - self.chaserPosition.y; float num3 = (0f - self.chaserVelocity.y) * self.yDamperConstant; float num4 = num2 * self.ySpringConstant; if (self.allowShoving && (double)Mathf.Abs(self.chaserVelocity.y) < (double)self.yShoveVelocityThreshold && (double)num2 > (double)self.yShovePositionThreshold) { val2 = self.chaserVelocity; self.chaserVelocity = Vector3Utils.XAZ(ref val2, self.chaserVelocity.y + self.yShoveForce * Time.fixedDeltaTime); } if (!self.chaserIsUnderground) { num4 *= self.wormForceCoefficientAboveGround; num3 *= self.wormForceCoefficientAboveGround; } val2 = self.chaserVelocity; self.chaserVelocity = Vector3Utils.XAZ(ref val2, self.chaserVelocity.y + (num4 + num3) * Time.fixedDeltaTime); self.chaserVelocity += Physics.gravity * Time.fixedDeltaTime; self.chaserVelocity = new Vector3(val3.x, self.chaserVelocity.y, val3.z); self.chaserPosition += self.chaserVelocity * Time.fixedDeltaTime; self.chasePositionVisualizer.position = self.chaserPosition; self.chaserIsUnderground = 0.0 - (double)num2 < (double)self.wormBodyPositions.undergroundTestYOffset; self.keyFrameGenerationTimer -= Time.deltaTime; if (!((double)self.keyFrameGenerationTimer > 0.0)) { self.keyFrameGenerationTimer = self.keyFrameGenerationInterval; self.wormBodyPositions.AttemptToGenerateKeyFrame(self.wormBodyPositions.GetSynchronizedTimeStamp() + self.wormBodyPositions.followDelay, self.chaserPosition, self.chaserVelocity); } } } } namespace MiscMods.StolenContent.Wisp { internal class WispChanges { internal SpawnCard GreaterWispCard => Addressables.LoadAssetAsync<SpawnCard>((object)"RoR2/Base/GreaterWisp/cscGreaterWisp.asset").WaitForCompletion(); internal EntityStateConfiguration WispEmbers => Addressables.LoadAssetAsync<EntityStateConfiguration>((object)"RoR2/Base/Wisp/EntityStates.Wisp1Monster.FireEmbers.asset").WaitForCompletion(); public static WispChanges Instance { get; private set; } public static void Init() { if (Instance == null) { Instance = new WispChanges(); } } private WispChanges() { if (PluginConfig.EnemiesPlusConfig.wispChanges.Value) { WispEmbers.TryModifyFieldValue("damageCoefficient", 0.75f); WispEmbers.TryModifyFieldValue("bulletCount", 6); } if (PluginConfig.EnemiesPlusConfig.greaterWispChanges.Value) { GreaterWispCard.directorCreditCost = 120; } } } } namespace MiscMods.StolenContent.Lunar { internal class LunarChanges { [CompilerGenerated] private static class <>O { public static hook_OnBuffFinalStackLost <0>__CharacterBody_OnBuffFinalStackLost; } public static GameObject lunarWispTrackingBomb; public static BuffDef helfireBuff; public static ModdedDamageType helfireDT; public static DotIndex helfireDotIdx; internal Sprite FireBuffSprite => Addressables.LoadAssetAsync<Sprite>((object)"RoR2/Base/Common/texBuffOnFireIcon.tif").WaitForCompletion(); internal GameObject LunarGolemMaster => Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/LunarGolem/LunarGolemMaster.prefab").WaitForCompletion(); internal SkillDef LunarGolemShield => Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/LunarGolem/LunarGolemBodyShield.asset").WaitForCompletion(); internal GameObject LunarWisp => Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/LunarWisp/LunarWispBody.prefab").WaitForCompletion(); internal GameObject LunarWispMaster => Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/LunarWisp/LunarWispMaster.prefab").WaitForCompletion(); internal GameObject HelfireIgniteEffect => Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/BurnNearby/HelfireIgniteEffect.prefab").WaitForCompletion(); internal EntityStateConfiguration LunarSeekingBomb => Addressables.LoadAssetAsync<EntityStateConfiguration>((object)"RoR2/Base/LunarWisp/EntityStates.LunarWisp.SeekingBomb.asset").WaitForCompletion(); public static LunarChanges Instance { get; private set; } public static void Init() { if (Instance == null) { Instance = new LunarChanges(); } } private LunarChanges() { if (PluginConfig.EnemiesPlusConfig.enableTweaks.Value) { if (PluginConfig.EnemiesPlusConfig.helfireChanges.Value) { CreateHelfireDebuff(); } if (PluginConfig.EnemiesPlusConfig.lunarWispChanges.Value) { LunarWispChanges(); } } if (PluginConfig.EnemiesPlusConfig.enableSkills.Value && PluginConfig.EnemiesPlusConfig.lunarGolemSkills.Value) { LunarGolemChanges(); } } private void CreateHelfireDebuff() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Expected O, but got Unknown //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Expected O, but got Unknown //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Expected O, but got Unknown //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Expected O, but got Unknown CharacterBody.OnBuffFirstStackGained += new hook_OnBuffFirstStackGained(CharacterBody_OnBuffFirstStackGained); object obj = <>O.<0>__CharacterBody_OnBuffFinalStackLost; if (obj == null) { hook_OnBuffFinalStackLost val = CharacterBody_OnBuffFinalStackLost; <>O.<0>__CharacterBody_OnBuffFinalStackLost = val; obj = (object)val; } CharacterBody.OnBuffFinalStackLost += (hook_OnBuffFinalStackLost)obj; HealthComponent.Heal += new hook_Heal(PreventHelfireHeal); GlobalEventManager.onServerDamageDealt += GlobalEventManager_onServerDamageDealt; RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(RecalculateStatsAPI_GetStatCoefficients); helfireBuff = ScriptableObject.CreateInstance<BuffDef>(); ((Object)helfireBuff).name = "HelfireDebuff"; helfireBuff.canStack = true; helfireBuff.isCooldown = false; helfireBuff.isDebuff = true; helfireBuff.buffColor = Color.cyan; helfireBuff.iconSprite = FireBuffSprite; ContentAddition.AddBuffDef(helfireBuff); helfireDT = DamageAPI.ReserveDamageType(); helfireDotIdx = DotAPI.RegisterDotDef(0.2f, 0f, (DamageColorIndex)7, helfireBuff, new CustomDotBehaviour(AddPercentHelfireDamage), (CustomDotVisual)null); lunarWispTrackingBomb = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/LunarWisp/LunarWispTrackingBomb.prefab").WaitForCompletion(), "LunarWispOrbScore"); lunarWispTrackingBomb.AddComponent<ModdedDamageTypeHolderComponent>().Add(helfireDT); ContentAddition.AddProjectile(lunarWispTrackingBomb); LunarSeekingBomb.TryModifyFieldValue<GameObject>("projectilePrefab", lunarWispTrackingBomb); } private void AddPercentHelfireDamage(DotController self, DotStack dotStack) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) if (dotStack?.dotIndex == (DotIndex?)helfireDotIdx && Object.op_Implicit((Object)(object)self.victimBody) && Object.op_Implicit((Object)(object)self.victimBody.healthComponent)) { dotStack.damageType = (DamageType)(dotStack.damageType | 1); dotStack.damage = self.victimBody.healthComponent.fullHealth * 0.1f / 10f * 0.2f; } } private void LunarWispChanges() { CharacterBody component = LunarWisp.GetComponent<CharacterBody>(); component.baseMoveSpeed = 20f; component.baseAcceleration = 20f; AISkillDriver[] components = LunarWispMaster.GetComponents<AISkillDriver>(); foreach (AISkillDriver val in components) { switch (val.customName) { case "Back Up": val.maxDistance = 15f; break; case "Minigun": val.minDistance = 15f; val.maxDistance = 75f; break; case "Chase": val.minDistance = 30f; val.shouldSprint = true; break; } } } private void LunarGolemChanges() { //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) LunarGolemShield.baseRechargeInterval = 60f; (from driver in LunarGolemMaster.GetComponents<AISkillDriver>() where driver.customName == "StrafeAndShoot" select driver).First().requireSkillReady = true; AISkillDriver obj = LunarGolemMaster.AddComponent<AISkillDriver>(); obj.customName = "LunarShell"; obj.skillSlot = (SkillSlot)1; obj.requireSkillReady = true; obj.requireEquipmentReady = false; obj.driverUpdateTimerOverride = 3f; obj.moveTargetType = (TargetType)0; obj.movementType = (MovementType)1; LunarGolemMaster.ReorderSkillDrivers(0); } private float PreventHelfireHeal(orig_Heal orig, HealthComponent self, float amount, ProcChainMask procChainMask, bool nonRegen) { //IL_0028: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)self.body) && self.body.HasBuff(helfireBuff)) { return 0f; } return orig.Invoke(self, amount, procChainMask, nonRegen); } private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args) { if (Object.op_Implicit((Object)(object)sender) && sender.HasBuff(Buffs.LunarShell)) { args.armorAdd += 200f; } } private void GlobalEventManager_onServerDamageDealt(DamageReport damageReport) { //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) DamageInfo damageInfo = damageReport.damageInfo; if (damageInfo != null && damageInfo.rejected && Object.op_Implicit((Object)(object)damageReport.attackerBody) && Object.op_Implicit((Object)(object)damageReport.victimBody) && (damageReport.attackerBody.HasBuff(Buffs.LunarShell) || DamageAPI.HasModdedDamageType(damageReport.damageInfo, helfireDT))) { DotController.InflictDot(((Component)damageReport.victimBody).gameObject, damageReport.attacker, helfireDotIdx, 10f, 1f, (uint?)null); } } private void CharacterBody_OnBuffFirstStackGained(orig_OnBuffFirstStackGained orig, CharacterBody self, BuffDef buffDef) { orig.Invoke(self, buffDef); if ((Object)(object)buffDef == (Object)(object)helfireBuff) { ((Component)self).gameObject.AddComponent<NuxHelfireEffectController>(); } } private static void CharacterBody_OnBuffFinalStackLost(orig_OnBuffFinalStackLost orig, CharacterBody self, BuffDef buffDef) { orig.Invoke(self, buffDef); NuxHelfireEffectController nuxHelfireEffectController = default(NuxHelfireEffectController); if ((Object)(object)buffDef == (Object)(object)helfireBuff && ((Component)self).TryGetComponent<NuxHelfireEffectController>(ref nuxHelfireEffectController)) { Object.Destroy((Object)(object)nuxHelfireEffectController); } } } public class NuxHelfireEffectController : MonoBehaviour { private BurnEffectController burnEffectController; private void Start() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Expected O, but got Unknown CharacterBody component = ((Component)this).GetComponent<CharacterBody>(); ModelLocator component2 = ((Component)this).GetComponent<ModelLocator>(); if (Object.op_Implicit((Object)(object)component)) { EffectManager.SpawnEffect(LunarChanges.Instance.HelfireIgniteEffect, new EffectData { origin = component.corePosition }, true); } if (Object.op_Implicit((Object)(object)component2) && Object.op_Implicit((Object)(object)component2.modelTransform)) { burnEffectController = ((Component)this).gameObject.AddComponent<BurnEffectController>(); burnEffectController.effectType = BurnEffectController.helfireEffect; burnEffectController.target = ((Component)component2.modelTransform).gameObject; } } private void OnDestroy() { if (Object.op_Implicit((Object)(object)burnEffectController)) { Object.Destroy((Object)(object)burnEffectController); } } } } namespace MiscMods.StolenContent.Lemur { internal class LemurChanges { [CompilerGenerated] private static class <>O { public static hook_OnEnter <0>__BiteLeap; } private SkillDef LemBite => Addressables.LoadAssetAsync<SkillDef>((object)"RoR2/Base/Lemurian/LemurianBodyBite.asset").WaitForCompletion(); public static LemurChanges Instance { get; private set; } public static void Init() { if (Instance == null) { Instance = new LemurChanges(); } } private LemurChanges() { //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_0021: Expected O, but got Unknown object obj = <>O.<0>__BiteLeap; if (obj == null) { hook_OnEnter val = BiteLeap; <>O.<0>__BiteLeap = val; obj = (object)val; } Bite.OnEnter += (hook_OnEnter)obj; LemBite.baseRechargeInterval = 1f; } private static void BiteLeap(orig_OnEnter orig, Bite self) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_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_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); Ray aimRay = ((BaseState)self).GetAimRay(); Vector3 val = ((Ray)(ref aimRay)).direction; val.y = 0f; float magnitude = ((Vector3)(ref val)).magnitude; if (magnitude > 0f) { val /= magnitude; } CharacterMotor characterMotor = ((EntityState)self).characterMotor; Vector3 velocity = val * ((EntityState)self).characterBody.moveSpeed * 2f; velocity.y = ((EntityState)self).characterBody.jumpPower * 0.25f; characterMotor.velocity = velocity; ((BaseCharacterController)((EntityState)self).characterMotor).Motor.ForceUnground(); } } } namespace MiscMods.StolenContent.Imp { internal class ImpChanges { public static GameObject impVoidSpikes; private GameObject ImpMaster => Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Imp/ImpMaster.prefab").WaitForCompletion(); private GameObject ImpBody => Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Imp/ImpBody.prefab").WaitForCompletion(); public static ImpChanges Instance { get; private set; } public static void Init() { if (Instance == null) { Instance = new ImpChanges(); } } private ImpChanges() { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0099: 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) impVoidSpikes = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/ImpBoss/ImpVoidspikeProjectile.prefab").WaitForCompletion(), "ImpVoidSpikeProjectileScore"); impVoidSpikes.GetComponent<ProjectileImpactExplosion>().destroyOnWorld = true; ContentAddition.AddProjectile(impVoidSpikes); CreateSpikeSkillFamily(); AISkillDriver obj = ImpMaster.AddComponent<AISkillDriver>(); obj.customName = "ImpVoidSpikes"; obj.skillSlot = (SkillSlot)1; obj.maxDistance = 30f; obj.minDistance = 10f; obj.selectionRequiresAimTarget = true; obj.selectionRequiresTargetLoS = true; obj.requireSkillReady = true; obj.movementType = (MovementType)2; obj.aimType = (AimType)2; obj.moveTargetType = (TargetType)0; ImpMaster.ReorderSkillDrivers(2); } private void CreateSpikeSkillFamily() { //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_004c: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) SkillDef val = ScriptableObject.CreateInstance<SkillDef>(); val.skillName = "ImpVoidSpikes"; ((Object)val).name = "ImpVoidSpikes"; val.skillNameToken = "Void Spikes"; val.skillDescriptionToken = "Throw spikes"; bool flag = default(bool); val.activationState = ContentAddition.AddEntityState<ImpVoidSpike>(ref flag); val.activationStateMachineName = "Weapon"; val.interruptPriority = (InterruptPriority)6; val.baseMaxStock = 2; val.baseRechargeInterval = 5f; val.rechargeStock = 1; val.requiredStock = 1; val.stockToConsume = 1; val.dontAllowPastMaxStocks = true; val.beginSkillCooldownOnSkillEnd = true; val.canceledFromSprinting = false; val.forceSprintDuringState = false; val.fullRestockOnAssign = true; val.resetCooldownTimerOnUse = false; val.isCombatSkill = true; val.mustKeyPress = false; val.cancelSprintingOnActivation = false; ContentAddition.AddSkillDef(val); GenericSkill val2 = ImpBody.AddComponent<GenericSkill>(); val2.skillName = "ImpVoidSpikes"; SkillFamily val3 = ScriptableObject.CreateInstance<SkillFamily>(); ((Object)val3).name = "ImpVoidSpikesFamily"; val3.variants = (Variant[])(object)new Variant[1] { new Variant { skillDef = val } }; val2._skillFamily = val3; ContentAddition.AddSkillFamily(val3); ImpBody.GetComponent<SkillLocator>().secondary = val2; } } public class ImpVoidSpike : BaseState { public static float baseDuration = 3.5f; public static float damageCoefficient = 4f; public static float procCoefficient; public static float selfForce; public static float forceMagnitude = 16f; public static GameObject hitEffectPrefab; public static GameObject swipeEffectPrefab; public static string enterSoundString; public static string slashSoundString; public static float walkSpeedPenaltyCoefficient; private Animator modelAnimator; private float duration; private int slashCount; private Transform modelTransform; public override void OnEnter() { ((BaseState)this).OnEnter(); duration = DoubleSlash.baseDuration / base.attackSpeedStat; modelAnimator = ((EntityState)this).GetModelAnimator(); modelTransform = ((EntityState)this).GetModelTransform(); ((EntityState)this).characterMotor.walkSpeedPenaltyCoefficient = DoubleSlash.walkSpeedPenaltyCoefficient; Util.PlayAttackSpeedSound(DoubleSlash.enterSoundString, ((EntityState)this).gameObject, base.attackSpeedStat); if (Object.op_Implicit((Object)(object)modelAnimator)) { ((EntityState)this).PlayAnimation("Gesture, Additive", "DoubleSlash", "DoubleSlash.playbackRate", duration); ((EntityState)this).PlayAnimation("Gesture, Override", "DoubleSlash", "DoubleSlash.playbackRate", duration); } if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ((EntityState)this).characterBody.SetAimTimer(duration + 2f); } } public override void OnExit() { ((EntityState)this).characterMotor.walkSpeedPenaltyCoefficient = 1f; ((EntityState)this).OnExit(); } private void HandleSlash(string animatorParamName, string muzzleName, string hitBoxGroupName) { //IL_004b: 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_0060: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //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 (!((double)modelAnimator.GetFloat(animatorParamName) <= 0.100000001490116)) { Util.PlaySound(DoubleSlash.slashSoundString, ((EntityState)this).gameObject); EffectManager.SimpleMuzzleFlash(DoubleSlash.swipeEffectPrefab, ((EntityState)this).gameObject, muzzleName, true); slashCount++; Ray val = Utils.PredictAimray(((BaseState)this).GetAimRay(), ((EntityState)this).characterBody, ImpChanges.impVoidSpikes); ProjectileManager.instance.FireProjectile(ImpChanges.impVoidSpikes, ((Ray)(ref val)).origin, Util.QuaternionSafeLookRotation(((Ray)(ref val)).direction), ((EntityState)this).gameObject, base.damageStat * 1f, 0f, Util.CheckRoll(base.critStat, ((EntityState)this).characterBody.master), (DamageColorIndex)0, (GameObject)null, -1f); } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (NetworkServer.active && Object.op_Implicit((Object)(object)modelAnimator)) { switch (slashCount) { case 0: HandleSlash("HandR.hitBoxActive", "SwipeRight", "HandR"); break; case 1: HandleSlash("HandL.hitBoxActive", "SwipeLeft", "HandL"); break; } } if (!((double)((EntityState)this).fixedAge < (double)duration) && ((EntityState)this).isAuthority) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { return (InterruptPriority)2; } } } namespace MiscMods.StolenContent.Donger { internal class BellChanges { internal GameObject BellMaster => Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Bell/BellMaster.prefab").WaitForCompletion(); internal GameObject BellBody => Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Bell/BellBody.prefab").WaitForCompletion(); public static BellChanges Instance { get; private set; } public static void Init() { if (Instance == null) { Instance = new BellChanges(); } } private BellChanges() { //IL_0008: 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_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_0177: Unknown result type (might be due to invalid IL or missing references) bool flag = default(bool); ContentAddition.AddEntityState<BuffBeamPlus>(ref flag); SkillDef val = ScriptableObject.CreateInstance<SkillDef>(); val.skillName = "BuffBeamPlus"; ((Object)val).name = "BuffBeamPlus"; val.skillNameToken = "BuffBeamPlus"; val.skillDescriptionToken = "Creates a beam to a nearby ally and makes them invincible"; val.activationState = new SerializableEntityStateType(typeof(BuffBeamPlus)); val.activationStateMachineName = "Weapon"; val.interruptPriority = (InterruptPriority)6; val.baseMaxStock = 1; val.baseRechargeInterval = 45f; val.rechargeStock = 1; val.requiredStock = 1; val.stockToConsume = 1; val.cancelSprintingOnActivation = false; val.canceledFromSprinting = false; val.forceSprintDuringState = false; val.resetCooldownTimerOnUse = false; val.mustKeyPress = false; val.dontAllowPastMaxStocks = true; val.beginSkillCooldownOnSkillEnd = true; val.fullRestockOnAssign = true; val.isCombatSkill = true; ContentAddition.AddSkillDef(val); GenericSkill val2 = BellBody.AddComponent<GenericSkill>(); val2.skillName = "BuffBeamPlus"; SkillFamily val3 = ScriptableObject.CreateInstance<SkillFamily>(); ((Object)val3).name = "BellBuffBeamPlusFamily"; val3.variants = (Variant[])(object)new Variant[1] { new Variant { skillDef = val } }; val2._skillFamily = val3; ContentAddition.AddSkillFamily(val3); BellBody.GetComponent<SkillLocator>().secondary = val2; AISkillDriver obj = BellMaster.AddComponent<AISkillDriver>(); obj.customName = "BuffBeam"; obj.skillSlot = (SkillSlot)1; obj.requireSkillReady = true; obj.requireEquipmentReady = false; obj.maxUserHealthFraction = 0.8f; obj.moveTargetType = (TargetType)0; BellMaster.ReorderSkillDrivers(2); } } public class BuffBeamPlus : BuffBeam { public override void OnEnter() { //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0098: 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_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_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_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_00b8: Expected O, but got Unknown //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_0162: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { ((BaseState)this).attackSpeedStat = ((EntityState)this).characterBody.attackSpeed; ((BaseState)this).damageStat = ((EntityState)this).characterBody.damage; ((BaseState)this).critStat = ((EntityState)this).characterBody.crit; ((BaseState)this).moveSpeedStat = ((EntityState)this).characterBody.moveSpeed; } Util.PlaySound(BuffBeam.playBeamSoundString, ((EntityState)this).gameObject); Ray aimRay = ((BaseState)this).GetAimRay(); BullseyeSearch val = new BullseyeSearch { filterByLoS = false, maxDistanceFilter = 50f, maxAngleFilter = 180f, searchOrigin = ((Ray)(ref aimRay)).origin, searchDirection = ((Ray)(ref aimRay)).direction, sortMode = (SortMode)2, teamMaskFilter = TeamMask.none }; if (Object.op_Implicit((Object)(object)((EntityState)this).teamComponent)) { ((TeamMask)(ref val.teamMaskFilter)).AddTeam(((EntityState)this).teamComponent.teamIndex); } val.RefreshCandidates(); val.FilterOutGameObject(((EntityState)this).gameObject); base.target = (from x in val.GetResults() where Object.op_Implicit((Object)(object)x.healthComponent.body) && x.healthComponent.body.bodyIndex != ((EntityState)this).characterBody.bodyIndex select x).FirstOrDefault(); if (Object.op_Implicit((Object)(object)base.target)) { ((BaseState)this).StartAimMode(BuffBeam.duration, false); Debug.LogFormat("Buffing target {0}", new object[1] { base.target }); base.targetBody = base.target.healthComponent.body; base.targetBody.AddBuff(Buffs.ElephantArmorBoost.buffIndex); } string text = "Muzzle"; Transform modelTransform = ((EntityState)this).GetModelTransform(); if (!Object.op_Implicit((Object)(object)modelTransform)) { return; } ChildLocator component = ((Component)modelTransform).GetComponent<ChildLocator>(); if (Object.op_Implicit((Object)(object)component)) { base.muzzleTransform = component.FindChild(text); base.buffBeamInstance = Object.Instantiate<GameObject>(BuffBeam.buffBeamPrefab); ChildLocator component2 = base.buffBeamInstance.GetComponent<ChildLocator>(); if (Object.op_Implicit((Object)(object)component2)) { base.beamTipTransform = component2.FindChild("BeamTip"); } base.healBeamCurve = base.buffBeamInstance.GetComponentInChildren<BezierCurveLine>(); } } public override void OnExit() { //IL_001e: Unknown result type (might be due to invalid IL or missing references) ((BuffBeam)this).OnExit(); if (Object.op_Implicit((Object)(object)base.targetBody)) { base.targetBody.RemoveBuff(Buffs.ElephantArmorBoost.buffIndex); } } } } namespace MiscMods.StolenContent.Beetle { public class BeetleBurrow : BaseState { public static float burrowAccuracyCoefficient = 0.3f; public static float baseBurrowDuration = 1f; public static float radius = 10f; private HurtBox target; private Vector3 predictedDestination; public float duration; private CharacterModel characterModel; private HurtBoxGroup hurtboxGroup; public override void OnEnter() { ((BaseState)this).OnEnter(); duration = baseBurrowDuration; Transform modelTransform = ((EntityState)this).GetModelTransform(); if (Object.op_Implicit((Object)(object)modelTransform)) { characterModel = ((Component)modelTransform).GetComponent<CharacterModel>(); hurtboxGroup = ((Component)modelTransform).GetComponent<HurtBoxGroup>(); } if (Object.op_Implicit((Object)(object)characterModel)) { CharacterModel obj = characterModel; obj.invisibilityCount++; } if (Object.op_Implicit((Object)(object)hurtboxGroup)) { HurtBoxGroup obj2 = hurtboxGroup; int hurtBoxesDeactivatorCounter = obj2.hurtBoxesDeactivatorCounter; obj2.hurtBoxesDeactivatorCounter = hurtBoxesDeactivatorCounter + 1; } if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((Behaviour)((EntityState)this).characterMotor).enabled = false; } ((EntityState)this).gameObject.layer = LayerIndex.fakeActor.intVal; ((BaseCharacterController)((EntityState)this).characterMotor).Motor.RebuildCollidableLayers(); CalculatePredictedDestination(); Util.PlaySound("Play_magmaWorm_burrowed_loop", ((EntityState)this).gameObject); } private void CalculatePredictedDestination() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_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_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0049: 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_0051: Expected O, but got Unknown //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_015c: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Unknown result type (might be due to invalid IL or missing references) //IL_016c: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_014e: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0140: Unknown result type (might be due to invalid IL or missing references) //IL_0145: Unknown result type (might be due to invalid IL or missing references) //IL_014a: Unknown result type (might be due to invalid IL or missing references) Vector3 val = Vector3.zero; Ray aimRay = ((BaseState)this).GetAimRay(); BullseyeSearch val2 = new BullseyeSearch { searchOrigin = ((Ray)(ref aimRay)).origin, searchDirection = ((Ray)(ref aimRay)).direction, maxDistanceFilter = 100f, teamMaskFilter = TeamMask.allButNeutral, filterByLoS = false, sortMode = (SortMode)2 }; ((TeamMask)(ref val2.teamMaskFilter)).RemoveTeam(TeamComponent.GetObjectTeam(((EntityState)this).gameObject)); val2.RefreshCandidates(); target = val2.GetResults().FirstOrDefault(); if (Object.op_Implicit((Object)(object)target)) { val = ((Component)target).transform.position - ((EntityState)this).transform.position; HealthComponent healthComponent = target.healthComponent; object obj; if (healthComponent == null) { obj = null; } else { CharacterBody body = healthComponent.body; obj = ((body != null) ? body.characterMotor : null); } CharacterMotor val3 = (CharacterMotor)obj; if (Object.op_Implicit((Object)(object)val3)) { Vector3 moveDirection = val3.moveDirection; Vector3 normalized = ((Vector3)(ref moveDirection)).normalized; float num = target.healthComponent.body.moveSpeed * duration; Vector3 val4 = val + (num + radius) * normalized; if (((Vector3)(ref val4)).sqrMagnitude <= radius * radius) { val4 = val - (num - radius) * normalized; } val = val4; } } predictedDestination = ((EntityState)this).transform.position + val; ((EntityState)this).characterDirection.forward = val; } private Vector3 GetFinalPosition() { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0082: 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) Vector3 val = (Object.op_Implicit((Object)(object)target) ? Vector3.Lerp(predictedDestination, ((Component)target).transform.position, burrowAccuracyCoefficient) : predictedDestination); NodeGraph groundNodes = SceneInfo.instance.groundNodes; NodeIndex val2 = groundNodes.FindClosestNode(val, ((EntityState)this).characterBody.hullClassification, float.PositiveInfinity); groundNodes.GetNodePosition(val2, ref val); return val + (((EntityState)this).transform.position - ((EntityState)this).characterBody.footPosition); } private void SetPosition(Vector3 newPosition) { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) CharacterMotor characterMotor = ((EntityState)this).characterMotor; if (characterMotor != null) { ((BaseCharacterController)characterMotor).Motor.SetPositionAndRotation(newPosition, Quaternion.identity, true); } } public override void FixedUpdate() { //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) ((EntityState)this).FixedUpdate(); if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((EntityState)this).characterMotor.velocity = Vector3.zero; } if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration) { ((EntityState)this).outer.SetNextState((EntityState)(object)new ExitBurrow()); } } public override void OnExit() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000d: 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_0019: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) Vector3 finalPosition = GetFinalPosition(); ((EntityState)this).characterDirection.forward = finalPosition - ((EntityState)this).transform.position; SetPosition(finalPosition); ((EntityState)this).gameObject.layer = LayerIndex.defaultLayer.intVal; CharacterMotor characterMotor = ((EntityState)this).characterMotor; if (characterMotor != null) { ((BaseCharacterController)characterMotor).Motor.RebuildCollidableLayers(); } if (Object.op_Implicit((Object)(object)characterModel)) { CharacterModel obj = characterModel; obj.invisibilityCount--; } if (Object.op_Implicit((Object)(object)hurtboxGroup)) { HurtBoxGroup obj2 = hurtboxGroup; int hurtBoxesDeactivatorCounter = obj2.hurtBoxesDeactivatorCounter; obj2.hurtBoxesDeactivatorCounter = hurtBoxesDeactivatorCounter - 1; } if (Object.op_Implicit((Object)(object)((EntityState)this).characterMotor)) { ((Behaviour)((EntityState)this).characterMotor).enabled = true; } Util.PlaySound("Stop_magmaWorm_burrowed_loop", ((EntityState)this).gameObject); ((EntityState)this).OnExit(); } } public class ExitBurrow : BaseState { public static float ANIM_DURATION_COEF = 0.7f; public static float baseBurrowExitDuration = 1.3f; public static float exitJumpMarker = 0.4f; public static string endSoundString = "Play_hermitCrab_unburrow"; public static string burrowSoundString = "Play_treeBot_sprint_end"; private float duration; private bool didJump; private bool didCancelAnimation; private bool movementHitAuthority; public override void OnEnter() { //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Expected O, but got Unknown ((BaseState)this).OnEnter(); duration = baseBurrowExitDuration / base.attackSpeedStat; ((EntityState)this).PlayAnimation("Body", "Spawn1", "Spawn1.playbackRate", duration / ANIM_DURATION_COEF); if (((EntityState)this).isAuthority) {