public override void InitializeStates(out BaseState default_state) { default_state = idle; idle.DefaultState(idle.unblocked).Enter(delegate(StatesInstance smi) { smi.Play("idle", KAnim.PlayMode.Once); }).ScheduleGoTo((StatesInstance smi) => smi.master.emissionPollFrequency, emit); idle.unblocked.ToggleStatusItem(Db.Get().MiscStatusItems.SpoutPressureBuilding, (object)null).Transition(idle.blocked, (StatesInstance smi) => !smi.CanEmitAnywhere(), UpdateRate.SIM_200ms); idle.blocked.ToggleStatusItem(Db.Get().MiscStatusItems.SpoutOverPressure, (object)null).Transition(idle.blocked, (StatesInstance smi) => smi.CanEmitAnywhere(), UpdateRate.SIM_200ms); emit.DefaultState(emit.unblocked).Enter(delegate(StatesInstance smi) { float num = 1f + Random.Range(0f, smi.master.emissionIrregularity); float massGenerationRate = smi.master.perEmitAmount / num; smi.master.emitter.SetEmitting(true); smi.master.emitter.emissionFrequency = 1f; smi.master.emitter.outputElement.massGenerationRate = massGenerationRate; smi.ScheduleGoTo(num, idle); }); emit.unblocked.ToggleStatusItem(Db.Get().MiscStatusItems.SpoutEmitting, (object)null).Enter(delegate(StatesInstance smi) { smi.Play("emit", KAnim.PlayMode.Once); smi.master.emitter.SetEmitting(true); }).Transition(emit.blocked, (StatesInstance smi) => !smi.CanEmitAnywhere(), UpdateRate.SIM_200ms); emit.blocked.ToggleStatusItem(Db.Get().MiscStatusItems.SpoutOverPressure, (object)null).Enter(delegate(StatesInstance smi) { smi.Play("idle", KAnim.PlayMode.Once); smi.master.emitter.SetEmitting(false); }).Transition(emit.unblocked, (StatesInstance smi) => smi.CanEmitAnywhere(), UpdateRate.SIM_200ms); }