예제 #1
0
        // Token: 0x06000053 RID: 83 RVA: 0x00004800 File Offset: 0x00002A00
        public void JPIgnite(IntVec3 cell, Map map)
        {
            var pilot = GetThingForGraphic();

            if (pilot == null)
            {
                return;
            }

            var JP = JPUtility.GetWornJP(pilot);

            if (JP == null)
            {
                return;
            }

            var jetPackApparel = JP as JetPackApparel;
            var fuel           = jetPackApparel?.JPFuelItem;

            if (fuel == null)
            {
                return;
            }

            var factor = JPUtility.GetIgnitionFactor(fuel);
            var Rnd    = Rand.Range(1, 100);

            if (Rnd < factor)
            {
                FireUtility.TryStartFireIn(cell, map, Math.Max(10f, factor - Rnd) / 100f);
            }
        }
예제 #2
0
        // Token: 0x0600004C RID: 76 RVA: 0x0000435C File Offset: 0x0000255C
        internal void JPApplyCooldown(Thing pilot, int cd)
        {
            Apparel JP = JPUtility.GetWornJP(pilot);

            if (JP != null && JP is JetPackApparel)
            {
                (JP as JetPackApparel).JPCooldownTicks = Math.Max(0, 60 * cd);
            }
        }
예제 #3
0
        // Token: 0x0600004C RID: 76 RVA: 0x0000435C File Offset: 0x0000255C
        internal void JPApplyCooldown(Thing pilot, int cd)
        {
            var JP = JPUtility.GetWornJP(pilot);

            if (JP is JetPackApparel apparel)
            {
                apparel.JPCooldownTicks = Math.Max(0, 60 * cd);
            }
        }
예제 #4
0
 // Token: 0x0600004E RID: 78 RVA: 0x000043C4 File Offset: 0x000025C4
 internal void CheckDrafting(Thing pilot)
 {
     if (pilot != null && pilot is Pawn)
     {
         Apparel JP = JPUtility.GetWornJP(pilot);
         if (JP != null && (JP as JetPackApparel).JPPilotIsDrafted)
         {
             (JP as JetPackApparel).JPPilotIsDrafted = false;
             (pilot as Pawn).drafter.Drafted         = true;
         }
     }
 }
예제 #5
0
        // Token: 0x0600003E RID: 62 RVA: 0x000038C0 File Offset: 0x00001AC0
        protected override Job TryGiveJob(Pawn pawn)
        {
            if (!Settings.DoAutoRefuel || !pawn.IsColonistPlayerControlled)
            {
                return(null);
            }

            if (pawn.InMentalState)
            {
                return(null);
            }

            if (pawn.Map == null)
            {
                return(null);
            }

            var jobdef = DefDatabase <JobDef> .GetNamed("JPRefuel");

            if (pawn.CurJobDef == jobdef)
            {
                return(null);
            }

            var JP = JPUtility.GetWornJP(pawn);

            if (JP == null)
            {
                return(null);
            }

            var FuelMax  = ((JetPackApparel)JP).JPFuelMax;
            var Fuel     = (JP as JetPackApparel).JPFuelAmount;
            var FuelItem = (JP as JetPackApparel).JPFuelItem;

            if (FuelMax <= 0 || Fuel >= FuelMax || Fuel * 100 / FuelMax > Settings.RefuelPCT)
            {
                return(null);
            }

            FindBestRefuel(pawn, FuelItem, FuelMax, Fuel, out var targ);
            if (targ != null)
            {
                return(new Job(jobdef, targ));
            }

            return(null);
        }
예제 #6
0
        // Token: 0x0600004E RID: 78 RVA: 0x000043C4 File Offset: 0x000025C4
        internal void CheckDrafting(Thing pilot)
        {
            if (pilot is not Pawn)
            {
                return;
            }

            var JP = JPUtility.GetWornJP(pilot);

            if (JP == null || !((JetPackApparel)JP).JPPilotIsDrafted)
            {
                return;
            }

            (JP as JetPackApparel).JPPilotIsDrafted = false;
            ((Pawn)pilot).drafter.Drafted           = true;
        }
예제 #7
0
        // Token: 0x0600003E RID: 62 RVA: 0x000038C0 File Offset: 0x00001AC0
        protected override Job TryGiveJob(Pawn pawn)
        {
            if (!Settings.DoAutoRefuel || !pawn.IsColonistPlayerControlled)
            {
                return(null);
            }
            if (pawn.InMentalState)
            {
                return(null);
            }
            if ((pawn?.Map) == null)
            {
                return(null);
            }
            JobDef jobdef = DefDatabase <JobDef> .GetNamed("JPRefuel", true);

            if ((pawn?.CurJobDef) == jobdef)
            {
                return(null);
            }
            Apparel JP = JPUtility.GetWornJP(pawn);

            if (JP != null)
            {
                int      FuelMax  = (JP as JetPackApparel).JPFuelMax;
                int      Fuel     = (JP as JetPackApparel).JPFuelAmount;
                ThingDef FuelItem = (JP as JetPackApparel).JPFuelItem;
                if (FuelMax > 0 && Fuel < FuelMax && Fuel * 100 / FuelMax <= Settings.RefuelPCT)
                {
                    this.FindBestRefuel(pawn, FuelItem, FuelMax, Fuel, out Thing targ);
                    if (targ != null)
                    {
                        return(new Job(jobdef, targ));
                    }
                }
            }
            return(null);
        }
예제 #8
0
        // Token: 0x06000053 RID: 83 RVA: 0x00004800 File Offset: 0x00002A00
        public void JPIgnite(IntVec3 cell, Map map)
        {
            Thing pilot = this.GetThingForGraphic();

            if (pilot != null)
            {
                Apparel JP = JPUtility.GetWornJP(pilot);
                if (JP != null)
                {
                    JetPackApparel jetPackApparel = JP as JetPackApparel;
                    ThingDef       fuel           = jetPackApparel?.JPFuelItem;
                    if (fuel != null)
                    {
                        float factor = JPUtility.GetIgnitionFactor(fuel);
                        int   Rnd    = Rand.Range(1, 100);
                        if ((float)Rnd < factor)
                        {
                            FireUtility.TryStartFireIn(cell, map, Math.Max(10f, factor - (float)Rnd) / 100f);
                        }
                    }
                }
            }
        }