public static float GetWeightForPsionic(CombatAI cmdAI, Ship ship, Psionic psi) { float num = 0.0f; if (psi != null && ship != null && !psi.IsActive) { switch (psi.Type) { case SectionEnumerations.PsionicAbility.TKFist: case SectionEnumerations.PsionicAbility.AbaddonLaser: num = 50f; break; case SectionEnumerations.PsionicAbility.Hold: case SectionEnumerations.PsionicAbility.Repair: case SectionEnumerations.PsionicAbility.Fear: case SectionEnumerations.PsionicAbility.WildFire: case SectionEnumerations.PsionicAbility.Control: case SectionEnumerations.PsionicAbility.Mirage: case SectionEnumerations.PsionicAbility.FalseFriend: num = 10f; break; case SectionEnumerations.PsionicAbility.Crush: case SectionEnumerations.PsionicAbility.Reflector: case SectionEnumerations.PsionicAbility.Posses: case SectionEnumerations.PsionicAbility.LifeDrain: case SectionEnumerations.PsionicAbility.Invisibility: case SectionEnumerations.PsionicAbility.Movement: num = 15f; break; case SectionEnumerations.PsionicAbility.Inspiration: case SectionEnumerations.PsionicAbility.Block: bool flag1 = false; foreach (EnemyGroup enemyGroup in cmdAI.GetEnemyGroups()) { foreach (Ship ship1 in enemyGroup.m_Ships) { using (IEnumerator <Psionic> enumerator = ship1.Psionics.GetEnumerator()) { if (enumerator.MoveNext()) { Psionic current = enumerator.Current; flag1 = true; } } if (flag1) { break; } } if (flag1) { break; } } num = !flag1 ? 0.0f : 50f; break; case SectionEnumerations.PsionicAbility.Reveal: bool flag2 = false; foreach (EnemyGroup enemyGroup in cmdAI.GetEnemyGroups()) { foreach (Ship ship1 in enemyGroup.m_Ships) { if ((double)cmdAI.GetCloakedDetectionPercent(ship1) < 1.0) { flag2 = true; break; } } if (flag2) { break; } } num = !flag2 ? 0.0f : 50f; break; case SectionEnumerations.PsionicAbility.PsiDrain: if (ship.CurrentPsiPower < (int)((double)ship.MaxPsiPower * 0.899999976158142)) { num = 10f; if (ship.CurrentPsiPower < ship.MaxPsiPower / 2) { num += 20f; break; } break; } num = 0.0f; break; } } return(num); }