diff --git a/Maple2.Server.Game/Model/Field/Actor/ActorStateComponent/MovementStateStates/MovementState.Emote.cs b/Maple2.Server.Game/Model/Field/Actor/ActorStateComponent/MovementStateStates/MovementState.Emote.cs index 7cd3c5614..801689c7e 100644 --- a/Maple2.Server.Game/Model/Field/Actor/ActorStateComponent/MovementStateStates/MovementState.Emote.cs +++ b/Maple2.Server.Game/Model/Field/Actor/ActorStateComponent/MovementStateStates/MovementState.Emote.cs @@ -4,6 +4,7 @@ namespace Maple2.Server.Game.Model.ActorStateComponent; public partial class MovementState { private long emoteLimitTick; + private bool dontIdleOnStateEnd; private void EmoteStateUpdate(long tickCount, long tickDelta) { if (tickCount >= emoteLimitTick && emoteLimitTick != 0) { @@ -23,6 +24,10 @@ public void StateEmoteEvent(string keyName) { emoteActionTask?.Completed(); + if (dontIdleOnStateEnd) { + return; + } + Idle(); break; diff --git a/Maple2.Server.Game/Model/Field/Actor/ActorStateComponent/MovementStateTasks/MovementState.StandbyTask.cs b/Maple2.Server.Game/Model/Field/Actor/ActorStateComponent/MovementStateTasks/MovementState.StandbyTask.cs index 92de48a69..bc3c14549 100644 --- a/Maple2.Server.Game/Model/Field/Actor/ActorStateComponent/MovementStateTasks/MovementState.StandbyTask.cs +++ b/Maple2.Server.Game/Model/Field/Actor/ActorStateComponent/MovementStateTasks/MovementState.StandbyTask.cs @@ -25,6 +25,7 @@ protected override void TaskResumed() { private void Standby(NpcTask task, IActor? target, bool isIdle, string sequence) { Idle(sequence); + dontIdleOnStateEnd = isIdle; if (target is null) { return; diff --git a/Maple2.Server.Game/Model/Field/Actor/FieldNpc.cs b/Maple2.Server.Game/Model/Field/Actor/FieldNpc.cs index 992607070..371261ff6 100644 --- a/Maple2.Server.Game/Model/Field/Actor/FieldNpc.cs +++ b/Maple2.Server.Game/Model/Field/Actor/FieldNpc.cs @@ -181,7 +181,7 @@ public override void Update(long tickCount) { playersListeningToDebug = playersListeningToDebugNow; - if (SendControl) { + if (SendControl && !IsDead) { SequenceCounter++; Field.BroadcastNpcControl(this); SendControl = false;