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

44 lines
No EOL
1.1 KiB
C#

using System.Threading;
using System.Threading.Tasks;
using PhoenixLib.Events;
using WingsEmu.Game.Characters;
using WingsEmu.Game.Characters.Events;
using WingsEmu.Game.Extensions;
using WingsEmu.Game.Items;
namespace WingsEmu.Plugins.BasicImplementations.Event.Characters;
public class GetDefaultMorphEventHandler : IAsyncEventProcessor<GetDefaultMorphEvent>
{
public async Task HandleAsync(GetDefaultMorphEvent e, CancellationToken cancellation)
{
IPlayerEntity character = e.Sender.PlayerEntity;
if (character.IsMorphed)
{
character.IsMorphed = false;
character.Morph = 0;
e.Sender.BroadcastCMode();
return;
}
if (!character.UseSp && character.Morph != 0)
{
character.Morph = 0;
e.Sender.BroadcastCMode();
return;
}
GameItemInstance sp = character.Specialist;
if (sp == null)
{
return;
}
character.Morph = sp.GameItem.Morph;
character.MorphUpgrade = sp.Upgrade;
character.MorphUpgrade2 = sp.Design;
e.Sender.BroadcastCMode();
}
}