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