public static void Postfix(AggressiveWhenSeeTarget __instance, ref GameObject __result)
        {
            int maxSearchRings = __instance.maxSearchRings;

            // Not the exploding fish, those are actually more dangerous hiding in ambush
            if (CraftData.GetTechType(__instance.gameObject) == TechType.Crash)
            {
                DeathRun.crashFishSemaphore = true;
            }
            else if (Config.DEATHRUN.Equals(DeathRun.config.creatureAggression) || Config.EXORBITANT.Equals(DeathRun.config.creatureAggression))
            {
                if (DayNightCycle.main.timePassedAsFloat >= DeathRun.FULL_AGGRESSION)
                {
                    maxSearchRings *= 3; //BR// Triple aggression search after 40 minutes
                }
                else if (DayNightCycle.main.timePassedAsFloat >= DeathRun.MORE_AGGRESSION)
                {
                    maxSearchRings *= 2; //BR// Double aggression search after 20 minutes
                }
            }
            else if (Config.HARD.Equals(DeathRun.config.creatureAggression))
            {
                if (DayNightCycle.main.timePassedAsFloat > DeathRun.MORE_AGGRESSION)
                {
                    maxSearchRings += 1; //BR// One extra aggression ring after 20 minutes
                }
            }

            if (Ocean.main.GetDepthOf(Player.main.gameObject) <= 5)
            {
                if (maxSearchRings > __instance.maxSearchRings + 1)
                {
                    maxSearchRings = __instance.maxSearchRings + 1;
                }
            }

            IEcoTarget ecoTarget = EcoRegionManager.main.FindNearestTarget(__instance.targetType, __instance.transform.position, __instance.isTargetValidFilter, maxSearchRings);

            if (ecoTarget == null)
            {
                __result = null;
            }
            else
            {
                __result = ecoTarget.GetGameObject();
            }

            DeathRun.crashFishSemaphore = false;
        }
        public static void Postfix(GameObject target, AggressiveWhenSeeTarget __instance, ref bool __result)
        {
            if (target == null)
            {
                __result = false;
                return;
            }
            if (target == __instance.creature.friend)
            {
                __result = false;
                return;
            }
            if (target == Player.main.gameObject && !Player.main.CanBeAttacked())
            {
                __result = false;
                return;
            }
            if (__instance.ignoreSameKind && CraftData.GetTechType(target) == __instance.myTechType)
            {
                __result = false;
                return;
            }
            if (__instance.targetShouldBeInfected)
            {
                InfectedMixin component = target.GetComponent <InfectedMixin>();
                if (component == null || component.GetInfectedAmount() < 0.33f)
                {
                    __result = false;
                    return;
                }
            }

            float dist = Vector3.Distance(target.transform.position, __instance.transform.position);

            if (dist > __instance.maxRangeScalar)
            {
                if (((target != Player.main.gameObject) && !target.GetComponent <Vehicle>()) || (dist > __instance.maxRangeScalar * 4))
                {
                    __result = false;
                    return;
                }

                if (target == Player.main.gameObject)
                {
                    if (Player.main.precursorOutOfWater || PrecursorMoonPoolTrigger.inMoonpool)
                    {
                        __result = false;
                        return;
                    }
                }

                if (target.GetComponent <Vehicle>() != null)
                {
                    if ((target.GetComponent <Vehicle>() != Player.main.currentMountedVehicle) || target.GetComponent <Vehicle>().precursorOutOfWater || PrecursorMoonPoolTrigger.inMoonpool)
                    {
                        __result = false;
                        return;
                    }
                }
            }
            if (!Mathf.Approximately(__instance.minimumVelocity, 0f))
            {
                Rigidbody componentInChildren = target.GetComponentInChildren <Rigidbody>();
                if (componentInChildren != null && componentInChildren.velocity.magnitude <= __instance.minimumVelocity)
                {
                    __result = false;
                    return;
                }
            }

            if ((((target != Player.main.gameObject) || Player.main.IsInside() || Player.main.precursorOutOfWater || PrecursorMoonPoolTrigger.inMoonpool) && (!target.GetComponent <Vehicle>() || (target.GetComponent <Vehicle>() != Player.main.currentMountedVehicle) || target.GetComponent <Vehicle>().precursorOutOfWater)) || // Must be player or vehicle
                (Ocean.main.GetDepthOf(target) <= 5) ||                                                                                                                                                                                                                                                                              // Keeps reapers from eating us up on land
                (!Config.EXORBITANT.Equals(DeathRun.config.creatureAggression) && !Config.DEATHRUN.Equals(DeathRun.config.creatureAggression)) ||                                                                                                                                                                                    // Only on maximum aggression mode
                (DayNightCycle.main.timePassedAsFloat < DeathRun.MORE_AGGRESSION) ||                                                                                                                                                                                                                                                 // Not at very beginning of game
                (CraftData.GetTechType(__instance.gameObject) == TechType.Crash))                                                                                                                                                                                                                                                    // Not the explody fish (more fun from ambush!)
            {
                __result = __instance.creature.GetCanSeeObject(target);
            }
            else
            {
                if (!Config.EXORBITANT.Equals(DeathRun.config.creatureAggression))
                {
                    __result = true; //BR// Can definitely see player "even through terrain"
                }
                else
                {
                    //BR// For DeathRun setting, we don't check "field of view", only that line-of-sight doesn't pass through terrain.
                    __result = !Physics.Linecast(__instance.transform.position, target.transform.position, Voxeland.GetTerrainLayerMask());
                }
            }
        }
 public static bool Prefix(GameObject target, AggressiveWhenSeeTarget __instance)
 {
     return(false);
 }
 public static bool Prefix(AggressiveWhenSeeTarget __instance)
 {
     return(false);
 }