protected override bool TryExecuteWorker(IncidentParms parms)
 {
     if (!ShortCircuitUtility.GetShortCircuitablePowerConduits((Map)parms.target).TryRandomElement(out var result))
     {
         return(false);
     }
     ShortCircuitUtility.DoShortCircuit(result);
     return(true);
 }
        public static void DoShortCircuit(Building culprit)
        {
            PowerNet powerNet = culprit.PowerComp.PowerNet;
            Map      map      = culprit.Map;
            float    num      = 0f;
            float    num2     = 0f;
            bool     flag     = false;

            if (powerNet.batteryComps.Any((CompPowerBattery x) => x.StoredEnergy > 20f))
            {
                ShortCircuitUtility.DrainBatteriesAndCauseExplosion(powerNet, culprit, out num, out num2);
            }
            else
            {
                flag = ShortCircuitUtility.TryStartFireNear(culprit);
            }
            string value;

            if (culprit.def == ThingDefOf.PowerConduit)
            {
                value = "AnElectricalConduit".Translate();
            }
            else
            {
                value = Find.ActiveLanguageWorker.WithIndefiniteArticlePostProcessed(culprit.Label, false, false);
            }
            StringBuilder stringBuilder = new StringBuilder();

            if (flag)
            {
                stringBuilder.Append("ShortCircuitStartedFire".Translate(value));
            }
            else
            {
                stringBuilder.Append("ShortCircuit".Translate(value));
            }
            if (num > 0f)
            {
                stringBuilder.AppendLine();
                stringBuilder.AppendLine();
                stringBuilder.Append("ShortCircuitDischargedEnergy".Translate(num.ToString("F0")));
            }
            if (num2 > 5f)
            {
                stringBuilder.AppendLine();
                stringBuilder.AppendLine();
                stringBuilder.Append("ShortCircuitWasLarge".Translate());
            }
            if (num2 > 8f)
            {
                stringBuilder.AppendLine();
                stringBuilder.AppendLine();
                stringBuilder.Append("ShortCircuitWasHuge".Translate());
            }
            Find.LetterStack.ReceiveLetter("LetterLabelShortCircuit".Translate(), stringBuilder.ToString(), LetterDefOf.NegativeEvent, new TargetInfo(culprit.Position, map, false), null, null);
        }
Beispiel #3
0
 private void RollForRainFire()
 {
     if (Rand.Chance(0.2f * (float)map.listerBuildings.allBuildingsColonistElecFire.Count * map.weatherManager.RainRate))
     {
         Building building = map.listerBuildings.allBuildingsColonistElecFire.RandomElement();
         if (!map.roofGrid.Roofed(building.Position))
         {
             ShortCircuitUtility.TryShortCircuitInRain(building);
         }
     }
 }
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            Map map = (Map)parms.target;
            IEnumerable <Building> shortCircuitablePowerConduits = ShortCircuitUtility.GetShortCircuitablePowerConduits(map);

            if (!shortCircuitablePowerConduits.TryRandomElement(out Building result))
            {
                return(false);
            }
            ShortCircuitUtility.DoShortCircuit(result);
            return(true);
        }
        private void RollForRainFire()
        {
            float chance = (float)(0.20000000298023224 * (float)this.map.listerBuildings.allBuildingsColonistElecFire.Count * this.map.weatherManager.RainRate);

            if (Rand.Chance(chance))
            {
                Building building = this.map.listerBuildings.allBuildingsColonistElecFire.RandomElement();
                if (!this.map.roofGrid.Roofed(building.Position))
                {
                    ShortCircuitUtility.TryShortCircuitInRain(building);
                }
            }
        }
        private void RollForRainFire()
        {
            float chance = 0.2f * (float)this.map.listerBuildings.allBuildingsColonistElecFire.Count * this.map.weatherManager.RainRate;

            if (!Rand.Chance(chance))
            {
                return;
            }
            Building building = this.map.listerBuildings.allBuildingsColonistElecFire.RandomElement <Building>();

            if (!this.map.roofGrid.Roofed(building.Position))
            {
                ShortCircuitUtility.TryShortCircuitInRain(building);
            }
        }
Beispiel #7
0
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            Map map = (Map)parms.target;
            IEnumerable <Building> shortCircuitablePowerConduits = ShortCircuitUtility.GetShortCircuitablePowerConduits(map);
            Building culprit;
            bool     result;

            if (!shortCircuitablePowerConduits.TryRandomElement(out culprit))
            {
                result = false;
            }
            else
            {
                ShortCircuitUtility.DoShortCircuit(culprit);
                result = true;
            }
            return(result);
        }
        protected override bool CanFireNowSub(IncidentParms parms)
        {
            Map map = (Map)parms.target;

            return(ShortCircuitUtility.GetShortCircuitablePowerConduits(map).Any());
        }
        protected override bool CanFireNowSub(IIncidentTarget target)
        {
            Map map = (Map)target;

            return(ShortCircuitUtility.GetShortCircuitablePowerConduits(map).Any <Building>());
        }