server-master/srcs/_plugins/Plugin.Raids/Handlers/RevivalEventRaidHandler.cs
2026-02-10 18:21:30 +01:00

35 lines
No EOL
1.1 KiB
C#

using System.Threading;
using System.Threading.Tasks;
using PhoenixLib.Events;
using WingsEmu.Game.Battle;
using WingsEmu.Game.Buffs;
using WingsEmu.Game.Extensions;
using WingsEmu.Game.Maps;
using WingsEmu.Game.Networking;
using WingsEmu.Game.Revival;
namespace Plugin.Raids;
public class RevivalEventRaidHandler : IAsyncEventProcessor<RevivalReviveEvent>
{
private readonly IBuffFactory _buffFactory;
public RevivalEventRaidHandler(IBuffFactory buffFactory) => _buffFactory = buffFactory;
public async Task HandleAsync(RevivalReviveEvent e, CancellationToken cancellation)
{
IClientSession session = e.Sender;
if (session.PlayerEntity.IsAlive() || session.CurrentMapInstance is not { MapInstanceType: MapInstanceType.RaidInstance })
{
return;
}
session.PlayerEntity.Hp = session.PlayerEntity.MaxHp;
session.PlayerEntity.Mp = session.PlayerEntity.MaxMp;
session.RefreshStat();
await session.PlayerEntity.Restore(restoreMates: false);
session.BroadcastRevive();
await session.CheckPartnerBuff();
session.SendBuffsPacket();
}
}