public override bool HasJobOnThing(Pawn pawn, Thing thing, bool forced = false) { if (pawn == null) { return(false); } if (thing.IsForbidden(pawn)) { return(false); } if (thing is Blueprint || thing is Frame) { return(false); } Building building = thing as Building; if (building == null) { return(false); } if (!pawn.CanReserve(thing, 1, -1, null, forced)) { return(false); } CompSteamDrill compDeepDrill = thing.TryGetComp <CompSteamDrill>(); CompSteamTrader compTrader = thing.TryGetComp <CompSteamTrader>(); return(base.HasJobOnThing(pawn, thing, forced) && compDeepDrill.CanDrillNow() && !thing.IsBurning()); }
public void SteamSprayerTick() { if (sprayTicksLeft > 0) { sprayTicksLeft--; CompSteam comp = parent.TryGetComp <CompSteam>(); CompSteamTrader trader = parent.TryGetComp <CompSteamTrader>(); if (Rand.Value < 0.6f && (trader == null || trader.SteamOn) && (comp != null && comp.SteamNet.CurrentStoredEnergy() >= PressureCutoff) && (parent.TryGetComp <CompFlickable>() == null || FlickUtility.WantsToBeOn(parent))) { MoteMaker.ThrowSmoke(parent.TrueCenter(), parent.Map, SmokeAmount); MoteMaker.ThrowAirPuffUp(parent.TrueCenter(), parent.Map); } if (sprayTicksLeft <= 0) { endSprayCallback?.Invoke(); ticksUntilSpray = Rand.RangeInclusive(MinTicksBetweenSprays, MaxTicksBetweenSprays); } } else { ticksUntilSpray--; if (ticksUntilSpray <= 0) { startSprayCallback?.Invoke(); sprayTicksLeft = Rand.RangeInclusive(MinSprayDuration, MaxSprayDuration); } } }
public override bool ShouldSkip(Pawn pawn) { List <Building> allBuildingsColonist = pawn.Map.listerBuildings.allBuildingsColonist; for (int i = 0; i < allBuildingsColonist.Count; i++) { if (allBuildingsColonist[i].def == ThingDef.Named("MrXuiryus_BrassDrill") || allBuildingsColonist[i].def == ThingDef.Named("MrXuiryus_AdvancedBrassDrill")) { CompSteamTrader comp = allBuildingsColonist[i].GetComp <CompSteamTrader>(); if (comp == null || comp.SteamOn) { return(false); } } } return(true); }
public static void DisconnectAllFromTransmitterAndSetWantConnect(CompSteam deadPc, Map map, SteamNetManager steamNetManager) { if (deadPc.connectChildren == null) { return; } for (int i = 0; i < deadPc.connectChildren.Count; i++) { CompSteam compSteam = deadPc.connectChildren[i]; compSteam.connectParent = null; CompSteamTrader compSteamTrader = compSteam as CompSteamTrader; if (compSteamTrader != null) { compSteamTrader.SteamOn = false; } steamNetManager.Notify_ConnectorWantsConnect(compSteam); } }