public override void InitializeStates(out BaseState default_state)
 {
     default_state = grounded;
     grounded.PlayAnim("grounded", KAnim.PlayMode.Loop).DefaultState(grounded.awaitingAstronaut).TagTransition(GameTags.RocketNotOnGround, spaceborne, false);
     grounded.awaitingAstronaut.Enter(delegate(StatesInstance smi)
     {
         if (smi.CheckStoredMinionIsAssignee())
         {
             smi.GoTo(grounded.hasAstronaut);
         }
         Game.Instance.userMenu.Refresh(smi.gameObject);
     }).EventHandler(GameHashes.AssigneeChanged, delegate(StatesInstance smi)
     {
         if (smi.CheckStoredMinionIsAssignee())
         {
             smi.GoTo(grounded.hasAstronaut);
         }
         Game.Instance.userMenu.Refresh(smi.gameObject);
     }).ToggleChore((StatesInstance smi) => smi.master.CreateWorkChore(), grounded.hasAstronaut);
     grounded.hasAstronaut.EventHandler(GameHashes.AssigneeChanged, delegate(StatesInstance smi)
     {
         if (!smi.CheckStoredMinionIsAssignee())
         {
             smi.GoTo(grounded.waitingToRelease);
         }
     });
     grounded.waitingToRelease.ToggleStatusItem(Db.Get().BuildingStatusItems.DisembarkingDuplicant, (object)null).OnSignal(gantryChanged, grounded.awaitingAstronaut, delegate(StatesInstance smi)
     {
         if (HasValidGantry(smi.gameObject))
         {
             smi.master.ReleaseAstronaut(accumulatedPee.Get(smi));
             accumulatedPee.Set(false, smi);
             Game.Instance.userMenu.Refresh(smi.gameObject);
             return(true);
         }
         return(false);
     });
     spaceborne.DefaultState(spaceborne.launch);
     spaceborne.launch.Enter(delegate(StatesInstance smi)
     {
         smi.SetSuspended(true);
     }).GoTo(spaceborne.idle);
     spaceborne.idle.TagTransition(GameTags.RocketNotOnGround, spaceborne.land, true);
     spaceborne.land.Enter(delegate(StatesInstance smi)
     {
         smi.SetSuspended(false);
         Game.Instance.userMenu.Refresh(smi.gameObject);
         accumulatedPee.Set(true, smi);
     }).GoTo(grounded.waitingToRelease);
 }
 public override void InitializeStates(out BaseState default_state)
 {
     default_state     = wild;
     base.serializable = false;
     wild.ParamTransition(resourceStorage, unfertilizable, (Instance smi, GameObject p) => (Object)p != (Object)null);
     unfertilizable.Enter(delegate(Instance smi)
     {
         if (smi.AcceptsLiquid())
         {
             smi.GoTo(replanted.irrigated);
         }
     });
     replanted.Enter(delegate(Instance smi)
     {
         ManualDeliveryKG[] components = smi.gameObject.GetComponents <ManualDeliveryKG>();
         foreach (ManualDeliveryKG manualDeliveryKG in components)
         {
             manualDeliveryKG.Pause(false, "replanted");
         }
         smi.UpdateIrrigation(0.0333333351f);
     }).Target(resourceStorage).EventHandler(GameHashes.OnStorageChange, delegate(Instance smi)
     {
         smi.UpdateIrrigation(0.2f);
     })
     .Target(masterTarget);
     replanted.irrigated.DefaultState(replanted.irrigated.absorbing).TriggerOnEnter(ResourceRecievedEvent, null);
     replanted.irrigated.absorbing.DefaultState(replanted.irrigated.absorbing.normal).ParamTransition(hasCorrectLiquid, replanted.starved, GameStateMachine <IrrigationMonitor, Instance, IStateMachineTarget, Def> .IsFalse).ToggleAttributeModifier("Absorbing", (Instance smi) => smi.absorptionRate, null)
     .Enter(delegate(Instance smi)
     {
         smi.UpdateAbsorbing(true);
     })
     .EventHandler(GameHashes.TagsChanged, delegate(Instance smi)
     {
         smi.UpdateAbsorbing(true);
     })
     .Exit(delegate(Instance smi)
     {
         smi.UpdateAbsorbing(false);
     });
     replanted.irrigated.absorbing.normal.ParamTransition(hasIncorrectLiquid, replanted.irrigated.absorbing.wrongLiquid, GameStateMachine <IrrigationMonitor, Instance, IStateMachineTarget, Def> .IsTrue);
     replanted.irrigated.absorbing.wrongLiquid.ParamTransition(hasIncorrectLiquid, replanted.irrigated.absorbing.normal, GameStateMachine <IrrigationMonitor, Instance, IStateMachineTarget, Def> .IsFalse);
     replanted.starved.DefaultState(replanted.starved.normal).TriggerOnEnter(ResourceDepletedEvent, null).ParamTransition(enoughCorrectLiquidToRecover, replanted.irrigated.absorbing, (Instance smi, bool p) => p && hasCorrectLiquid.Get(smi))
     .ParamTransition(hasCorrectLiquid, replanted.irrigated.absorbing, (Instance smi, bool p) => p && enoughCorrectLiquidToRecover.Get(smi));
     replanted.starved.normal.ParamTransition(hasIncorrectLiquid, replanted.starved.wrongLiquid, GameStateMachine <IrrigationMonitor, Instance, IStateMachineTarget, Def> .IsTrue);
     replanted.starved.wrongLiquid.ParamTransition(hasIncorrectLiquid, replanted.starved.normal, GameStateMachine <IrrigationMonitor, Instance, IStateMachineTarget, Def> .IsFalse);
 }