Exemplo n.º 1
0
 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);
 }
Exemplo n.º 3
0
 protected void DestroySelf(object callbackParam)
 {
     CreatureHelpers.DeselectCreature(gameObject);
     Util.KDestroyGameObject(gameObject);
 }