StartMicroFungusInfestation() public method

Start a micro fungus infestation.
public StartMicroFungusInfestation ( int infestationDuration ) : void
infestationDuration int
return void
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            Map map = (Map)parms.target;
            Building_AquacultureBasin aquacultureBasin = null;

            foreach (Building building in map.listerBuildings.AllBuildingsColonistOfDef(Util_FishIndustry.AquacultureBasinDef))
            {
                aquacultureBasin = building as Building_AquacultureBasin;
                int  infestationDuration = (int)(GenDate.TicksPerDay * this.def.durationDays.min * Rand.Range(0.8f, 1.2f));
                Room room = aquacultureBasin.InteractionCell.GetRoom(map);
                if ((room == null) ||
                    room.PsychologicallyOutdoors)
                {
                    // Maximum infestation duration.
                    infestationDuration = (int)(GenDate.TicksPerDay * this.def.durationDays.max * Rand.Range(0.8f, 1.2f));
                }
                else
                {
                    // Adjust infestation duration according to cleanliness.
                    float dirtyness = -room.GetStat(RoomStatDefOf.Cleanliness);
                    if (dirtyness > 0)
                    {
                        infestationDuration += (int)(GenDate.TicksPerDay * this.def.durationDays.min * dirtyness);
                    }
                }
                aquacultureBasin.StartMicroFungusInfestation(infestationDuration);
            }
            if (aquacultureBasin != null)
            {
                Find.LetterStack.ReceiveLetter("FishIndustry.LetterLabelMicroFungus".Translate(), "FishIndustry.MicroFungus".Translate(), LetterDefOf.NegativeEvent, aquacultureBasin);
            }
            return(true);
        }
Esempio n. 2
0
        public override bool TryExecute(IncidentParms parms)
        {
            Map map = (Map)parms.target;
            Building_AquacultureBasin aquacultureBasin = null;

            foreach (Building building in map.listerBuildings.AllBuildingsColonistOfDef(Util_FishIndustry.AquacultureBasinDef))
            {
                aquacultureBasin = building as Building_AquacultureBasin;
                int  infestationDuration = (int)(GenDate.TicksPerDay * this.def.durationDays.min * Rand.Range(0.8f, 1.2f));
                Room room = aquacultureBasin.InteractionCell.GetRoom(map);
                if ((room == null) ||
                    room.PsychologicallyOutdoors)
                {
                    // Maximum infestation duration.
                    infestationDuration = (int)(GenDate.TicksPerDay * this.def.durationDays.max * Rand.Range(0.8f, 1.2f));
                }
                else
                {
                    // Adjust infestation duration according to cleanliness.
                    float dirtyness = -room.GetStat(RoomStatDefOf.Cleanliness);
                    if (dirtyness > 0)
                    {
                        infestationDuration += (int)(GenDate.TicksPerDay * this.def.durationDays.min * dirtyness);
                    }
                }
                aquacultureBasin.StartMicroFungusInfestation(infestationDuration);
            }
            if (aquacultureBasin != null)
            {
                Find.LetterStack.ReceiveLetter("Micro fungus", "Some of your aquaculture basins have been infected by a strange aquatic fungus.\nIt seems to consume all the water's oxygen.\nLet's hope the fishes will survive this deprivation.", LetterType.BadNonUrgent, aquacultureBasin);
            }
            return(true);
        }
        public override bool TryExecute(IncidentParms parms)
        {
            Building_AquacultureBasin aquacultureBasin = null;

            foreach (Building building in Find.ListerBuildings.AllBuildingsColonistOfDef(Util_FishIndustry.AquacultureBasinDef))
            {
                aquacultureBasin = building as Building_AquacultureBasin;
                aquacultureBasin.StartMicroFungusInfestation((int)(60000f * Rand.Range(this.def.durationDays.min, this.def.durationDays.max)));
            }
            if (aquacultureBasin != null)
            {
                Find.LetterStack.ReceiveLetter("Micro fungus", "Some of your aquaculture basins have been infected by a strange aquatic fungus.\nIt seems to consume all the water's oxygen.\nLet's hope the fishes will survive this deprivation.", LetterType.BadNonUrgent, aquacultureBasin);
            }

            return(true);
        }