public override void InitializeStates(out BaseState default_state) { default_state = grow; dead.ToggleStatusItem(CREATURES.STATUSITEMS.DEAD.NAME, CREATURES.STATUSITEMS.DEAD.TOOLTIP, category : Db.Get().StatusItemCategories.Main, icon : string.Empty, icon_type : StatusItem.IconType.Info, notification_type : (NotificationType)0, allow_multiples : false, render_overlay : default(HashedString), status_overlays : 0, resolve_string_callback : null, resolve_tooltip_callback : null).Enter(delegate(StatesInstance smi) { GameUtil.KInstantiate(Assets.GetPrefab(EffectConfigs.PlantDeathId), smi.master.transform.GetPosition(), Grid.SceneLayer.FXFront, null, 0).SetActive(true); smi.master.Trigger(1623392196, null); smi.master.GetComponent <KBatchedAnimController>().StopAndClear(); Object.Destroy(smi.master.GetComponent <KBatchedAnimController>()); smi.Schedule(0.5f, delegate(object data) { GameObject gameObject = (GameObject)data; CreatureHelpers.DeselectCreature(gameObject); Util.KDestroyGameObject(gameObject); }, smi.master.gameObject); }); blocked_from_growing.ToggleStatusItem(Db.Get().MiscStatusItems.RegionIsBlocked, (object)null).EventTransition(GameHashes.EntombedChanged, alive, (StatesInstance smi) => alive.ForceUpdateStatus(smi.master.gameObject)).EventTransition(GameHashes.TooColdWarning, alive, (StatesInstance smi) => alive.ForceUpdateStatus(smi.master.gameObject)) .EventTransition(GameHashes.TooHotWarning, alive, (StatesInstance smi) => alive.ForceUpdateStatus(smi.master.gameObject)) .TagTransition(GameTags.Uprooted, dead, false); grow.Enter(delegate(StatesInstance smi) { if (smi.master.receptacleMonitor.HasReceptacle() && !alive.ForceUpdateStatus(smi.master.gameObject)) { smi.GoTo(blocked_from_growing); } }).PlayAnim("grow_seed", KAnim.PlayMode.Once).EventTransition(GameHashes.AnimQueueComplete, alive, null); alive.InitializeStates(masterTarget, dead).DefaultState(alive.mature).Update("Alive", delegate(StatesInstance smi, float dt) { smi.master.Exhaust(dt); }, UpdateRate.SIM_200ms, false); alive.mature.EventTransition(GameHashes.Wilt, alive.wilting, (StatesInstance smi) => smi.master.wiltCondition.IsWilting()).PlayAnim("idle", KAnim.PlayMode.Loop); alive.wilting.PlayAnim("wilt1").EventTransition(GameHashes.WiltRecover, alive.mature, (StatesInstance smi) => !smi.master.wiltCondition.IsWilting()); }
public override void InitializeStates(out BaseState default_state) { default_state = plan; root.Enter("SetFleeTarget", delegate(Instance smi) { fleeToTarget.Set(CreatureHelpers.GetFleeTargetLocatorObject(smi.master.gameObject, smi.GetSMI <ThreatMonitor.Instance>().MainThreat), smi); }).ToggleStatusItem(CREATURES.STATUSITEMS.FLEEING.NAME, CREATURES.STATUSITEMS.FLEEING.TOOLTIP, category: Db.Get().StatusItemCategories.Main, icon: string.Empty, icon_type: StatusItem.IconType.Info, notification_type: NotificationType.Neutral, allow_multiples: false, render_overlay: default(HashedString), status_overlays: 129022, resolve_string_callback: null, resolve_tooltip_callback: null); plan.Enter(delegate(Instance smi) { ThreatMonitor.Instance sMI = smi.master.gameObject.GetSMI <ThreatMonitor.Instance>(); fleeToTarget.Set(CreatureHelpers.GetFleeTargetLocatorObject(smi.master.gameObject, sMI.MainThreat), smi); if ((Object)fleeToTarget.Get(smi) != (Object)null) { smi.GoTo(approach); } else { smi.GoTo(cower); } }); approach.InitializeStates(mover, fleeToTarget, cower, cower, null, NavigationTactics.ReduceTravelDistance).Enter(delegate(Instance smi) { PopFXManager.Instance.SpawnFX(PopFXManager.Instance.sprite_Plus, CREATURES.STATUSITEMS.FLEEING.NAME.text, smi.master.transform, 1.5f, false); }); cower.Enter(delegate(Instance smi) { string s = "DEFAULT COWER ANIMATION"; if (smi.Get <KBatchedAnimController>().HasAnimation("cower")) { s = "cower"; } else if (smi.Get <KBatchedAnimController>().HasAnimation("idle")) { s = "idle"; } else if (smi.Get <KBatchedAnimController>().HasAnimation("idle_loop")) { s = "idle_loop"; } smi.Get <KBatchedAnimController>().Play(s, KAnim.PlayMode.Loop, 1f, 0f); }).ScheduleGoTo(2f, behaviourcomplete); behaviourcomplete.BehaviourComplete(GameTags.Creatures.Flee, false); }
protected void DestroySelf(object callbackParam) { CreatureHelpers.DeselectCreature(gameObject); Util.KDestroyGameObject(gameObject); }