コード例 #1
0
        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);
        }