Esempio n. 1
0
        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());
        }
Esempio n. 2
0
 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);
         }
     }
 }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
 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);
     }
 }