From d8193b09d03e32e31b4f16358ac8daabab4ac8d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=82ngelo=20Tadeucci?= Date: Mon, 24 Mar 2025 21:35:25 -0300 Subject: [PATCH] feat: add idle state handling to movement state logic --- .../Model/Field/Actor/ActorStateComponent/MovementState.cs | 2 ++ .../MovementStateTasks/MovementState.EmoteTask.cs | 2 +- Maple2.Server.Game/Model/Field/Actor/FieldNpc.cs | 4 +++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Maple2.Server.Game/Model/Field/Actor/ActorStateComponent/MovementState.cs b/Maple2.Server.Game/Model/Field/Actor/ActorStateComponent/MovementState.cs index 1018b189a..acd9a715e 100644 --- a/Maple2.Server.Game/Model/Field/Actor/ActorStateComponent/MovementState.cs +++ b/Maple2.Server.Game/Model/Field/Actor/ActorStateComponent/MovementState.cs @@ -179,6 +179,7 @@ public void KeyframeEvent(string keyName) { case ActorState.PcSkill: StateSkillEvent(keyName); break; + case ActorState.Idle: case ActorState.Emotion: case ActorState.EmotionIdle: StateEmoteEvent(keyName); @@ -224,6 +225,7 @@ public void Update(long tickCount) { case ActorState.PcSkill: StateSkillCastUpdate(tickCount, tickDelta); break; + case ActorState.Idle: case ActorState.Emotion: case ActorState.EmotionIdle: EmoteStateUpdate(tickCount, tickDelta); diff --git a/Maple2.Server.Game/Model/Field/Actor/ActorStateComponent/MovementStateTasks/MovementState.EmoteTask.cs b/Maple2.Server.Game/Model/Field/Actor/ActorStateComponent/MovementStateTasks/MovementState.EmoteTask.cs index 4842c6dba..359c70dc8 100644 --- a/Maple2.Server.Game/Model/Field/Actor/ActorStateComponent/MovementStateTasks/MovementState.EmoteTask.cs +++ b/Maple2.Server.Game/Model/Field/Actor/ActorStateComponent/MovementStateTasks/MovementState.EmoteTask.cs @@ -48,6 +48,6 @@ private void Emote(NpcTask task, string sequence, bool isIdle, float duration) { emoteActionTask = task; stateSequence = actor.AnimationState.PlayingSequence; - SetState(isIdle ? ActorState.Emotion : ActorState.EmotionIdle); + SetState(isIdle ? ActorState.Idle : ActorState.Emotion); } } diff --git a/Maple2.Server.Game/Model/Field/Actor/FieldNpc.cs b/Maple2.Server.Game/Model/Field/Actor/FieldNpc.cs index 70930b4bc..aeec2504e 100644 --- a/Maple2.Server.Game/Model/Field/Actor/FieldNpc.cs +++ b/Maple2.Server.Game/Model/Field/Actor/FieldNpc.cs @@ -311,7 +311,9 @@ public virtual void Animate(string sequenceName, float duration = -1f) { return; } - idleTask = MovementState.TryEmote(sequence.Name, false, duration); + bool isIdle = sequenceName.Contains("idle", StringComparison.OrdinalIgnoreCase); + + idleTask = MovementState.TryEmote(sequence.Name, isIdle, duration); } public void DropLoot(FieldPlayer firstPlayer) {