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 Parry v1.3.1
Parry.dll
Decompiled 2 years agousing System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using EntityStates; using EntityStates.Merc; using Microsoft.CodeAnalysis; using On.RoR2; using R2API; using RoR2; using RoR2.Projectile; using RoR2.Skills; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.Networking; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("Parry")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+454e438b8916d1bf466f0c2d603128b67fb3887b")] [assembly: AssemblyProduct("Parry")] [assembly: AssemblyTitle("Parry")] [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 Parry { [BepInPlugin("com.Nuxlar.Parry", "Parry", "1.3.1")] public class Parry : BaseUnityPlugin { private AssetBundle parryAssets; private Sprite parryIcon; private Sprite parryBuffIcon; private Sprite parryActivatedBuffIcon; public static BuffDef parryBuffDef; public static BuffDef parryActivatedBuffDef; private GameObject merc = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Merc/MercBody.prefab").WaitForCompletion(); public static GameObject parryImpact = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Merc/ImpactMercFocusedAssault.prefab").WaitForCompletion(); public static GameObject parryFunImpact = Addressables.LoadAssetAsync<GameObject>((object)"RoR2/Base/Captain/CaptainAirstrikeAltImpact.prefab").WaitForCompletion(); public static SkillDef parrySkillDef = ScriptableObject.CreateInstance<SkillDef>(); private static BodyIndex mercBodyIndex; public static ConfigEntry<float> parryFunDamageMultiplier; public static ConfigEntry<float> parryFunRadius; public static ConfigEntry<bool> parryFunEnabled; private static ConfigFile ParryConfig { get; set; } public void Awake() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Expected O, but got Unknown //IL_00e8: 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_0127: Unknown result type (might be due to invalid IL or missing references) //IL_0131: Expected O, but got Unknown ParryConfig = new ConfigFile(Paths.ConfigPath + "\\com.Nuxlar.Parry.cfg", true); parryFunDamageMultiplier = ParryConfig.Bind<float>("General", "Fun Mode Damage Multiplier", 20f, "This number is multiplied by the base 500% damage, so 20 would be 10000% damage."); parryFunRadius = ParryConfig.Bind<float>("General", "Fun Mode Damage Radius", 26f, "How large the retalitory strike radius is in fun mode."); parryFunEnabled = ParryConfig.Bind<bool>("General", "Enable Fun Mode", false, "Parry but fun."); parryAssets = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location), "parrybundle.bundle")); parryIcon = parryAssets.LoadAsset<Sprite>("Assets/parryIconNux.png"); parryBuffIcon = parryAssets.LoadAsset<Sprite>("Assets/parryBuffIconNux.png"); parryActivatedBuffIcon = parryAssets.LoadAsset<Sprite>("Assets/parryActivatedBuffIconNux.png"); bool flag = default(bool); ContentAddition.AddEntityState<ParryHold>(ref flag); ContentAddition.AddEntityState<ParryStrike>(ref flag); CreateParryBuffs(); CreateParrySkill(); ParryStrike.parrySoundDef = CreateNetworkSoundEventDef("Play_nux_parry"); ParryStrike.evisSoundDef = CreateNetworkSoundEventDef("Play_merc_sword_impact"); HealthComponent.TakeDamage += new hook_TakeDamage(TakeDamageHook); RoR2Application.onLoad = (Action)Delegate.Combine(RoR2Application.onLoad, new Action(OnLoad)); } private void OnLoad() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) mercBodyIndex = BodyCatalog.FindBodyIndex("MercBody"); } private void TakeDamageHook(orig_TakeDamage orig, HealthComponent self, DamageInfo damageInfo) { //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) if (NetworkServer.active && self.body.bodyIndex == mercBodyIndex && self.body.HasBuff(parryBuffDef) && damageInfo.damage > 0f) { HandleParryBuffsServer(self.body); } else { orig.Invoke(self, damageInfo); } } public static void HandleParryBuffsServer(CharacterBody body) { if (body.HasBuff(parryBuffDef)) { body.RemoveBuff(parryBuffDef); } if (!body.HasBuff(parryActivatedBuffDef)) { body.AddBuff(parryActivatedBuffDef); } body.AddTimedBuff(Buffs.Immune, ParryStrike.invulnDuration); } private void CreateParryBuffs() { //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) parryBuffDef = ScriptableObject.CreateInstance<BuffDef>(); ((Object)parryBuffDef).name = "ParryBuffNux"; parryBuffDef.canStack = false; parryBuffDef.isCooldown = false; parryBuffDef.isDebuff = false; parryBuffDef.buffColor = Color.cyan; parryBuffDef.iconSprite = parryBuffIcon; ((Object)parryBuffDef).name = ((Object)parryBuffDef).name; parryActivatedBuffDef = ScriptableObject.CreateInstance<BuffDef>(); ((Object)parryActivatedBuffDef).name = "ParryActivatedBuffNux"; parryActivatedBuffDef.canStack = false; parryActivatedBuffDef.isCooldown = false; parryActivatedBuffDef.isDebuff = false; parryActivatedBuffDef.buffColor = Color.cyan; parryActivatedBuffDef.iconSprite = parryActivatedBuffIcon; ((Object)parryActivatedBuffDef).name = ((Object)parryActivatedBuffDef).name; ContentAddition.AddBuffDef(parryBuffDef); ContentAddition.AddBuffDef(parryActivatedBuffDef); } private void CreateParrySkill() { //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0165: 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_018f: Expected O, but got Unknown //IL_018f: Unknown result type (might be due to invalid IL or missing references) //IL_0190: Unknown result type (might be due to invalid IL or missing references) parrySkillDef.skillName = "FocusedStrike"; ((Object)parrySkillDef).name = "FocusedStrike"; parrySkillDef.skillNameToken = "Focused Strike"; parrySkillDef.skillDescriptionToken = "Ready your blade, release before an incoming strike to <style=cIsUtility>parry</style> enemy attacks for <style=cIsDamage>500%-1500% damage to all nearby enemies.</style>"; parrySkillDef.icon = parryIcon; parrySkillDef.activationState = new SerializableEntityStateType(typeof(ParryHold)); parrySkillDef.activationStateMachineName = "Body"; parrySkillDef.interruptPriority = (InterruptPriority)2; parrySkillDef.baseMaxStock = 1; parrySkillDef.baseRechargeInterval = 5f; parrySkillDef.rechargeStock = 1; parrySkillDef.requiredStock = 1; parrySkillDef.stockToConsume = 1; parrySkillDef.dontAllowPastMaxStocks = false; parrySkillDef.beginSkillCooldownOnSkillEnd = false; parrySkillDef.canceledFromSprinting = false; parrySkillDef.forceSprintDuringState = false; parrySkillDef.fullRestockOnAssign = true; parrySkillDef.resetCooldownTimerOnUse = false; parrySkillDef.isCombatSkill = true; parrySkillDef.mustKeyPress = false; parrySkillDef.cancelSprintingOnActivation = true; ContentAddition.AddSkillDef(parrySkillDef); SkillFamily skillFamily = merc.GetComponent<SkillLocator>().secondary.skillFamily; Array.Resize(ref skillFamily.variants, skillFamily.variants.Length + 1); Variant[] variants = skillFamily.variants; int num = skillFamily.variants.Length - 1; Variant val = new Variant { skillDef = parrySkillDef }; ((Variant)(ref val)).viewableNode = new Node(parrySkillDef.skillNameToken, false, (Node)null); variants[num] = val; } public static NetworkSoundEventDef CreateNetworkSoundEventDef(string eventName) { NetworkSoundEventDef obj = ScriptableObject.CreateInstance<NetworkSoundEventDef>(); obj.akId = AkSoundEngine.GetIDFromString(eventName); obj.eventName = eventName; ContentAddition.AddNetworkSoundEventDef(obj); return obj; } } public class ParryHold : BaseState { public static float baseMinDuration = 0f; public static string readySoundString = "Play_merc_sword_impact"; private bool playedSound; private float minDuration; public override void OnEnter() { ((BaseState)this).OnEnter(); playedSound = false; minDuration = baseMinDuration / base.attackSpeedStat; ((EntityState)this).PlayCrossfade("FullBody, Override", "GroundLight2", "GroundLight.playbackRate", 999f, 0.05f); } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); bool flag = ((EntityState)this).fixedAge >= minDuration; if (flag && !playedSound) { playedSound = true; Util.PlaySound(readySoundString, ((EntityState)this).gameObject); } if (((EntityState)this).isAuthority && (!Object.op_Implicit((Object)(object)((EntityState)this).inputBank) || !((EntityState)this).inputBank.skill2.down) && flag) { ((EntityState)this).outer.SetNextState((EntityState)(object)new ParryStrike()); } } } public class ParryStrike : BaseState { public static NetworkSoundEventDef parrySoundDef; public static NetworkSoundEventDef evisSoundDef; public static float totalDuration = 0.35f; public static float attackDelay = 0.3f; public static float invulnDuration = 1f; public static float blastAttackDamageCoefficient = 5f; public static float projectileGrazeRadius = 3f; private bool hasFiredServer; private bool hasFiredClient; public override void OnEnter() { ((BaseState)this).OnEnter(); if (NetworkServer.active) { CleanBuffsServer(); if (!((EntityState)this).characterBody.HasBuff(Parry.parryBuffDef)) { ((EntityState)this).characterBody.AddBuff(Parry.parryBuffDef); } } } public override void FixedUpdate() { ((EntityState)this).FixedUpdate(); if (((EntityState)this).fixedAge >= attackDelay) { if (!hasFiredClient) { DoAttackClient(); } if (NetworkServer.active && !hasFiredServer) { DoAttackServer(); } } else { CheckProjectileGrazeServer(); } if (((EntityState)this).isAuthority && ((EntityState)this).fixedAge >= totalDuration) { ((EntityState)this).outer.SetNextStateToMain(); } } public override void OnExit() { if (NetworkServer.active) { if (!hasFiredServer) { DoAttackServer(); } CleanBuffsServer(); } ((EntityState)this).PlayAnimation("FullBody, Override", "UppercutExit"); ((EntityState)this).OnExit(); } private void CleanBuffsServer() { if (NetworkServer.active) { if (((EntityState)this).characterBody.HasBuff(Parry.parryActivatedBuffDef)) { ((EntityState)this).characterBody.RemoveBuff(Parry.parryActivatedBuffDef); } if (((EntityState)this).characterBody.HasBuff(Parry.parryBuffDef)) { ((EntityState)this).characterBody.RemoveBuff(Parry.parryBuffDef); } } } private void DoAttackClient() { hasFiredClient = true; ((EntityState)this).PlayCrossfade("FullBody, Override", "Uppercut", "Uppercut.playbackRate", 1f, totalDuration - attackDelay); Util.PlaySound("Play_merc_m2_uppercut", ((EntityState)this).gameObject); } private void DoAttackServer() { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Unknown result type (might be due to invalid IL or missing references) //IL_01ef: Unknown result type (might be due to invalid IL or missing references) //IL_01f4: Unknown result type (might be due to invalid IL or missing references) //IL_01fa: Unknown result type (might be due to invalid IL or missing references) //IL_01ff: Unknown result type (might be due to invalid IL or missing references) //IL_0204: Unknown result type (might be due to invalid IL or missing references) //IL_0210: Unknown result type (might be due to invalid IL or missing references) //IL_021c: Unknown result type (might be due to invalid IL or missing references) //IL_0223: Unknown result type (might be due to invalid IL or missing references) //IL_0228: Unknown result type (might be due to invalid IL or missing references) //IL_022d: Unknown result type (might be due to invalid IL or missing references) //IL_023b: Unknown result type (might be due to invalid IL or missing references) //IL_0246: Unknown result type (might be due to invalid IL or missing references) //IL_024d: Unknown result type (might be due to invalid IL or missing references) //IL_0252: Unknown result type (might be due to invalid IL or missing references) //IL_0257: Unknown result type (might be due to invalid IL or missing references) //IL_026a: Unknown result type (might be due to invalid IL or missing references) //IL_026c: Unknown result type (might be due to invalid IL or missing references) //IL_0271: Unknown result type (might be due to invalid IL or missing references) //IL_0272: Unknown result type (might be due to invalid IL or missing references) //IL_0273: Unknown result type (might be due to invalid IL or missing references) //IL_0278: 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_027f: Unknown result type (might be due to invalid IL or missing references) //IL_0284: 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_0146: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Unknown result type (might be due to invalid IL or missing references) //IL_0151: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_0167: Unknown result type (might be due to invalid IL or missing references) //IL_0173: 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_0184: 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_019d: Unknown result type (might be due to invalid IL or missing references) //IL_01a4: Unknown result type (might be due to invalid IL or missing references) //IL_01a9: Unknown result type (might be due to invalid IL or missing references) //IL_01ae: Unknown result type (might be due to invalid IL or missing references) //IL_01ca: Unknown result type (might be due to invalid IL or missing references) //IL_01cc: Unknown result type (might be due to invalid IL or missing references) //IL_01d1: Unknown result type (might be due to invalid IL or missing references) //IL_01d2: Unknown result type (might be due to invalid IL or missing references) //IL_01d3: Unknown result type (might be due to invalid IL or missing references) //IL_01d8: Unknown result type (might be due to invalid IL or missing references) //IL_01dd: Unknown result type (might be due to invalid IL or missing references) //IL_01df: Unknown result type (might be due to invalid IL or missing references) //IL_01e4: Unknown result type (might be due to invalid IL or missing references) //IL_01e9: Unknown result type (might be due to invalid IL or missing references) //IL_028a: 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_00a2: 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_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_02a4: Unknown result type (might be due to invalid IL or missing references) //IL_02af: Unknown result type (might be due to invalid IL or missing references) if (!NetworkServer.active || !Object.op_Implicit((Object)(object)((EntityState)this).characterBody)) { return; } hasFiredServer = true; bool num = ((EntityState)this).characterBody.HasBuff(Parry.parryActivatedBuffDef); DamageType val = (DamageType)32; float num2 = blastAttackDamageCoefficient; float num3 = 13f; if (num) { if (Parry.parryFunEnabled.Value) { DeleteProjectilesServer(((EntityState)this).characterBody.radius + Parry.parryFunRadius.Value); num2 *= Parry.parryFunDamageMultiplier.Value; } else { DeleteProjectilesServer(((EntityState)this).characterBody.radius + 13f); num2 *= 3f; num3 = 24f; } val = (DamageType)(val | 0x800000); if (Object.op_Implicit((Object)(object)parrySoundDef)) { EffectManager.SimpleSoundEffect(parrySoundDef.index, ((EntityState)this).characterBody.corePosition, true); } } EffectManager.SimpleImpactEffect(Evis.hitEffectPrefab, ((EntityState)this).characterBody.corePosition, Vector3.one, true); EffectManager.SimpleImpactEffect(Evis.hitEffectPrefab, ((EntityState)this).characterBody.corePosition, Vector3.zero, true); EffectManager.SimpleImpactEffect(Evis.hitEffectPrefab, ((EntityState)this).characterBody.corePosition, Vector3.left, true); EffectManager.SimpleImpactEffect(Evis.hitEffectPrefab, ((EntityState)this).characterBody.corePosition, Vector3.right, true); Result val2 = ((!Parry.parryFunEnabled.Value) ? new BlastAttack { impactEffect = EffectCatalog.FindEffectIndexFromPrefab(Evis.hitEffectPrefab), attacker = ((EntityState)this).gameObject, inflictor = ((EntityState)this).gameObject, teamIndex = TeamComponent.GetObjectTeam(((EntityState)this).gameObject), baseDamage = base.damageStat * num2, baseForce = 250f, position = ((EntityState)this).characterBody.corePosition, radius = ((EntityState)this).characterBody.radius + num3, falloffModel = (FalloffModel)0, damageType = DamageTypeCombo.op_Implicit(val), attackerFiltering = (AttackerFiltering)2 }.Fire() : new BlastAttack { impactEffect = EffectCatalog.FindEffectIndexFromPrefab(Parry.parryFunImpact), attacker = ((EntityState)this).gameObject, inflictor = ((EntityState)this).gameObject, teamIndex = TeamComponent.GetObjectTeam(((EntityState)this).gameObject), baseDamage = base.damageStat * num2, baseForce = 10000f, position = ((EntityState)this).characterBody.corePosition, radius = ((EntityState)this).characterBody.radius + Parry.parryFunRadius.Value, falloffModel = (FalloffModel)0, damageType = DamageTypeCombo.op_Implicit(val), attackerFiltering = (AttackerFiltering)2 }.Fire()); if (val2.hitCount > 0 && Object.op_Implicit((Object)(object)evisSoundDef)) { EffectManager.SimpleSoundEffect(evisSoundDef.index, ((EntityState)this).characterBody.corePosition, true); } CleanBuffsServer(); } private void CheckProjectileGrazeServer() { //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) if (!NetworkServer.active || projectileGrazeRadius <= 0f || !Object.op_Implicit((Object)(object)((EntityState)this).characterBody) || !((EntityState)this).characterBody.HasBuff(Parry.parryBuffDef)) { return; } Collider[] array = Physics.OverlapSphere(((EntityState)this).characterBody.corePosition, projectileGrazeRadius + ((EntityState)this).characterBody.radius, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.projectile)).mask)); for (int i = 0; i < array.Length; i++) { ProjectileController componentInParent = ((Component)array[i]).GetComponentInParent<ProjectileController>(); if (Object.op_Implicit((Object)(object)componentInParent) && !componentInParent.cannotBeDeleted && (Object)(object)componentInParent.owner != (Object)(object)((EntityState)this).gameObject && (!Object.op_Implicit((Object)(object)componentInParent.teamFilter) || componentInParent.teamFilter.teamIndex != ((BaseState)this).GetTeam())) { 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) { Parry.HandleParryBuffsServer(((EntityState)this).characterBody); break; } } } } private void DeleteProjectilesServer(float radius) { //IL_000c: 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_007c: 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) List<ProjectileController> list = new List<ProjectileController>(); Collider[] array = Physics.OverlapSphere(((EntityState)this).characterBody.corePosition, radius, LayerMask.op_Implicit(((LayerIndex)(ref LayerIndex.projectile)).mask)); for (int i = 0; i < array.Length; i++) { ProjectileController componentInParent = ((Component)array[i]).GetComponentInParent<ProjectileController>(); if (Object.op_Implicit((Object)(object)componentInParent) && !componentInParent.cannotBeDeleted && (Object)(object)componentInParent.owner != (Object)(object)((EntityState)this).gameObject && (!Object.op_Implicit((Object)(object)componentInParent.teamFilter) || componentInParent.teamFilter.teamIndex != ((BaseState)this).GetTeam())) { 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.Contains(componentInParent)) { 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)) { EntityState.Destroy((Object)(object)gameObject); } } } } }