public override void InitializeStates(out BaseState default_state)
 {
     default_state     = building;
     base.serializable = true;
     building.Update(delegate(Instance smi, float dt)
     {
         pee_fuse.Delta(0f - dt, smi);
     }, UpdateRate.SIM_200ms, false).Transition(paused, (Instance smi) => IsSleeping(smi), UpdateRate.SIM_200ms).Transition(critical, (Instance smi) => pee_fuse.Get(smi) <= 60f, UpdateRate.SIM_200ms);
     critical.Update(delegate(Instance smi, float dt)
     {
         pee_fuse.Delta(0f - dt, smi);
     }, UpdateRate.SIM_200ms, false).Transition(paused, (Instance smi) => IsSleeping(smi), UpdateRate.SIM_200ms).Transition(pee, (Instance smi) => pee_fuse.Get(smi) <= 0f, UpdateRate.SIM_200ms);
     paused.Transition(building, (Instance smi) => !IsSleeping(smi), UpdateRate.SIM_200ms);
     pee.ToggleChore(CreatePeeChore, building);
 }