public override void InitializeStates(out BaseState default_state) { default_state = alive; base.serializable = true; alive.ParamTransition(death, dying_duplicant, (Instance smi, Death p) => p != null && smi.IsDuplicant).ParamTransition(death, dying_creature, (Instance smi, Death p) => p != null && !smi.IsDuplicant); dying_duplicant.ToggleAnims("anim_emotes_default_kanim", 0f).ToggleTag(GameTags.Dying).ToggleChore((Instance smi) => new DieChore(smi.master, death.Get(smi)), die); dying_creature.ToggleBehaviour(GameTags.Creatures.Die, (Instance smi) => true, delegate(Instance smi) { smi.GoTo(dead); }); die.ToggleTag(GameTags.Dying).Enter("Die", delegate(Instance smi) { Death death2 = death.Get(smi); if (smi.IsDuplicant) { DeathMessage message = new DeathMessage(smi.gameObject, death2); KFMOD.PlayOneShot(GlobalAssets.GetSound("Death_Notification_localized", false), smi.master.transform.GetPosition()); KFMOD.PlayOneShot(GlobalAssets.GetSound("Death_Notification_ST", false)); Messenger.Instance.QueueMessage(message); } }).GoTo(dead); dead.ToggleAnims("anim_emotes_default_kanim", 0f).defaultState = dead.ground.TriggerOnEnter(GameHashes.Died, null).ToggleTag(GameTags.Dead).Enter(delegate(Instance smi) { smi.ApplyDeath(); Game.Instance.Trigger(282337316, smi.gameObject); }); dead.ground.Enter(delegate(Instance smi) { Death death = this.death.Get(smi); if (death == null) { death = Db.Get().Deaths.Generic; } if (smi.IsDuplicant) { smi.GetComponent <KAnimControllerBase>().Play(death.loopAnim, KAnim.PlayMode.Loop, 1f, 0f); } }).EventTransition(GameHashes.OnStore, dead.carried, (Instance smi) => smi.IsDuplicant && smi.HasTag(GameTags.Stored)); dead.carried.ToggleAnims("anim_dead_carried_kanim", 0f).PlayAnim("idle_default", KAnim.PlayMode.Loop).EventTransition(GameHashes.OnStore, dead.ground, (Instance smi) => !smi.HasTag(GameTags.Stored)); }