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