コード例 #1
0
        public static bool GrowthSeasonNow(IntVec3 c, Map map, bool forSowing = false)
        {
            Room roomOrAdjacent = c.GetRoomOrAdjacent(map, RegionType.Set_All);
            bool result;

            if (roomOrAdjacent == null)
            {
                result = false;
            }
            else if (roomOrAdjacent.UsesOutdoorTemperature)
            {
                if (forSowing)
                {
                    result = map.weatherManager.growthSeasonMemory.GrowthSeasonOutdoorsNowForSowing;
                }
                else
                {
                    result = map.weatherManager.growthSeasonMemory.GrowthSeasonOutdoorsNow;
                }
            }
            else
            {
                float temperature = c.GetTemperature(map);
                result = (temperature > 0f && temperature < 58f);
            }
            return(result);
        }
コード例 #2
0
        public static TaleData_Surroundings GenerateFrom(IntVec3 c, Map map)
        {
            TaleData_Surroundings taleData_Surroundings = new TaleData_Surroundings();

            taleData_Surroundings.tile = map.Tile;
            Room roomOrAdjacent = c.GetRoomOrAdjacent(map, RegionType.Set_All);

            if (roomOrAdjacent != null)
            {
                if (roomOrAdjacent.PsychologicallyOutdoors)
                {
                    taleData_Surroundings.weather = map.weatherManager.CurWeatherPerceived;
                }
                taleData_Surroundings.roomRole           = roomOrAdjacent.Role;
                taleData_Surroundings.roomImpressiveness = roomOrAdjacent.GetStat(RoomStatDefOf.Impressiveness);
                taleData_Surroundings.roomBeauty         = roomOrAdjacent.GetStat(RoomStatDefOf.Beauty);
                taleData_Surroundings.roomCleanliness    = roomOrAdjacent.GetStat(RoomStatDefOf.Cleanliness);
            }
            if (!GenTemperature.TryGetTemperatureForCell(c, map, out taleData_Surroundings.temperature))
            {
                taleData_Surroundings.temperature = 21f;
            }
            taleData_Surroundings.snowDepth = map.snowGrid.GetDepth(c);
            return(taleData_Surroundings);
        }
コード例 #3
0
        public static bool IsInPrisonCell(ref bool __result, IntVec3 c, Map map)
        {
            Room roomOrAdjacent = c.GetRoomOrAdjacent(map);

            if (roomOrAdjacent != null)
            {
                __result = roomOrAdjacent.isPrisonCell;
                return(false);
            }
            //TODO fix check for null room earlier
            //Log.Error("Checking prison cell status of " + c + " which is not in or adjacent to a room.");
            __result = false;
            return(false);
        }
コード例 #4
0
        public static bool GrowthSeasonNow(IntVec3 c, Map map)
        {
            Room roomOrAdjacent = c.GetRoomOrAdjacent(map, RegionType.Set_All);

            if (roomOrAdjacent == null)
            {
                return(false);
            }
            if (roomOrAdjacent.UsesOutdoorTemperature)
            {
                return(map.weatherManager.growthSeasonMemory.GrowthSeasonOutdoorsNow);
            }
            float temperature = c.GetTemperature(map);

            return(temperature > 0.0 && temperature < 58.0);
        }
コード例 #5
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)));
        }