Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of ArtifactOfConsole v1.1.1
ArtifactOfConsole.dll
Decompiled 2 years agousing System; using System.Collections; using 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 ArtifactOfConsole.Artifact; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using EntityStates; using EntityStates.Croco; using EntityStates.GravekeeperBoss; using EntityStates.Loader; using EntityStates.Toolbot; using IL.EntityStates.Croco; using IL.EntityStates.Toolbot; using IL.RoR2; using KinematicCharacterController; using Microsoft.CodeAnalysis; using Mono.Cecil.Cil; using MonoMod.Cil; using On.EntityStates.Croco; using On.EntityStates.GravekeeperBoss; using On.EntityStates.Loader; using On.EntityStates.Toolbot; using On.RoR2; using On.RoR2.Items; using On.RoR2.Projectile; using On.RoR2.UI; using R2API; using R2API.Utils; using RoR2; using RoR2.CharacterAI; using RoR2.ConVar; using RoR2.ExpansionManagement; using RoR2.Items; using RoR2.Networking; using RoR2.Projectile; using RoR2.UI; using TMPro; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Diagnostics; 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.0", FrameworkDisplayName = ".NET Standard 2.0")] [assembly: AssemblyCompany("ArtifactOfConsole")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("ArtifactOfConsole")] [assembly: AssemblyTitle("ArtifactOfConsole")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] 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 ArtifactOfConsole { [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("HIFU.ArtifactOfConsole", "ArtifactOfConsole", "1.1.0")] public class Main : BaseUnityPlugin { public const string PluginGUID = "HIFU.ArtifactOfConsole"; public const string PluginAuthor = "HIFU"; public const string PluginName = "ArtifactOfConsole"; public const string PluginVersion = "1.1.0"; public static AssetBundle artifactofconsole; public static ManualLogSource ACLogger; public void Awake() { ACLogger = ((BaseUnityPlugin)this).Logger; artifactofconsole = AssetBundle.LoadFromFile(Assembly.GetExecutingAssembly().Location.Replace("ArtifactOfConsole.dll", "artifactofconsole")); IEnumerable<Type> enumerable = from type in Assembly.GetExecutingAssembly().GetTypes() where !type.IsAbstract && type.IsSubclassOf(typeof(ArtifactBase)) select type; foreach (Type item in enumerable) { ArtifactBase artifactBase = (ArtifactBase)Activator.CreateInstance(item); artifactBase.Init(((BaseUnityPlugin)this).Config); } } } } namespace ArtifactOfConsole.Artifact { public abstract class ArtifactBase<T> : ArtifactBase where T : ArtifactBase<T> { public static T Instance { get; private set; } public ArtifactBase() { if (Instance != null) { throw new InvalidOperationException("Singleton class \"" + typeof(T).Name + "\" inheriting ArtifactBase was instantiated twice"); } Instance = this as T; } } public abstract class ArtifactBase { public ArtifactDef ArtifactDef; public abstract string ArtifactName { get; } public abstract string ArtifactLangTokenName { get; } public abstract string ArtifactDescription { get; } public abstract Sprite ArtifactEnabledIcon { get; } public abstract Sprite ArtifactDisabledIcon { get; } public bool ArtifactEnabled => Object.op_Implicit((Object)(object)Run.instance) && RunArtifactManager.instance.IsArtifactEnabled(ArtifactDef); public abstract void Init(ConfigFile config); protected void CreateLang() { LanguageAPI.Add("ARTIFACT_" + ArtifactLangTokenName + "_NAME", ArtifactName); LanguageAPI.Add("ARTIFACT_" + ArtifactLangTokenName + "_DESCRIPTION", ArtifactDescription); } protected void CreateArtifact() { ArtifactDef = ScriptableObject.CreateInstance<ArtifactDef>(); ArtifactDef.cachedName = "ARTIFACT_" + ArtifactLangTokenName; ArtifactDef.nameToken = "ARTIFACT_" + ArtifactLangTokenName + "_NAME"; ArtifactDef.descriptionToken = "ARTIFACT_" + ArtifactLangTokenName + "_DESCRIPTION"; ArtifactDef.smallIconSelectedSprite = ArtifactEnabledIcon; ArtifactDef.smallIconDeselectedSprite = ArtifactDisabledIcon; ContentAddition.AddArtifactDef(ArtifactDef); } public abstract void Hooks(); } internal class ArtifactOfConsole : ArtifactBase<ArtifactOfConsole> { public static OldCleansingPoolDropTable oldCleansingPoolDropTable; public static BuffDef oldPowerMode; public static float textTimer = 0f; public static float textInterval = 0.6f; public override string ArtifactName => "Artifact of Console"; public override string ArtifactLangTokenName => "HIFU_ArtifactOfConsole"; public override string ArtifactDescription => "Experience a bunch of Risk of Rain 2 Console Edition bugs."; public override Sprite ArtifactEnabledIcon => Main.artifactofconsole.LoadAsset<Sprite>("texArtifactOfConsoleOn"); public override Sprite ArtifactDisabledIcon => Main.artifactofconsole.LoadAsset<Sprite>("texArtifactOfConsoleOff"); public override void Init(ConfigFile config) { //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_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_008c: 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) Texture2D val = Addressables.LoadAssetAsync<Texture2D>((object)"RoR2/Base/Common/texBuffGenericShield.tif").WaitForCompletion(); oldCleansingPoolDropTable = ScriptableObject.CreateInstance<OldCleansingPoolDropTable>(); oldPowerMode = ScriptableObject.CreateInstance<BuffDef>(); oldPowerMode.isDebuff = false; oldPowerMode.isHidden = false; oldPowerMode.canStack = false; oldPowerMode.buffColor = Color32.op_Implicit(new Color32((byte)214, (byte)201, (byte)58, byte.MaxValue)); oldPowerMode.iconSprite = Sprite.Create(val, new Rect(0f, 0f, (float)((Texture)val).width, (float)((Texture)val).height), new Vector2(0f, 0f)); CreateLang(); CreateArtifact(); Hooks(); } public override void Hooks() { //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 //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Expected O, but got Unknown //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Expected O, but got Unknown //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Expected O, but got Unknown //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Expected O, but got Unknown //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Expected O, but got Unknown //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Expected O, but got Unknown //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Expected O, but got Unknown //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Expected O, but got Unknown //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Expected O, but got Unknown //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Expected O, but got Unknown //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Expected O, but got Unknown //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Expected O, but got Unknown //IL_0128: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Expected O, but got Unknown //IL_013a: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Expected O, but got Unknown //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Expected O, but got Unknown //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Expected O, but got Unknown //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_01b0: Expected O, but got Unknown //IL_01b8: Unknown result type (might be due to invalid IL or missing references) //IL_01c2: Expected O, but got Unknown //IL_01ca: Unknown result type (might be due to invalid IL or missing references) //IL_01d4: Expected O, but got Unknown //IL_01dc: Unknown result type (might be due to invalid IL or missing references) //IL_01e6: Expected O, but got Unknown //IL_01ee: Unknown result type (might be due to invalid IL or missing references) //IL_01f8: Expected O, but got Unknown //IL_0200: Unknown result type (might be due to invalid IL or missing references) //IL_020a: Expected O, but got Unknown //IL_0212: Unknown result type (might be due to invalid IL or missing references) //IL_021c: Expected O, but got Unknown //IL_0224: Unknown result type (might be due to invalid IL or missing references) //IL_022e: Expected O, but got Unknown //IL_0236: Unknown result type (might be due to invalid IL or missing references) //IL_0240: Expected O, but got Unknown //IL_0248: Unknown result type (might be due to invalid IL or missing references) //IL_0252: Expected O, but got Unknown //IL_026c: Unknown result type (might be due to invalid IL or missing references) //IL_0276: Expected O, but got Unknown //IL_027e: Unknown result type (might be due to invalid IL or missing references) //IL_0288: Expected O, but got Unknown //IL_0290: Unknown result type (might be due to invalid IL or missing references) //IL_029a: Expected O, but got Unknown //IL_02a2: Unknown result type (might be due to invalid IL or missing references) //IL_02ac: Expected O, but got Unknown //IL_02b4: Unknown result type (might be due to invalid IL or missing references) //IL_02be: Expected O, but got Unknown CharacterBody.onBodyStartGlobal += RemoveOSPMakeBrassCancer; CharacterMaster.onStartGlobal += ClingyDronesAndInvincibleUmbrae; Bite.OnMeleeHitAuthority += new Manipulator(RemoveM2Healing); Slash.OnMeleeHitAuthority += new Manipulator(RemoveM1Healing); ToolbotDashImpact.OnEnter += new Manipulator(ToolbotDashImpact_OnEnter); CharacterBody.RecalculateStats += new Manipulator(ChangeTriTipChance); CharacterBody.UpdateFireTrail += new Manipulator(IncreaseFireTrailDamage); GlobalEventManager.OnHitEnemy += new Manipulator(RemoveBandsOnHitChangeDeathMarkDebuffsRequirement); HealthComponent.Heal += new Manipulator(RemoveAegisAndRejuvRack); HealthComponent.TakeDamage += new Manipulator(NoFocusCrystalColorNerfedCrowbarNoPlanula); BaseLeap.OnEnter += new hook_OnEnter(HighSpeedLeap); DamageDisplay.DoUpdate += new hook_DoUpdate(RemoveDamageNumbersLateGame); DamageInfo.ModifyDamageInfo += new hook_ModifyDamageInfo(RandomNoDamageOnHit); GlobalEventManager.OnHitAll += new hook_OnHitAll(OverloadingTwoOrbs); HealthComponent.Awake += new hook_Awake(HealthComponent_Awake); HealthComponent.TakeDamageForce_DamageInfo_bool_bool += new hook_TakeDamageForce_DamageInfo_bool_bool(IncreasedKnockback); HealthComponent.TakeDamageForce_Vector3_bool_bool += new hook_TakeDamageForce_Vector3_bool_bool(IncreasedKnockback2); NearbyDamageBonusBodyBehavior.OnEnable += new hook_OnEnable(NoFocusCrystalVFX); Run.IsExpansionEnabled += new hook_IsExpansionEnabled(DisableSOTV); HUD.Awake += new hook_Awake(HUD_Awake); RoR2Application.onFixedUpdate += RandomCrashFpsDropsFPSLimit; SceneDirector.onPrePopulateMonstersSceneServer += CommencementLunarWispSpam; Stage.onServerStageBegin += RandomStageStuff; CombatDirector.Spawn += new hook_Spawn(LunarChimeraeBugs); GlobalEventManager.OnInteractionBegin += new hook_OnInteractionBegin(GlobalEventManager_OnInteractionBegin); CharacterBody.AddMultiKill += new Manipulator(CharacterBody_AddMultiKill); ProjectileImpactExplosion.OnProjectileImpact += new hook_OnProjectileImpact(ProjectileImpactExplosion_OnProjectileImpact); RecalculateStatsAPI.GetStatCoefficients += new StatHookEventHandler(RecalculateStatsAPI_GetStatCoefficients); ToolbotDualWieldBase.OnEnter += new hook_OnEnter(ToolbotDualWieldBase_OnEnter); PreGroundSlam.OnEnter += new hook_OnEnter(PreGroundSlam_OnEnter); GroundSlam.OnEnter += new hook_OnEnter(GroundSlam_OnEnter); RagdollController.BeginRagdoll += new hook_BeginRagdoll(RagdollController_BeginRagdoll); HoldoutZoneController.Start += new hook_Start(HoldoutZoneController_Start); Run.onRunStartGlobal += Run_onRunStartGlobal; SpawnState.OnEnter += new hook_OnEnter(SpawnState_OnEnter); HUDBossHealthBarController.LateUpdate += new hook_LateUpdate(HUDBossHealthBarController_LateUpdate); HUDBossHealthBarController.OnDisable += new hook_OnDisable(HUDBossHealthBarController_OnDisable); BaseTeleporterState.OnEnter += new hook_OnEnter(BaseTeleporterState_OnEnter); CombatDirector.Awake += new hook_Awake(MoreCredits); } private void HUDBossHealthBarController_OnDisable(orig_OnDisable orig, HUDBossHealthBarController self) { orig.Invoke(self); textTimer = 0f; } private void HUDBossHealthBarController_LateUpdate(orig_LateUpdate orig, HUDBossHealthBarController self) { if (base.ArtifactEnabled) { bool flag = Object.op_Implicit((Object)(object)self.currentBossGroup) && self.currentBossGroup.combatSquad.memberCount > 0; self.container.SetActive(flag); if (flag) { textTimer += Time.fixedDeltaTime; float totalObservedHealth = self.currentBossGroup.totalObservedHealth; float totalMaxObservedMaxHealth = self.currentBossGroup.totalMaxObservedMaxHealth; float num = ((totalMaxObservedMaxHealth == 0f) ? 0f : Mathf.Clamp01(totalObservedHealth / totalMaxObservedMaxHealth)); self.delayedTotalHealthFraction = Mathf.Clamp(Mathf.SmoothDamp(self.delayedTotalHealthFraction, num, ref self.healthFractionVelocity, 0.1f, float.PositiveInfinity, Time.deltaTime), num, 1f); self.fillRectImage.fillAmount = num; self.delayRectImage.fillAmount = self.delayedTotalHealthFraction; StringBuilderExtensions.AppendInt(StringBuilderExtensions.AppendInt(HUDBossHealthBarController.sharedStringBuilder.Clear(), Mathf.CeilToInt(totalObservedHealth), 1u, uint.MaxValue).Append("/"), Mathf.CeilToInt(totalMaxObservedMaxHealth), 1u, uint.MaxValue); ((TMP_Text)self.healthLabel).SetText(HUDBossHealthBarController.sharedStringBuilder); if (textTimer >= textInterval) { Main.ACLogger.LogError((object)"timer ABOVE interval"); ((TMP_Text)self.bossNameLabel).SetText(self.currentBossGroup.bestObservedName, true); ((TMP_Text)self.bossSubtitleLabel).SetText(self.currentBossGroup.bestObservedSubtitle, true); } else { Main.ACLogger.LogError((object)"timer below interval"); ((TMP_Text)self.bossNameLabel).SetText("Boss Name", true); ((TMP_Text)self.bossSubtitleLabel).SetText("Mother of Many", true); } } } else { orig.Invoke(self); } } private void MoreCredits(orig_Awake orig, CombatDirector self) { orig.Invoke(self); if (base.ArtifactEnabled) { self.creditMultiplier += 0.33f; } } private void BaseTeleporterState_OnEnter(orig_OnEnter orig, BaseState self) { //IL_005e: 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_006e: Unknown result type (might be due to invalid IL or missing references) orig.Invoke(self); if (!base.ArtifactEnabled) { return; } float num = 2.5f; TeleporterInteraction component = ((EntityState)self).GetComponent<TeleporterInteraction>(); if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.modelChildLocator)) { Transform val = ((Component)component).transform.Find("TeleporterBaseMesh/BuiltInEffects/PassiveParticle, Sphere"); if (Object.op_Implicit((Object)(object)val)) { val.localScale = Vector3.one * 0.8f * num; } } } private void ToolbotDashImpact_OnEnter(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown ILCursor val = new ILCursor(il); if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 32) })) { int index = val.Index; val.Index = index + 1; val.EmitDelegate<Func<int, int>>((Func<int, int>)((int self) => (!base.ArtifactEnabled) ? self : 0)); } } private void SpawnState_OnEnter(orig_OnEnter orig, SpawnState self) { if (base.ArtifactEnabled) { SpawnState.duration = 10f; } orig.Invoke(self); } private void Run_onRunStartGlobal(Run obj) { //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Expected O, but got Unknown //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Expected O, but got Unknown //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0026: 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 if (base.ArtifactEnabled) { NetworkManagerSystem.cvNetTimeSmoothRate = new FloatConVar("net_time_smooth_rate", (ConVarFlags)0, "0", "The smoothing rate for the network time."); NetworkManagerSystem.svTimeTransmitInterval = new FloatConVar("sv_time_transmit_interval", (ConVarFlags)8, (1f / 6f).ToString(), "How long it takes for the server to issue a time update to clients."); } else { NetworkManagerSystem.cvNetTimeSmoothRate = new FloatConVar("net_time_smooth_rate", (ConVarFlags)0, "1.05", "The smoothing rate for the network time."); NetworkManagerSystem.svTimeTransmitInterval = new FloatConVar("sv_time_transmit_interval", (ConVarFlags)8, (1f / 60f).ToString(), "How long it takes for the server to issue a time update to clients."); } } private void HoldoutZoneController_Start(orig_Start orig, HoldoutZoneController self) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) if (base.ArtifactEnabled && ((Object)((Component)self).transform.root).name == "Moon2DropshipZone") { self.holdoutZoneShape = (HoldoutZoneShape)0; } orig.Invoke(self); } private void RagdollController_BeginRagdoll(orig_BeginRagdoll orig, RagdollController self, Vector3 force) { //IL_001c: 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_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) if (base.ArtifactEnabled) { force *= 5f; } orig.Invoke(self, force); } private void GroundSlam_OnEnter(orig_OnEnter orig, GroundSlam self) { if (base.ArtifactEnabled) { for (int i = 0; i < 50; i++) { Util.PlaySound("Play_loader_R_variant_whooshDown", ((EntityState)self).gameObject); } } orig.Invoke(self); } private void PreGroundSlam_OnEnter(orig_OnEnter orig, PreGroundSlam self) { if (base.ArtifactEnabled) { for (int i = 0; i < 50; i++) { Util.PlaySound("Play_loader_R_variant_activate", ((EntityState)self).gameObject); } } orig.Invoke(self); } private void ToolbotDualWieldBase_OnEnter(orig_OnEnter orig, ToolbotDualWieldBase self) { if (base.ArtifactEnabled) { ToolbotDualWieldBase.bonusBuff = oldPowerMode; } orig.Invoke(self); } private void RecalculateStatsAPI_GetStatCoefficients(CharacterBody sender, StatHookEventArgs args) { if (sender.HasBuff(oldPowerMode)) { args.armorAdd += 200f; } } private void ProjectileImpactExplosion_OnProjectileImpact(orig_OnProjectileImpact orig, ProjectileImpactExplosion self, ProjectileImpactInfo impactInfo) { //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) if (base.ArtifactEnabled && ((Object)((Component)self).gameObject).name.Contains("ImpVoidspikeProjectile")) { self.destroyOnEnemy = false; ((ProjectileExplosion)self).blastRadius = 0f; ((ProjectileExplosion)self).blastDamageCoefficient = 0f; ((ProjectileExplosion)self).blastProcCoefficient = 0f; ((ProjectileExplosion)self).projectileDamage.damageType = (DamageType)0; } orig.Invoke(self, impactInfo); } private void CharacterBody_AddMultiKill(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown ILCursor val = new ILCursor(il); if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[2] { (Instruction x) => ILPatternMatchingExt.MatchCallOrCallvirt(x, (MethodBase)Reflection.GetPropertyGetter(typeof(CharacterBody), "multiKillCount")), (Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 4) })) { val.Index += 2; val.EmitDelegate<Func<int, int>>((Func<int, int>)((int self) => base.ArtifactEnabled ? 2 : self)); } else { Main.ACLogger.LogError((object)"Failed to apply Berzerker's Pauldron Buff Kill Requirement hook"); } } private void GlobalEventManager_OnInteractionBegin(orig_OnInteractionBegin orig, GlobalEventManager self, Interactor interactor, IInteractable interactable, GameObject interactableObject) { if (base.ArtifactEnabled && ((Object)interactableObject).name.Contains("ShrineCleanse")) { ShopTerminalBehavior component = interactableObject.GetComponent<ShopTerminalBehavior>(); component.dropTable = (PickupDropTable)(object)oldCleansingPoolDropTable; } orig.Invoke(self, interactor, interactable, interactableObject); } private bool LunarChimeraeBugs(orig_Spawn orig, CombatDirector self, SpawnCard spawnCard, EliteDef eliteDef, Transform spawnTarget, MonsterSpawnDistance spawnDistance, bool preventOverhead, float valueMultiplier, PlacementMode placementMode) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Invalid comparison between Unknown and I4 //IL_005b: 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_001c: Unknown result type (might be due to invalid IL or missing references) if (base.ArtifactEnabled && (int)spawnCard.eliteRules == 2) { spawnCard.eliteRules = (EliteRules)0; spawnCard.directorCreditCost /= 2; self.eliteBias *= 5000f; self.maxSpawnDistance *= 0.1f; } return orig.Invoke(self, spawnCard, eliteDef, spawnTarget, spawnDistance, preventOverhead, valueMultiplier, placementMode); } private void ChangeTriTipChance(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown ILCursor val = new ILCursor(il); int num = default(int); if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[4] { (Instruction x) => ILPatternMatchingExt.MatchLdarg(x, 0), (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 10f), (Instruction x) => ILPatternMatchingExt.MatchLdloc(x, ref num), (Instruction x) => ILPatternMatchingExt.MatchConvR4(x) })) { val.Index += 2; val.EmitDelegate<Func<float, float>>((Func<float, float>)((float self) => base.ArtifactEnabled ? 9f : self)); } else { Main.ACLogger.LogError((object)"Failed to apply Tri-tip Dagger Chance hook"); } } private bool DisableSOTV(orig_IsExpansionEnabled orig, Run self, ExpansionDef expansionDef) { if (base.ArtifactEnabled && expansionDef.nameToken == "DLC1_NAME") { return false; } return orig.Invoke(self, expansionDef); } private void NoFocusCrystalColorNerfedCrowbarNoPlanula(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown ILCursor val = new ILCursor(il); if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[2] { (Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 10), (Instruction x) => ILPatternMatchingExt.MatchStfld(x, typeof(DamageInfo), "damageColorIndex") })) { val.Index += 1; val.EmitDelegate<Func<int, int>>((Func<int, int>)((int self) => (!base.ArtifactEnabled) ? self : 0)); } else { Main.ACLogger.LogError((object)"Failed to apply Focus Crystal Damage Color hook"); } val.Index = 0; if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[2] { (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 1f), (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 0.75f) })) { val.Index += 2; val.EmitDelegate<Func<float, float>>((Func<float, float>)((float self) => base.ArtifactEnabled ? 0.5f : self)); } else { Main.ACLogger.LogError((object)"Failed to apply Crowbar Damage hook"); } val.Index = 0; if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[2] { (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 15f), (Instruction x) => ILPatternMatchingExt.MatchMul(x) })) { val.Index += 1; val.EmitDelegate<Func<float, float>>((Func<float, float>)((float self) => base.ArtifactEnabled ? 0f : self)); } else { Main.ACLogger.LogError((object)"Failed to apply Crowbar Damage hook"); } } private void NoFocusCrystalVFX(orig_OnEnable orig, NearbyDamageBonusBodyBehavior self) { if (base.ArtifactEnabled) { self.indicatorEnabled = false; } orig.Invoke(self); } private void HUD_Awake(orig_Awake orig, HUD self) { if (base.ArtifactEnabled) { } orig.Invoke(self); } private void HealthComponent_Awake(orig_Awake orig, HealthComponent self) { if (base.ArtifactEnabled) { ((Component)self).gameObject.AddComponent<StupidBandController>(); } orig.Invoke(self); } private void RemoveBandsOnHitChangeDeathMarkDebuffsRequirement(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown ILCursor val = new ILCursor(il); ILLabel val3 = default(ILLabel); if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[2] { (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 4f), (Instruction x) => ILPatternMatchingExt.MatchBltUn(x, ref val3) })) { val.Index += 1; val.EmitDelegate<Func<float, float>>((Func<float, float>)((float self) => base.ArtifactEnabled ? float.MaxValue : self)); } else { Main.ACLogger.LogError((object)"Failed to apply Bands Damage Bug hook"); } val.Index = 0; ILLabel val2 = default(ILLabel); if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[3] { (Instruction x) => ILPatternMatchingExt.MatchLdloc(x, 16), (Instruction x) => ILPatternMatchingExt.MatchLdcI4(x, 4), (Instruction x) => ILPatternMatchingExt.MatchBlt(x, ref val2) })) { val.Index += 2; val.EmitDelegate<Func<int, int>>((Func<int, int>)((int self) => base.ArtifactEnabled ? 5 : self)); } else { Main.ACLogger.LogError((object)"Failed to apply Death Mark Minimum Debuffs hook"); } } private void OverloadingTwoOrbs(orig_OnHitAll orig, GlobalEventManager self, DamageInfo damageInfo, GameObject hitObject) { //IL_00cb: 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_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) if (damageInfo.procCoefficient > 0f && !damageInfo.rejected) { bool active = NetworkServer.active; if (Object.op_Implicit((Object)(object)damageInfo.attacker)) { CharacterBody component = damageInfo.attacker.GetComponent<CharacterBody>(); if (Object.op_Implicit((Object)(object)component)) { CharacterMaster master = component.master; if (Object.op_Implicit((Object)(object)master)) { Inventory inventory = master.inventory; if (Object.op_Implicit((Object)(object)master.inventory) && (component.HasBuff(Buffs.AffixBlue) ? 1 : 0) > 0) { float num = 0.5f; float num2 = Util.OnHitProcDamage(damageInfo.damage, component.damage, num); float num3 = 0f; Vector3 position = damageInfo.position; ProjectileManager.instance.FireProjectile(LegacyResourcesAPI.Load<GameObject>("Prefabs/Projectiles/LightningStake"), position, Quaternion.identity, damageInfo.attacker, num2, num3, damageInfo.crit, (DamageColorIndex)3, (GameObject)null, -1f); } } } } } orig.Invoke(self, damageInfo, hitObject); } private void ClingyDronesAndInvincibleUmbrae(CharacterMaster master) { //IL_063c: Unknown result type (might be due to invalid IL or missing references) //IL_0642: Invalid comparison between Unknown and I4 //IL_045b: Unknown result type (might be due to invalid IL or missing references) //IL_03d4: Unknown result type (might be due to invalid IL or missing references) //IL_05a6: Unknown result type (might be due to invalid IL or missing references) //IL_04e2: Unknown result type (might be due to invalid IL or missing references) //IL_0185: Unknown result type (might be due to invalid IL or missing references) //IL_0289: Unknown result type (might be due to invalid IL or missing references) //IL_0310: Unknown result type (might be due to invalid IL or missing references) if (!base.ArtifactEnabled) { return; } switch (((Object)master).name) { case "Drone1Master(Clone)": { AISkillDriver val9 = (from x in ((Component)master).GetComponents<AISkillDriver>() where x.customName == "IdleNearLeaderWhenNoEnemies" select x).First(); val9.maxDistance = float.PositiveInfinity; val9.movementType = (MovementType)1; AISkillDriver val10 = (from x in ((Component)master).GetComponents<AISkillDriver>() where x.customName == "SoftLeashToLeader" select x).First(); val10.minDistance = 0f; AISkillDriver val11 = (from x in ((Component)master).GetComponents<AISkillDriver>() where x.customName == "HardLeashToLeader" select x).First(); val11.minDistance = 0f; break; } case "Drone2Master(Clone)": { AISkillDriver val12 = (from x in ((Component)master).GetComponents<AISkillDriver>() where x.customName == "HardLeashToLeader" select x).First(); val12.minDistance = 0f; break; } case "EmergencyDroneMaster(Clone)": { AISkillDriver val13 = (from x in ((Component)master).GetComponents<AISkillDriver>() where x.customName == "IdleNearLeaderWhenNoEnemies" select x).First(); val13.maxDistance = float.PositiveInfinity; val13.movementType = (MovementType)1; AISkillDriver val14 = (from x in ((Component)master).GetComponents<AISkillDriver>() where x.customName == "HardLeashToLeader" select x).First(); val14.minDistance = 0f; break; } case "EquipmentDroneMaster(Clone)": { AISkillDriver val6 = (from x in ((Component)master).GetComponents<AISkillDriver>() where x.customName == "IdleNearLeaderWhenNoEnemies" select x).First(); val6.maxDistance = float.PositiveInfinity; val6.movementType = (MovementType)1; AISkillDriver val7 = (from x in ((Component)master).GetComponents<AISkillDriver>() where x.customName == "SoftLeashToLeader" select x).First(); val7.minDistance = 0f; AISkillDriver val8 = (from x in ((Component)master).GetComponents<AISkillDriver>() where x.customName == "HardLeashToLeader" select x).First(); val8.minDistance = 0f; break; } case "FlameDroneMaster(Clone)": { AISkillDriver val15 = (from x in ((Component)master).GetComponents<AISkillDriver>() where x.customName == "IdleNearLeaderWhenNoEnemies" select x).First(); val15.maxDistance = float.PositiveInfinity; val15.movementType = (MovementType)1; AISkillDriver val16 = (from x in ((Component)master).GetComponents<AISkillDriver>() where x.customName == "HardLeashToLeader" select x).First(); val16.minDistance = 0f; break; } case "MegaDroneMaster(Clone)": { AISkillDriver val4 = (from x in ((Component)master).GetComponents<AISkillDriver>() where x.customName == "IdleNearLeaderWhenNoEnemies" select x).First(); val4.maxDistance = float.PositiveInfinity; val4.movementType = (MovementType)1; AISkillDriver val5 = (from x in ((Component)master).GetComponents<AISkillDriver>() where x.customName == "LeashLeaderHard" select x).First(); val5.minDistance = 0f; break; } case "DroneMissileMaster(Clone)": { AISkillDriver val17 = (from x in ((Component)master).GetComponents<AISkillDriver>() where x.customName == "IdleNearLeaderWhenNoEnemies" select x).First(); val17.maxDistance = float.PositiveInfinity; val17.movementType = (MovementType)1; AISkillDriver val18 = (from x in ((Component)master).GetComponents<AISkillDriver>() where x.customName == "SoftLeashToLeader" select x).First(); val18.minDistance = 0f; AISkillDriver val19 = (from x in ((Component)master).GetComponents<AISkillDriver>() where x.customName == "HardLeashToLeader" select x).First(); val19.minDistance = 0f; break; } case "DroneBackupMaster(Clone)": { AISkillDriver val = (from x in ((Component)master).GetComponents<AISkillDriver>() where x.customName == "IdleNearLeaderWhenNoEnemies" select x).First(); val.maxDistance = float.PositiveInfinity; val.movementType = (MovementType)1; AISkillDriver val2 = (from x in ((Component)master).GetComponents<AISkillDriver>() where x.customName == "SoftLeashToLeader" select x).First(); val2.minDistance = 0f; AISkillDriver val3 = (from x in ((Component)master).GetComponents<AISkillDriver>() where x.customName == "HardLeashToLeader" select x).First(); val3.minDistance = 0f; break; } } CharacterBody body = master.GetBody(); if (Object.op_Implicit((Object)(object)body) && (int)master.teamIndex == 2 && ((Object)body).name.Contains("MonsterMaster")) { body.healthComponent.godMode = true; } } private void RemoveDamageNumbersLateGame(orig_DoUpdate orig, DamageDisplay self) { if (base.ArtifactEnabled && Run.instance.stageClearCount >= 11) { self.maxLife = 0f; } orig.Invoke(self); } private void HighSpeedLeap(orig_OnEnter orig, BaseLeap self) { if (base.ArtifactEnabled) { BaseLeap.upwardVelocity = 21f; BaseLeap.forwardVelocity = 9f; } orig.Invoke(self); } private void CommencementLunarWispSpam(SceneDirector sceneDirector) { //IL_0009: 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) if (base.ArtifactEnabled) { Scene activeScene = SceneManager.GetActiveScene(); if (((Scene)(ref activeScene)).name == "moon2") { sceneDirector.monsterCredit *= 50; sceneDirector.spawnDistanceMultiplier *= 0.1f; sceneDirector.eliteBias *= 100f; } } } private void RemoveOSPMakeBrassCancer(CharacterBody body) { //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_00ba: Unknown result type (might be due to invalid IL or missing references) if (!base.ArtifactEnabled) { return; } body.oneShotProtectionFraction = 0f; Vector3 val = default(Vector3); ((Vector3)(ref val))..ctor(0.5f, 2.045f, 1.215f); float num = 0.345f; if (((Object)body).name == "BellBody(Clone)") { Transform child = body.transform.GetChild(0).GetChild(0); if (Object.op_Implicit((Object)(object)child)) { HurtBoxGroup component = ((Component)child).GetComponent<HurtBoxGroup>(); for (int i = 0; i < component.hurtBoxes.Length; i++) { HurtBox val2 = component.hurtBoxes[i]; BoxCollider component2 = ((Component)val2).GetComponent<BoxCollider>(); if (Object.op_Implicit((Object)(object)component2) && component2.size != val) { component2.size = val; } SphereCollider component3 = ((Component)val2).GetComponent<SphereCollider>(); if (Object.op_Implicit((Object)(object)component3) && component3.radius != num) { component3.radius = num; } } } } if (body.isPlayerControlled && (Object)(object)((Component)body).GetComponent<FuckWithCollisions>() == (Object)null) { ((Component)body).gameObject.AddComponent<FuckWithCollisions>(); } } private void RemoveM2Healing(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown ILCursor val = new ILCursor(il); if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 0.5f) })) { val.Index += 1; val.EmitDelegate<Func<float, float>>((Func<float, float>)((float self) => base.ArtifactEnabled ? 0f : self)); } else { Main.ACLogger.LogError((object)"Failed to apply Acrid M2 Regenerative hook"); } } private void RemoveM1Healing(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown ILCursor val = new ILCursor(il); if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 0.5f) })) { val.Index += 1; val.EmitDelegate<Func<float, float>>((Func<float, float>)((float self) => base.ArtifactEnabled ? 0f : self)); } else { Main.ACLogger.LogError((object)"Failed to apply Acrid M1 Regenerative hook"); } } private void IncreaseFireTrailDamage(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown ILCursor val = new ILCursor(il); if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 1.5f) })) { val.Index += 1; val.EmitDelegate<Func<float, float>>((Func<float, float>)((float self) => base.ArtifactEnabled ? 6f : self)); } else { Main.ACLogger.LogError((object)"Failed to apply Blazing Elite Fire Trail Damage hook"); } } private void IncreasedKnockback(orig_TakeDamageForce_DamageInfo_bool_bool orig, HealthComponent self, DamageInfo damageInfo, bool alwaysApply, bool disableAirControlUntilCollision) { //IL_000d: 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_001c: Unknown result type (might be due to invalid IL or missing references) if (base.ArtifactEnabled) { damageInfo.force *= 3f; } orig.Invoke(self, damageInfo, alwaysApply, disableAirControlUntilCollision); } private void IncreasedKnockback2(orig_TakeDamageForce_Vector3_bool_bool orig, HealthComponent self, Vector3 force, bool alwaysApply, bool disableAirControlUntilCollision) { //IL_001a: 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_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) if (base.ArtifactEnabled) { force *= 3f; } orig.Invoke(self, force, alwaysApply, disableAirControlUntilCollision); } private void RandomCrashFpsDropsFPSLimit() { if (base.ArtifactEnabled) { if (Random.RandomRangeInt(0, 10000000) < 2) { Utils.ForceCrash((ForcedCrashCategory)0); } Application.targetFrameRate = 60; if (Run.instance.stageRng.RangeInt(0, 1000) < 3) { Application.targetFrameRate = 10; } } else { Application.targetFrameRate = int.MaxValue; } } private void RandomStageStuff(Stage stage) { //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Expected O, but got Unknown //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Expected O, but got Unknown //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Expected O, but got Unknown //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Expected O, but got Unknown //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Expected O, but got Unknown if (base.ArtifactEnabled) { if (Run.instance.stageRng.RangeInt(0, 100) < 3) { Utils.ForceCrash((ForcedCrashCategory)1); } if (Run.instance.stageRng.RangeInt(0, 100) < 5) { DamageInfo.ModifyDamageInfo += new hook_ModifyDamageInfo(RandomNoDamageForStage); } else { DamageInfo.ModifyDamageInfo -= new hook_ModifyDamageInfo(RandomNoDamageForStage); } if (Run.instance.stageRng.RangeInt(0, 100) < 4) { DamageInfo.ModifyDamageInfo += new hook_ModifyDamageInfo(RandomNoProcsForStage); } else { DamageInfo.ModifyDamageInfo -= new hook_ModifyDamageInfo(RandomNoProcsForStage); } if (Run.instance.stageRng.RangeInt(0, 100) < 6) { DamageInfo.ModifyDamageInfo += new hook_ModifyDamageInfo(RandomInfiniteChainsForStage); } } } private void RandomInfiniteChainsForStage(orig_ModifyDamageInfo orig, DamageInfo self, DamageModifier damageModifier) { //IL_0007: 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) self.procChainMask = default(ProcChainMask); self.procCoefficient = 100f; orig.Invoke(self, damageModifier); } private void RandomNoProcsForStage(orig_ModifyDamageInfo orig, DamageInfo self, DamageModifier damageModifier) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) self.procCoefficient = 0f; orig.Invoke(self, damageModifier); } private void RandomNoDamageForStage(orig_ModifyDamageInfo orig, DamageInfo self, DamageModifier damageModifier) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) self.damage = 0f; orig.Invoke(self, damageModifier); } private void RandomNoDamageOnHit(orig_ModifyDamageInfo orig, DamageInfo self, DamageModifier damageModifier) { //IL_0057: Unknown result type (might be due to invalid IL or missing references) if (Run.instance.stageRng.RangeInt(0, 1000) < 25) { self.damage = 0f; } if (Run.instance.stageRng.RangeInt(0, 1000) < 45) { self.procCoefficient = 0f; } orig.Invoke(self, damageModifier); } private void RemoveAegisAndRejuvRack(ILContext il) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Expected O, but got Unknown ILCursor val = new ILCursor(il); if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1] { (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 1f) })) { val.Index += 1; val.EmitDelegate<Func<float, float>>((Func<float, float>)((float self) => base.ArtifactEnabled ? 0f : self)); } else { Main.ACLogger.LogError((object)"Failed to apply Rejuvenation Rack Healing hook"); } val.Index = 0; if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[3] { (Instruction x) => ILPatternMatchingExt.MatchLdfld(x, "RoR2.HealthComponent/ItemCounts", "barrierOnOverHeal"), (Instruction x) => ILPatternMatchingExt.MatchConvR4(x), (Instruction x) => ILPatternMatchingExt.MatchLdcR4(x, 0.5f) })) { val.Index += 3; val.EmitDelegate<Func<float, float>>((Func<float, float>)((float self) => base.ArtifactEnabled ? 0f : self)); } else { Main.ACLogger.LogError((object)"Failed to apply Aegis Overheal hook"); } } } public class StupidBandController : MonoBehaviour, IOnTakeDamageServerReceiver { public void OnTakeDamageServer(DamageReport damageReport) { //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_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_0102: 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_0372: Unknown result type (might be due to invalid IL or missing references) //IL_0377: Unknown result type (might be due to invalid IL or missing references) //IL_03c5: Unknown result type (might be due to invalid IL or missing references) //IL_03e5: Unknown result type (might be due to invalid IL or missing references) //IL_03ed: Unknown result type (might be due to invalid IL or missing references) //IL_03f2: Unknown result type (might be due to invalid IL or missing references) //IL_03f9: Unknown result type (might be due to invalid IL or missing references) //IL_03fb: Unknown result type (might be due to invalid IL or missing references) //IL_0424: Unknown result type (might be due to invalid IL or missing references) //IL_0429: Unknown result type (might be due to invalid IL or missing references) //IL_0436: 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_0146: 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_0150: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_0157: 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_0168: Unknown result type (might be due to invalid IL or missing references) //IL_0174: 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_017a: Unknown result type (might be due to invalid IL or missing references) //IL_017f: Unknown result type (might be due to invalid IL or missing references) //IL_0186: Unknown result type (might be due to invalid IL or missing references) //IL_0187: Unknown result type (might be due to invalid IL or missing references) //IL_0189: Unknown result type (might be due to invalid IL or missing references) //IL_018e: Unknown result type (might be due to invalid IL or missing references) //IL_018f: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_0196: Unknown result type (might be due to invalid IL or missing references) //IL_01a3: Expected O, but got Unknown //IL_01ad: Unknown result type (might be due to invalid IL or missing references) //IL_01af: Unknown result type (might be due to invalid IL or missing references) //IL_0243: Unknown result type (might be due to invalid IL or missing references) //IL_0248: Unknown result type (might be due to invalid IL or missing references) //IL_024a: Unknown result type (might be due to invalid IL or missing references) //IL_024c: Unknown result type (might be due to invalid IL or missing references) //IL_024e: Unknown result type (might be due to invalid IL or missing references) //IL_0253: Unknown result type (might be due to invalid IL or missing references) //IL_0261: Unknown result type (might be due to invalid IL or missing references) //IL_0263: Unknown result type (might be due to invalid IL or missing references) //IL_0291: Unknown result type (might be due to invalid IL or missing references) //IL_02b0: Unknown result type (might be due to invalid IL or missing references) //IL_02b7: Unknown result type (might be due to invalid IL or missing references) //IL_02b9: Unknown result type (might be due to invalid IL or missing references) //IL_02c0: Unknown result type (might be due to invalid IL or missing references) //IL_02c2: Unknown result type (might be due to invalid IL or missing references) //IL_02eb: Unknown result type (might be due to invalid IL or missing references) //IL_02ed: Unknown result type (might be due to invalid IL or missing references) //IL_0304: Unknown result type (might be due to invalid IL or missing references) //IL_027b: Unknown result type (might be due to invalid IL or missing references) //IL_027d: Unknown result type (might be due to invalid IL or missing references) //IL_0282: Unknown result type (might be due to invalid IL or missing references) //IL_0287: Unknown result type (might be due to invalid IL or missing references) DamageInfo damageInfo = damageReport.damageInfo; GameObject attacker = damageInfo.attacker; if (!Object.op_Implicit((Object)(object)attacker)) { return; } CharacterBody component = attacker.GetComponent<CharacterBody>(); if (!Object.op_Implicit((Object)(object)component)) { return; } Inventory inventory = component.inventory; if (((ProcChainMask)(ref damageInfo.procChainMask)).HasProc((ProcType)12) || !(damageReport.damageDealt / component.damage >= 4f)) { return; } Vector3 aimOrigin = component.aimOrigin; FireProjectileInfo val4; if (component.HasBuff(Buffs.ElementalRingsReady) && Object.op_Implicit((Object)(object)inventory)) { int itemCount = inventory.GetItemCount(Items.IceRing); int itemCount2 = inventory.GetItemCount(Items.FireRing); component.RemoveBuff(Buffs.ElementalRingsReady); for (int i = 1; (float)i <= 10f; i++) { component.AddTimedBuff(Buffs.ElementalRingsCooldown, (float)i); } ProcChainMask procChainMask = damageInfo.procChainMask; ((ProcChainMask)(ref procChainMask)).AddProc((ProcType)12); Vector3 position = damageInfo.position; if (itemCount > 0 && Object.op_Implicit((Object)(object)component)) { float num = 2.5f * (float)itemCount; float damage = Util.OnHitProcDamage(damageInfo.damage, component.damage, num); DamageInfo val = new DamageInfo { damage = damage, damageColorIndex = (DamageColorIndex)3, damageType = (DamageType)0, attacker = damageInfo.attacker, crit = damageInfo.crit, force = Vector3.zero, inflictor = null, position = position, procChainMask = procChainMask, procCoefficient = 1f }; EffectManager.SimpleImpactEffect(LegacyResourcesAPI.Load<GameObject>("Prefabs/Effects/ImpactEffects/IceRingExplosion"), position, Vector3.up, true); component.AddTimedBuff(Buffs.Slow80, 3f * (float)itemCount); damageReport.victim.TakeDamage(val); } if (itemCount2 > 0) { GameObject val2 = LegacyResourcesAPI.Load<GameObject>("Prefabs/Projectiles/FireTornado"); float resetInterval = val2.GetComponent<ProjectileOverlapAttack>().resetInterval; float lifetime = val2.GetComponent<ProjectileSimple>().lifetime; float num2 = 3f * (float)itemCount2; float damage2 = Util.OnHitProcDamage(damageInfo.damage, component.damage, num2) / lifetime * resetInterval; float speedOverride = 0f; Quaternion rotation = Quaternion.identity; Vector3 val3 = position - aimOrigin; val3.y = 0f; if (val3 != Vector3.zero) { speedOverride = -1f; rotation = Util.QuaternionSafeLookRotation(val3, Vector3.up); } ProjectileManager instance = ProjectileManager.instance; val4 = new FireProjectileInfo { damage = damage2, crit = damageInfo.crit, damageColorIndex = (DamageColorIndex)3, position = position, procChainMask = procChainMask, force = 0f, owner = damageInfo.attacker, projectilePrefab = val2, rotation = rotation }; ((FireProjectileInfo)(ref val4)).speedOverride = speedOverride; val4.target = null; instance.FireProjectile(val4); } } else if (component.HasBuff(Buffs.ElementalRingVoidReady)) { int itemCount3 = inventory.GetItemCount(Items.ElementalRingVoid); component.RemoveBuff(Buffs.ElementalRingVoidReady); for (int j = 1; (float)j <= 20f; j++) { component.AddTimedBuff(Buffs.ElementalRingVoidCooldown, (float)j); } ProcChainMask procChainMask2 = damageInfo.procChainMask; ((ProcChainMask)(ref procChainMask2)).AddProc((ProcType)12); if (itemCount3 > 0) { GameObject projectilePrefab = LegacyResourcesAPI.Load<GameObject>("Prefabs/Projectiles/ElementalRingVoidBlackHole"); float num3 = 1f * (float)itemCount3; float damage3 = Util.OnHitProcDamage(damageInfo.damage, component.damage, num3); ProjectileManager instance2 = ProjectileManager.instance; val4 = new FireProjectileInfo { damage = damage3, crit = damageInfo.crit, damageColorIndex = (DamageColorIndex)9, position = damageInfo.position, procChainMask = procChainMask2, force = 6000f, owner = damageInfo.attacker, projectilePrefab = projectilePrefab, rotation = Quaternion.identity, target = null }; instance2.FireProjectile(val4); } } } } public class OldCleansingPoolDropTable : PickupDropTable { public WeightedSelection<PickupIndex> weighted = new WeightedSelection<PickupIndex>(8); public override int GetPickupCount() { return weighted.Count; } public void GenerateWeightedSelection() { //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_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) weighted.Clear(); weighted.AddChoice(PickupCatalog.FindPickupIndex(Items.Pearl.itemIndex), 96f); weighted.AddChoice(PickupCatalog.FindPickupIndex(Items.ShinyPearl.itemIndex), 4f); } public override PickupIndex[] GenerateUniqueDropsPreReplacement(int maxDrops, Xoroshiro128Plus rng) { GenerateWeightedSelection(); return PickupDropTable.GenerateUniqueDropsFromWeightedSelection(maxDrops, rng, weighted); } public override PickupIndex GenerateDropPreReplacement(Xoroshiro128Plus rng) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) GenerateWeightedSelection(); Debug.Log((object)PickupDropTable.GenerateDropFromWeightedSelection(rng, weighted)); return PickupDropTable.GenerateDropFromWeightedSelection(rng, weighted); } } public class FuckWithCollisions : MonoBehaviour { private bool disableCollision = false; public KinematicCharacterMotor kcmotor; public void Start() { kcmotor = ((Component)this).GetComponent<KinematicCharacterMotor>(); } public void FixedUpdate() { //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_0053: 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) if (Object.op_Implicit((Object)(object)kcmotor)) { if (Random.Range(0f, 1f) < 9E-05f) { ((MonoBehaviour)this).StartCoroutine(ToggleCollision()); } if (disableCollision) { kcmotor.CollidableLayers = LayerMask.op_Implicit(LayerMask.NameToLayer("TriggerZone")); } else { kcmotor.CollidableLayers = LayerMask.op_Implicit(-20411191); } } } private IEnumerator ToggleCollision() { disableCollision = true; yield return (object)new WaitForSeconds(2f); disableCollision = false; } } }