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