예제 #1
0
    private bool AiCaresAbout(BaseEntity entity)
    {
        if (entity == null)
        {
            return(false);
        }
        if (!entity.isServer)
        {
            return(false);
        }
        if (entity.EqualNetID(owner))
        {
            return(false);
        }
        if (entity.Health() <= 0f)
        {
            return(false);
        }
        if (!IsValidSenseType(entity))
        {
            return(false);
        }
        BaseCombatEntity baseCombatEntity = entity as BaseCombatEntity;
        BasePlayer       basePlayer       = entity as BasePlayer;

        if (ignoreSafeZonePlayers && basePlayer != null && basePlayer.InSafeZone())
        {
            return(false);
        }
        if (listenRange > 0f && baseCombatEntity != null && baseCombatEntity.TimeSinceLastNoise <= 1f && baseCombatEntity.CanLastNoiseBeHeard(owner.transform.position, listenRange))
        {
            return(true);
        }
        if (senseFriendlies && ownerSenses != null && ownerSenses.IsFriendly(entity))
        {
            return(true);
        }
        float num = float.PositiveInfinity;

        if (baseCombatEntity != null && AI.accuratevisiondistance)
        {
            num = Vector3.Distance(owner.transform.position, baseCombatEntity.transform.position);
            if (num > maxRange)
            {
                return(false);
            }
        }
        if (checkVision && !IsTargetInVision(entity))
        {
            if (!ignoreNonVisionSneakers)
            {
                return(false);
            }
            if (basePlayer != null && !basePlayer.IsNpc)
            {
                if (!AI.accuratevisiondistance)
                {
                    num = Vector3.Distance(owner.transform.position, basePlayer.transform.position);
                }
                if ((basePlayer.IsDucked() && num >= 4f) || num >= 15f)
                {
                    return(false);
                }
            }
        }
        if (hostileTargetsOnly && baseCombatEntity != null && !baseCombatEntity.IsHostile())
        {
            return(false);
        }
        if (checkLOS && ownerAttack != null)
        {
            bool flag = ownerAttack.CanSeeTarget(entity);
            Memory.SetLOS(entity, flag);
            if (!flag)
            {
                return(false);
            }
        }
        return(true);
    }
예제 #2
0
 public virtual bool IsEntityHostile(BaseCombatEntity ent)
 {
     return(ent.IsHostile());
 }