Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of Respawn For Mithrix v1.1.1
Respawn_For_Mithrix.dll
Decompiled 11 months agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using EntityStates.FalseSonBoss; using EntityStates.Missions.BrotherEncounter; using On.EntityStates.FalseSonBoss; using On.EntityStates.Missions.BrotherEncounter; using RoR2; using RoR2.ContentManagement; using UnityEngine; using UnityEngine.Networking; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyVersion("0.0.0.0")] namespace Respawn_For_Mithrix; public class Respawn_For_MithrixContent : IContentPackProvider { internal ManualLogSource lPluginLogger; internal GameObject oRezEffect; internal Dictionary<string, bool> dicConfig; public string identifier => "com.Shasocais.Respawn_For_Mithrix"; public static ReadOnlyContentPack readOnlyContentPack => new ReadOnlyContentPack(Respawn_For_MithrixContentPack); internal static ContentPack Respawn_For_MithrixContentPack { get; } = new ContentPack(); public IEnumerator LoadStaticContentAsync(LoadStaticContentAsyncArgs args) { oRezEffect = LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/HippoRezEffect"); yield break; } public IEnumerator GenerateContentPackAsync(GetContentPackAsyncArgs args) { args.ReportProgress(1f); yield break; } public IEnumerator FinalizeAsync(FinalizeAsyncArgs args) { lPluginLogger.LogInfo((object)"Adding Hook"); if (dicConfig.TryGetValue("Mithrix", out var value) && value) { PreEncounter.OnEnter += new hook_OnEnter(RespawnPlayers_Mithrix); } if (dicConfig.TryGetValue("FalseSon", out value) && value) { HeartSpawnState.OnEnter += new hook_OnEnter(RespawnPlayers_FalseSon); } lPluginLogger.LogInfo((object)"Respawn For Mithrix -- loaded"); args.ReportProgress(1f); yield break; } private void AddSelf(AddContentPackProviderDelegate addContentPackProvider) { addContentPackProvider.Invoke((IContentPackProvider)(object)this); } internal Respawn_For_MithrixContent(ManualLogSource pluginLogger, bool enableMithrixHook, bool enableFalseSonHook) { //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Expected O, but got Unknown lPluginLogger = pluginLogger; dicConfig = new Dictionary<string, bool>(); dicConfig.Add("Mithrix", enableMithrixHook); dicConfig.Add("FalseSon", enableFalseSonHook); ContentManager.collectContentPackProviders += new CollectContentPackProvidersDelegate(AddSelf); } private void RespawnPlayers_Mithrix(orig_OnEnter orig, PreEncounter self) { RespawnPlayers(); orig.Invoke(self); } private void RespawnPlayers_FalseSon(orig_OnEnter orig, HeartSpawnState self) { RespawnPlayers(); orig.Invoke(self); } private void RespawnPlayers() { //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_009c: 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_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_0112: 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_0119: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Expected O, but got Unknown if (!NetworkServer.active) { return; } foreach (CharacterMaster item in CharacterMaster.readOnlyInstancesList.Where((CharacterMaster x) => x.IsDeadAndOutOfLivesServer() && (int)x.teamIndex == 1)) { try { Vector3 deathFootPosition = item.deathFootPosition; deathFootPosition = (Vector3)(((??)TeleportHelper.FindSafeTeleportDestination(item.deathFootPosition, item.bodyPrefab.GetComponent<CharacterBody>(), RoR2Application.rng)) ?? item.deathFootPosition); item.Respawn(deathFootPosition, Quaternion.Euler(0f, Random.Range(0f, 360f), 0f), false); item.GetBody().AddTimedBuff(Buffs.Immune, 3f); if (Object.op_Implicit((Object)(object)item.bodyInstanceObject)) { EntityStateMachine[] components = item.bodyInstanceObject.GetComponents<EntityStateMachine>(); foreach (EntityStateMachine obj in components) { obj.initialStateType = obj.mainStateType; } if (Object.op_Implicit((Object)(object)oRezEffect)) { EffectManager.SpawnEffect(oRezEffect, new EffectData { origin = deathFootPosition, rotation = item.bodyInstanceObject.transform.rotation }, true); } } } catch (Exception ex) { lPluginLogger.LogWarning((object)"Failed to rez"); lPluginLogger.LogWarning((object)ex.Message); } } } } [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.Shasocais.Respawn_For_Mithrix", "Respawn For Mithrix", "1.1.1")] public class Respawn_For_MithrixMain : BaseUnityPlugin { public const string GUID = "com.Shasocais.Respawn_For_Mithrix"; public const string MODNAME = "Respawn For Mithrix"; public const string VERSION = "1.1.1"; public static ConfigEntry<bool> EnableMithrixRespawn { get; set; } public static ConfigEntry<bool> EnableFalseSonRespawn { get; set; } public static PluginInfo pluginInfo { get; private set; } public static Respawn_For_MithrixMain instance { get; private set; } internal static AssetBundle assetBundle { get; private set; } internal static string assetBundleDir => Path.Combine(Path.GetDirectoryName(pluginInfo.Location), "Respawn_For_MithrixAssets"); private void Awake() { instance = this; pluginInfo = ((BaseUnityPlugin)this).Info; EnableMithrixRespawn = ((BaseUnityPlugin)this).Config.Bind<bool>("Enable Respawn Procs", "Pre-Mithrix Respawn", true, "Enable team respawn on Mithrix arena entry"); EnableFalseSonRespawn = ((BaseUnityPlugin)this).Config.Bind<bool>("Enable Respawn Procs", "Pre-False Son Respawn", true, "Enable team respawn on False Son arena entry"); new Respawn_For_MithrixContent(((BaseUnityPlugin)this).Logger, EnableMithrixRespawn.Value, EnableFalseSonRespawn.Value); } internal static void LogFatal(object data) { ((BaseUnityPlugin)instance).Logger.LogFatal(data); } internal static void LogError(object data) { ((BaseUnityPlugin)instance).Logger.LogError(data); } internal static void LogWarning(object data) { ((BaseUnityPlugin)instance).Logger.LogWarning(data); } internal static void LogMessage(object data) { ((BaseUnityPlugin)instance).Logger.LogMessage(data); } internal static void LogInfo(object data) { ((BaseUnityPlugin)instance).Logger.LogInfo(data); } internal static void LogDebug(object data) { ((BaseUnityPlugin)instance).Logger.LogDebug(data); } }