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 SnapfreezeDefense v1.0.3
SnapfreezeDefense.dll
Decompiled 6 months 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); } } } }