private Vector2 GetDashDirection()
        {
            float[] directions = GetDirections();
            Vector2 lhs        = Vector2.zero;
            Vector2 unitCenter = m_aiActor.specRigidbody.GetUnitCenter(ColliderType.Ground);

            for (int i = 0; i < directions.Length; i++)
            {
                bool          flag   = false;
                bool          flag2  = false;
                Vector2       vector = BraveMathCollege.DegreesToVector(directions[i], 1f);
                RaycastResult raycastResult;
                bool          flag3 = PhysicsEngine.Instance.Raycast(unitCenter, vector, dashDistance, out raycastResult, true, true, int.MaxValue, new CollisionLayer?(CollisionLayer.EnemyCollider), false, null, m_aiActor.specRigidbody);
                RaycastResult.Pool.Free(ref raycastResult);
                float num = 0.25f;
                while (num <= dashDistance && !flag && !flag3)
                {
                    Vector2 vector2 = unitCenter + num * vector;
                    if (!GameManager.Instance.Dungeon.CellExists(vector2))
                    {
                        flag = true;
                    }
                    else if (GameManager.Instance.Dungeon.ShouldReallyFall(vector2))
                    {
                        flag = true;
                    }
                    num += 0.25f;
                }
                num = 0.25f;
                while (num <= dashDistance && !flag && !flag2 && !flag3)
                {
                    IntVector2 intVector = (unitCenter + num * vector).ToIntVector2(VectorConversions.Floor);
                    if (!GameManager.Instance.Dungeon.CellExists(intVector))
                    {
                        flag2 = true;
                    }
                    else if (GameManager.Instance.Dungeon.data.CheckInBoundsAndValid(intVector) && GameManager.Instance.Dungeon.data[intVector].isExitCell)
                    {
                        flag2 = true;
                    }
                    num += 0.25f;
                }
                if (avoidTarget && m_behaviorSpeculator.TargetRigidbody && !flag && !flag2 && !flag3)
                {
                    Vector2 unitCenter2 = m_aiActor.specRigidbody.GetUnitCenter(ColliderType.HitBox);
                    Vector2 vector3     = m_behaviorSpeculator.TargetRigidbody.GetUnitCenter(ColliderType.HitBox) - unitCenter2;
                    float   num2        = dashDistance + 2f;
                    if (vector3.magnitude < num2 && BraveMathCollege.AbsAngleBetween(vector3.ToAngle(), directions[i]) < 80f)
                    {
                        flag3 = true;
                    }
                    if (GameManager.Instance.CurrentGameType == GameManager.GameType.COOP_2_PLAYER && !flag3)
                    {
                        PlayerController playerController = m_aiActor.PlayerTarget as PlayerController;
                        if (playerController)
                        {
                            PlayerController otherPlayer = GameManager.Instance.GetOtherPlayer(playerController);
                            if (otherPlayer && otherPlayer.healthHaver.IsAlive)
                            {
                                vector3 = otherPlayer.specRigidbody.GetUnitCenter(ColliderType.HitBox) - unitCenter2;
                                if (vector3.magnitude < num2 && BraveMathCollege.AbsAngleBetween(vector3.ToAngle(), directions[i]) < 80f)
                                {
                                    flag3 = true;
                                }
                            }
                        }
                    }
                }
                if (!flag3 && !flag && !flag2)
                {
                    lhs = vector; break;
                }
            }
            if (lhs != Vector2.zero)
            {
                return(lhs.normalized);
            }
            if (directions.Length > 0)
            {
                return(BraveMathCollege.DegreesToVector(directions[directions.Length - 1], 1f));
            }
            float num3 = UnityEngine.Random.Range(0f, 360f);

            if (quantizeDirection > 0f)
            {
                BraveMathCollege.QuantizeFloat(num3, quantizeDirection);
            }
            return(BraveMathCollege.DegreesToVector(num3, 1f));
        }
        private void Update()
        {
            RoomHandler    currentRoom   = GameManager.Instance.PrimaryPlayer.CurrentRoom;
            List <AIActor> activeEnemies = currentRoom.GetActiveEnemies(RoomHandler.ActiveEnemyType.All);
            Vector2        vector        = Vector2.zero;
            Vector2        b             = Vector2.zero;
            float          num;

            if (GameManager.Instance.PrimaryPlayer.CurrentGun && !GameManager.Instance.PrimaryPlayer.IsGhost)
            {
                num = GameManager.Instance.PrimaryPlayer.CurrentGun.CurrentAngle;
            }
            else
            {
                num = BraveMathCollege.Atan2Degrees(GameManager.Instance.PrimaryPlayer.unadjustedAimPoint.XY());
            }
            vector = GameManager.Instance.PrimaryPlayer.CenterPosition;
            float a;

            if (GameManager.Instance.CurrentGameType == GameManager.GameType.COOP_2_PLAYER)
            {
                if (GameManager.Instance.SecondaryPlayer.CurrentGun && !GameManager.Instance.SecondaryPlayer.IsGhost)
                {
                    a = GameManager.Instance.SecondaryPlayer.CurrentGun.CurrentAngle;
                }
                else
                {
                    a = BraveMathCollege.Atan2Degrees(GameManager.Instance.SecondaryPlayer.unadjustedAimPoint.XY());
                }
                b = GameManager.Instance.SecondaryPlayer.CenterPosition;
            }
            else
            {
                b = vector;
                a = num;
            }
            for (int i = 0; i < activeEnemies.Count; i++)
            {
                AIActor aiactor = activeEnemies[i];
                if (aiactor && aiactor.healthHaver && aiactor.IsNormalEnemy && !aiactor.healthHaver.IsBoss && !aiactor.healthHaver.IsDead)
                {
                    Vector2 centerPosition = aiactor.CenterPosition;
                    float   b2             = BraveMathCollege.Atan2Degrees(centerPosition - vector);
                    float   b3             = BraveMathCollege.Atan2Degrees(centerPosition - b);
                    bool    flag           = BraveMathCollege.AbsAngleBetween(num, b2) < ConeAngle || BraveMathCollege.AbsAngleBetween(a, b3) < ConeAngle;
                    if (flag)
                    {
                        if (aiactor.behaviorSpeculator)
                        {
                            aiactor.behaviorSpeculator.Stun(0.25f, false);
                        }
                        if (aiactor.IsBlackPhantom)
                        {
                            aiactor.UnbecomeBlackPhantom();
                        }
                        aiactor.RegisterOverrideColor(new Color(0.4f, 0.4f, 0.33f, 1), "Turn to Stone");
                    }
                    else if (!aiactor.IsBlackPhantom)
                    {
                        aiactor.DeregisterOverrideColor("Turn to Stone");
                        aiactor.BecomeBlackPhantom();
                    }
                }
            }
        }