Exemplo n.º 1
0
        // Token: 0x0600000C RID: 12 RVA: 0x000028CC File Offset: 0x00000ACC
        internal static bool TerrainEffects(TerrainDef terrain, IntVec3 terrainPosition, Pawn pawn)
        {
            if (ProximityGet.GetTProxRoomOnly(terrain))
            {
                var room  = terrainPosition.GetRoomOrAdjacent(pawn.Map);
                var room2 = pawn.Position.GetRoomOrAdjacent(pawn.Map);
                if (room != null && room2 != null && room != room2)
                {
                    return(false);
                }
            }

            if (pawn.IsColonist && !ProximityGet.GetTProxColonist(terrain))
            {
                return(false);
            }

            if (pawn.Drafted && !ProximityGet.GetTProxDrafted(terrain))
            {
                return(false);
            }

            if (ProximityGet.GetTProxComposMentis(terrain))
            {
                if (pawn.Downed || pawn.InMentalState || pawn.IsBurning() ||
                    HealthAIUtility.ShouldSeekMedicalRest(pawn))
                {
                    return(false);
                }

                if (!pawn.Awake())
                {
                    return(false);
                }
            }

            if (pawn.RaceProps.IsMechanoid && !ProximityGet.GetTProxMechanoid(terrain))
            {
                return(false);
            }

            if (pawn.RaceProps.FleshType.defName == "Insectoid" && !ProximityGet.GetTProxInsectoid(terrain))
            {
                return(false);
            }

            if (pawn.AnimalOrWildMan() && !ProximityGet.GetTProxAnimal(terrain))
            {
                return(false);
            }

            if (pawn.IsPrisoner && !ProximityGet.GetTProxPrisoner(terrain))
            {
                return(false);
            }

            var faction = pawn.Faction;
            var map     = pawn.Map;

            return((faction == map?.ParentFaction || GetTerrainEffectsOutsider(terrain, pawn)) &&
                   (ProximityGet.GetTProxEquipped(terrain) == null || GetTerrainPawnHasEquipment(terrain, pawn)));
        }