Some mods may be broken due to the recent Alloyed Collective update.
Decompiled source of SnapfreezeDefense v1.0.3
SnapfreezeDefense.dll
Decompiled 3 weeks agousing System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using DefenseMatrixManager; using R2API; using R2API.Utils; using RoR2; using RoR2.Projectile; using SnapfreezeDefense.Components; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; [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("SnapfreezeDefense")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+528b4dae83499648da463de2f702b91c733a1500")] [assembly: AssemblyProduct("SnapfreezeDefense")] [assembly: AssemblyTitle("SnapfreezeDefense")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace SnapfreezeDefense { [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("com.Moffein.SnapfreezeDefense", "SnapfreezeDefense", "1.0.3")] [NetworkCompatibility(/*Could not decode attribute arguments.*/)] public class SnapfreezeDefense : BaseUnityPlugin { public static GameObject modifiedIceWallPillarProjectile; public static GameObject modifiedIceWallWalkerProjectile; public void Awake() { BuildProjectile(); } private void BuildProjectile() { //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_003e: 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_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) modifiedIceWallPillarProjectile = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mage/MageIcewallPillarProjectile.prefab").WaitForCompletion(), "StandaloneRiskyModIceWallPillarProjectile", true); modifiedIceWallPillarProjectile.AddComponent<IceWallDefenseComponent>(); ContentAddition.AddProjectile(modifiedIceWallPillarProjectile); modifiedIceWallWalkerProjectile = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Mage/MageIcewallWalkerProjectile.prefab").WaitForCompletion(), "StandaloneRiskyModIceWallWalkerProjectile", true); ProjectileMageFirewallWalkerController component = modifiedIceWallWalkerProjectile.GetComponent<ProjectileMageFirewallWalkerController>(); if (Object.op_Implicit((Object)(object)component)) { component.firePillarPrefab = modifiedIceWallPillarProjectile; } ContentAddition.AddProjectile(modifiedIceWallWalkerProjectile); SetEntityStateField("EntityStates.Mage.Weapon.PrepWall", "projectilePrefab", (Object)(object)modifiedIceWallWalkerProjectile); GameObject val = PrefabAPI.InstantiateClone(Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Common/VFX/OmniImpactVFXFrozen.prefab").WaitForCompletion(), "StandaloneRiskyModIceWallDeletionEffect", false); EffectComponent component2 = val.GetComponent<EffectComponent>(); component2.soundName = "Play_captain_drone_zap"; ContentAddition.AddEffect(val); IceWallDefenseComponent.projectileDeletionEffectPrefab = val; } private 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; } } } namespace SnapfreezeDefense.Components { public class IceWallDefenseComponent : MonoBehaviour { public static GameObject projectileDeletionEffectPrefab; private GameObject matrixObject; private DefenseMatrixInfo defenseMatrixInfo; private BoxCollider collider; private TeamFilter tf; public void Start() { //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Invalid comparison between Unknown and I4 //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Expected O, but got Unknown //IL_0082: 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_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_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_0129: Expected O, but got Unknown if (Object.op_Implicit((Object)(object)matrixObject)) { return; } tf = ((Component)this).GetComponent<TeamFilter>(); if (Object.op_Implicit((Object)(object)tf) && (int)tf.teamIndex != -1 && Object.op_Implicit((Object)(object)((Component)this).transform)) { GameObject val = new GameObject { layer = LayerIndex.world.intVal }; BoxCollider val2 = val.AddComponent<BoxCollider>(); val2.size = new Vector3(2.5f, 2.5f, 7f); ((Collider)val2).enabled = false; val.transform.localPosition = ((Component)this).transform.localPosition; val.transform.localRotation = ((Component)this).transform.localRotation; val.transform.localScale = ((Component)this).transform.localScale; matrixObject = val; collider = matrixObject.GetComponent<BoxCollider>(); if (Object.op_Implicit((Object)(object)collider)) { defenseMatrixInfo = new DefenseMatrixInfo((Collider[])(object)new Collider[1] { (Collider)collider }, tf.teamIndex); DefenseMatrixManager.AddMatrix(defenseMatrixInfo); } } } public void FixedUpdate() { if (NetworkServer.active && Object.op_Implicit((Object)(object)tf) && Object.op_Implicit((Object)(object)collider)) { DeleteProjectile(); } } public void DeleteProjectile() { //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_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_002f: 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_009b: 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_0192: Unknown result type (might be due to invalid IL or missing references) //IL_0199: Unknown result type (might be due to invalid IL or missing references) //IL_019f: Unknown result type (might be due to invalid IL or missing references) List<ProjectileController> list = new List<ProjectileController>(); Vector3 size = collider.size; Collider[] array = Physics.OverlapBox(((Component)collider).transform.position, size, ((Component)collider).transform.rotation, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.projectile)).mask)); Collider[] array2 = array; foreach (Collider val in array2) { ProjectileController componentInParent = ((Component)val).GetComponentInParent<ProjectileController>(); if (Object.op_Implicit((Object)(object)componentInParent) && !componentInParent.cannotBeDeleted && (!Object.op_Implicit((Object)(object)componentInParent.teamFilter) || componentInParent.teamFilter.teamIndex != tf.teamIndex)) { bool flag = false; ProjectileSimple component = ((Component)componentInParent).gameObject.GetComponent<ProjectileSimple>(); ProjectileCharacterController component2 = ((Component)componentInParent).gameObject.GetComponent<ProjectileCharacterController>(); if ((!Object.op_Implicit((Object)(object)component) || (Object.op_Implicit((Object)(object)component) && component.desiredForwardSpeed == 0f)) && !Object.op_Implicit((Object)(object)component2)) { flag = true; } if (!flag) { list.Add(componentInParent); } } } int count = list.Count; for (int j = 0; j < count; j++) { GameObject gameObject = ((Component)list[j]).gameObject; if (Object.op_Implicit((Object)(object)gameObject)) { if (Object.op_Implicit((Object)(object)gameObject.transform) && Object.op_Implicit((Object)(object)projectileDeletionEffectPrefab)) { EffectManager.SimpleEffect(projectileDeletionEffectPrefab, gameObject.transform.position, default(Quaternion), true); } Object.Destroy((Object)(object)gameObject); } } } public void OnDestroy() { if (defenseMatrixInfo != null) { DefenseMatrixManager.RemoveMatrix(defenseMatrixInfo); } if (Object.op_Implicit((Object)(object)matrixObject)) { Object.Destroy((Object)(object)matrixObject); } } } }