server-master/srcs/_plugins/WingsEmu.Plugins.BasicImplementation/Event/Mates/MateRestEventHandler.cs
2026-02-10 18:21:30 +01:00

41 lines
No EOL
1,004 B
C#

using System;
using System.Threading;
using System.Threading.Tasks;
using PhoenixLib.Events;
using WingsEmu.Game.Extensions;
using WingsEmu.Game.Extensions.Mates;
using WingsEmu.Game.Mates;
using WingsEmu.Game.Mates.Events;
namespace WingsEmu.Plugins.BasicImplementations.Event.Mates;
public class MateRestEventHandler : IAsyncEventProcessor<MateRestEvent>
{
public async Task HandleAsync(MateRestEvent e, CancellationToken cancellation)
{
IMateEntity mateEntity = e.MateEntity;
if (mateEntity == null)
{
return;
}
if (mateEntity.LastSkillUse.AddSeconds(4) > DateTime.UtcNow && !e.Force)
{
return;
}
if (mateEntity.LastDefence.AddSeconds(4) > DateTime.UtcNow && !e.Force)
{
return;
}
if (!e.Sender.HasCurrentMapInstance)
{
return;
}
mateEntity.IsSitting = e.Rest;
e.Sender.Broadcast(mateEntity.GenerateRest());
}
}