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

37 lines
No EOL
1.2 KiB
C#

using System.Threading;
using System.Threading.Tasks;
using PhoenixLib.Events;
using WingsEmu.Game.Battle;
using WingsEmu.Game.Characters;
using WingsEmu.Game.Extensions;
using WingsEmu.Game.Groups.Events;
using WingsEmu.Game.Maps;
using WingsEmu.Game.Revival;
namespace WingsEmu.Plugins.BasicImplementations.Revival;
public class RevivalEventIceBreakerHandler : IAsyncEventProcessor<RevivalReviveEvent>
{
private readonly RevivalEventNormalHandler _eventNormalHandler;
public RevivalEventIceBreakerHandler(RevivalEventNormalHandler eventNormalHandler) => _eventNormalHandler = eventNormalHandler;
public async Task HandleAsync(RevivalReviveEvent e, CancellationToken cancellation)
{
IPlayerEntity character = e.Sender.PlayerEntity;
if (e.Sender?.CurrentMapInstance == null)
{
return;
}
if (character.IsAlive() || e.Sender.PlayerEntity.MapInstance.MapInstanceType != MapInstanceType.IceBreakerInstance)
{
return;
}
e.Sender.SendBuffsPacket();
// get group
e.Sender.EmitEvent(new LeaveGroupEvent());
await _eventNormalHandler.BaseRevive(e);
}
}