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); }
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); } }
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>()); }