using Cirno.Scripts.Enums; using Godot; namespace Cirno.Scripts.Components.FSM.Enemy; public partial class Dead : EnemyStateBase { public override EnemyState StateId => EnemyState.Dead; private EnemyStorageModule StorageModule { get; set; } private EnemyDropsProvider DropsProvider { get; set; } public override void Init(IStateMachine machine) { base.Init(machine); StorageModule ??= StateMachine.GetModule(); DropsProvider ??= StateMachine.GetModule(); } public override void EnterState() { base.EnterState(); // Play death script if (StorageModule.Root.DefeatScript is IActivable activatable) { activatable.Activate(StorageModule.Root.ActivationType); } DropsProvider.DropLoot(); GameManager.Instance.AddMotivation(StorageModule.EnemyData.MotivationReward); StorageModule.Root.TriggerDeath(); StorageModule.Root.QueueFree(); } }