fix(combat): [Item 1] fix skill spam and enforce animation completion with proper cooldown

This commit is contained in:
CAtlas0784 committed 2026-09-16 02:19:01 +07:00
1 parent b37334b08f
commit 47843f78d5
2 files changed
+11 -2

No files matched your search

@@ -38,6 +38,15 @@ internal sealed partial class GameRouter
return;
}
// Prevent rapid re-triggering of the same active or unique skill while the animation is executing
if (state.ActiveSkillId == req.SkillId &&
(req.SkillId == weapon.ActiveSkill(style) || req.SkillId == weapon.UniqueSkill(style)) &&
(Environment.TickCount64 - state.ActiveSkillStartedTicks) < 1200)
{
ctx.Session.Log.Warn($"[COMBAT] ignore rapid spam of active/unique skill={req.SkillId} elapsed={Environment.TickCount64 - state.ActiveSkillStartedTicks}ms");
return;
}
state.CombatUseCount++;
state.RestoreResourcesAfterActiveSkill |=
req.SkillId == weapon.ActiveSkill(style) ||
@@ -98,7 +107,7 @@ internal sealed partial class GameRouter
await ctx.NotifyAsync(MethodId.SyncFightResource,
CombatCodec.FightResource(state.ActiveSpiritUnitId, CombatCodec.UltimateResourceId, CombatCodec.UltimateResourceMax));
await ctx.NotifyAsync(MethodId.SyncFightResourceFreeState,
CombatCodec.FightResourceFreeState(state.ActiveSpiritUnitId, CombatCodec.UltimateResourceId, true));
CombatCodec.FightResourceFreeState(state.ActiveSpiritUnitId, CombatCodec.UltimateResourceId, false));
}
Task OnSkillHit(RpcContext ctx, SceneMethods.SkillHitData hit)
@@ -51,7 +51,7 @@ internal sealed partial class GameRouter
await ctx.NotifyAsync(MethodId.SyncFightResource,
CombatCodec.FightResource(unitId, resourceId, maximum));
await ctx.NotifyAsync(MethodId.SyncFightResourceFreeState,
CombatCodec.FightResourceFreeState(unitId, resourceId, true));
CombatCodec.FightResourceFreeState(unitId, resourceId, false));
}
}