Пример #1
0
        public override void ApplyModifier()
        {
            base.ApplyModifier();
            float multiplier = this.GetAttributes().Get(MoreTinkerablePlantsPatches.ColdBreatherThroughput).GetTotalValue();

            elementConsumer.consumptionRate = coldBreather.consumptionRate * (receptacleMonitor.Replanted ? 1 : CROPS.WILD_GROWTH_RATE_MODIFIER) * multiplier;
            elementConsumer.RefreshConsumptionRate();
        }
            private static void Postfix(Oxyfern __instance, ElementConsumer ___elementConsumer, ElementConverter ___elementConverter)
            {
                float multiplier = __instance.GetAttributes().Get(OxyfernThroughput).GetTotalValue();

                ___elementConsumer.consumptionRate *= multiplier;
                ___elementConsumer.RefreshConsumptionRate();
                ___elementConverter.SetWorkSpeedMultiplier(multiplier);
            }
 public override void InitializeStates(out BaseState default_state)
 {
     default_state = unworkable;
     root.Enter(delegate(StatesInstance smi)
     {
         smi.master.workable.SetWorkTime(float.PositiveInfinity);
     });
     workable.ToggleChore(CreateUseChore, work_pst).EventTransition(GameHashes.ActiveChanged, workable.consuming, (StatesInstance smi) => (Object)smi.master.workable.worker != (Object)null).EventTransition(GameHashes.OperationalChanged, workable.consuming, (StatesInstance smi) => (Object)smi.master.workable.worker != (Object)null)
     .Transition(unworkable, (StatesInstance smi) => !smi.IsWorkable(), UpdateRate.SIM_200ms);
     work_pst.Update("LiquidFanEmitCooledContents", delegate(StatesInstance smi, float dt)
     {
         smi.master.EmitContents();
     }, UpdateRate.SIM_200ms, false).ScheduleGoTo(2f, unworkable);
     unworkable.Update("LiquidFanEmitCooledContents", delegate(StatesInstance smi, float dt)
     {
         smi.master.EmitContents();
     }, UpdateRate.SIM_200ms, false).Update("LiquidFanUnworkableStatusItems", delegate(StatesInstance smi, float dt)
     {
         smi.master.UpdateUnworkableStatusItems();
     }, UpdateRate.SIM_200ms, false).Transition(workable.waiting, (StatesInstance smi) => smi.IsWorkable(), UpdateRate.SIM_200ms)
     .Enter(delegate(StatesInstance smi)
     {
         smi.master.UpdateUnworkableStatusItems();
     })
     .Exit(delegate(StatesInstance smi)
     {
         smi.master.UpdateUnworkableStatusItems();
     });
     workable.consuming.EventTransition(GameHashes.OperationalChanged, unworkable, (StatesInstance smi) => (Object)smi.master.workable.worker == (Object)null).EventHandler(GameHashes.ActiveChanged, delegate(StatesInstance smi)
     {
         smi.master.CheckWorking();
     }).Enter(delegate(StatesInstance smi)
     {
         if (!smi.EnvironmentNeedsCooling() || !smi.master.HasMaterial() || !smi.EnvironmentHighEnoughPressure())
         {
             smi.GoTo(unworkable);
         }
         ElementConsumer component2 = smi.master.GetComponent <ElementConsumer>();
         component2.consumptionRate = smi.master.flowRate;
         component2.RefreshConsumptionRate();
     })
     .Update(delegate(StatesInstance smi, float dt)
     {
         smi.master.CoolContents(dt);
     }, UpdateRate.SIM_200ms, false)
     .ScheduleGoTo(12f, workable.emitting)
     .Exit(delegate(StatesInstance smi)
     {
         ElementConsumer component = smi.master.GetComponent <ElementConsumer>();
         component.consumptionRate = 0f;
         component.RefreshConsumptionRate();
     });
     workable.emitting.EventTransition(GameHashes.ActiveChanged, unworkable, (StatesInstance smi) => (Object)smi.master.workable.worker == (Object)null).EventTransition(GameHashes.OperationalChanged, unworkable, (StatesInstance smi) => (Object)smi.master.workable.worker == (Object)null).ScheduleGoTo(3f, workable.consuming)
     .Update(delegate(StatesInstance smi, float dt)
     {
         smi.master.CoolContents(dt);
     }, UpdateRate.SIM_200ms, false)
     .Update("LiquidFanEmitCooledContents", delegate(StatesInstance smi, float dt)
     {
         smi.master.EmitContents();
     }, UpdateRate.SIM_200ms, false);
 }