Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of SwampMiniboss v1.0.3
SwampMiniboss.dll
Decompiled 6 months agousing System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using EntityStates; using EntityStates.Destructible; using On.EntityStates.Destructible; using On.RoR2; using On.RoR2.UI.MainMenu; using RoR2; using RoR2.UI.MainMenu; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; using UnityEngine.SceneManagement; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = "")] [assembly: AssemblyCompany("SwampMiniboss")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("SwampMiniboss")] [assembly: AssemblyTitle("SwampMiniboss")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace SwampMiniboss; [BepInPlugin("com.rob.SwampMiniboss", "SwampMiniboss", "1.0.3")] public class Plugin : BaseUnityPlugin { public const string MODUID = "com.rob.SwampMiniboss"; public static Vector3 spawnPoint = new Vector3(36f, -148f, -191f); public static bool hasInit = false; private void Awake() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Expected O, but got Unknown //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Expected O, but got Unknown BaseMainMenuScreen.Awake += new hook_Awake(BaseMainMenuScreen_Awake); SceneManager.sceneLoaded += SceneManager_sceneLoaded; AltarSkeletonDeath.Explode += new hook_Explode(AltarSkeletonDeath_Explode); CharacterBody.OnDeathStart += new hook_OnDeathStart(CharacterBody_OnDeathStart); } private void BaseMainMenuScreen_Awake(orig_Awake orig, BaseMainMenuScreen self) { if (!hasInit) { hasInit = true; AddBeetleDisplayRule(); } orig.Invoke(self); } private void CharacterBody_OnDeathStart(orig_OnDeathStart orig, CharacterBody self) { SwampBossHandler component = ((Component)self).GetComponent<SwampBossHandler>(); if (Object.op_Implicit((Object)(object)component)) { component.TrySpawnPickup(); } orig.Invoke(self); } public static void AddBeetleDisplayRule() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0037: 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_005f: 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_0078: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: 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_00d0: 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_00e6: 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_00ed: Unknown result type (might be due to invalid IL or missing references) ItemDisplayRuleSet val = Addressables.LoadAssetAsync<ItemDisplayRuleSet>((object)"RoR2/Base/BeetleGuard/idrsBeetleGuard.asset").WaitForCompletion(); List<KeyAssetRuleGroup> list = val.keyAssetRuleGroups.ToList(); GameObject followerPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/NovaOnHeal/DisplayDevilHorns.prefab").WaitForCompletion(); list.Add(new KeyAssetRuleGroup { keyAsset = (Object)(object)Items.NovaOnHeal, displayRuleGroup = new DisplayRuleGroup { rules = (ItemDisplayRule[])(object)new ItemDisplayRule[1] { new ItemDisplayRule { ruleType = (ItemDisplayRuleType)0, followerPrefab = followerPrefab, limbMask = (LimbFlags)0, childName = "Head", localPos = new Vector3(-0.06254f, 0.60391f, -0.66027f), localAngles = new Vector3(357.0576f, 201.3958f, 263.8221f), localScale = new Vector3(0.60461f, 0.69721f, 0.60435f) } } } }); val.keyAssetRuleGroups = list.ToArray(); } public static void SpawnBoss() { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Expected O, but got Unknown //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Expected O, but got Unknown //IL_0082: Unknown result type (might be due to invalid IL or missing references) if (!NetworkServer.active) { return; } MasterSummon val = new MasterSummon(); val.position = spawnPoint; val.masterPrefab = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/BeetleGuard/BeetleGuardMaster.prefab").WaitForCompletion(); val.summonerBodyObject = null; val.teamIndexOverride = (TeamIndex)2; val.ignoreTeamMemberLimit = true; CharacterMaster val2 = val.Perform(); if (Object.op_Implicit((Object)(object)val2)) { Inventory component = ((Component)val2).GetComponent<Inventory>(); if (Object.op_Implicit((Object)(object)component)) { component.SetEquipmentIndex(Equipment.AffixPoison.equipmentIndex); component.GiveItem(Items.NovaOnHeal, 1); component.GiveItem(Items.UseAmbientLevel, 1); } val2.onBodyStart += Master_onBodyStart; } Chat.SendBroadcastChat((ChatMessageBase)new SimpleChatMessage { baseToken = "<style=cWorldEvent>A horrible chill goes down your spine..</style>" }); } private static void Master_onBodyStart(CharacterBody characterBody) { if (Object.op_Implicit((Object)(object)characterBody)) { ((Component)characterBody).gameObject.AddComponent<SwampBossHandler>(); } } private void AltarSkeletonDeath_Explode(orig_Explode orig, AltarSkeletonDeath self) { SpawnBoss(); orig.Invoke(self); } private void SceneManager_sceneLoaded(Scene arg0, LoadSceneMode arg1) { //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) Scene activeScene = SceneManager.GetActiveScene(); string name = ((Scene)(ref activeScene)).name; if (name == "foggyswamp") { GameObject gameObject = ((Component)GameObject.Find("HOLDER: Hidden Altar Stuff").transform.Find("AltarCenter").GetChild(0)).gameObject; if (Object.op_Implicit((Object)(object)gameObject)) { Object.Destroy((Object)(object)gameObject.GetComponent<GameObjectUnlockableFilter>()); gameObject.SetActive(true); } } } } public class SwampBossHandler : MonoBehaviour { private CharacterBody characterBody; private bool hasEquippedHeal; private bool hasDroppedItem; private void Awake() { characterBody = ((Component)this).GetComponent<CharacterBody>(); } private void Start() { characterBody.isElite = true; CharacterBody obj = characterBody; obj.baseMaxHealth *= 8f; CharacterBody obj2 = characterBody; obj2.baseDamage *= 4f; characterBody.baseNameToken = "N'kuhana's Devotee"; hasEquippedHeal = false; } private void FixedUpdate() { if (!hasEquippedHeal && Object.op_Implicit((Object)(object)characterBody) && Object.op_Implicit((Object)(object)characterBody.healthComponent) && characterBody.healthComponent.combinedHealth <= characterBody.healthComponent.fullCombinedHealth * 0.5f) { hasEquippedHeal = true; } } public void TrySpawnPickup() { //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_003c: 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_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_005a: Unknown result type (might be due to invalid IL or missing references) if (!hasDroppedItem && NetworkServer.active) { hasDroppedItem = true; PickupDropletController.CreatePickupDroplet(PickupCatalog.FindPickupIndex(Items.NovaOnHeal.itemIndex), characterBody.corePosition + Vector3.up * 0.25f, Vector3.up * 10f); } } } public class UseHeal : BaseSkillState { private float duration = 1.8f; private bool hasHealed = false; public override void OnEnter() { ((BaseState)this).OnEnter(); } public override void FixedUpdate() { //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= duration * 0.5f && !hasHealed) { hasHealed = true; if (NetworkServer.active) { ((EntityState)this).healthComponent.HealFraction(0.5f, default(ProcChainMask)); } } if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= duration) { ((EntityState)this).outer.SetNextStateToMain(); } } public override InterruptPriority GetMinimumInterruptPriority() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) return (InterruptPriority)3; } }