server-master/srcs/_plugins/WingsEmu.Plugins.BasicImplementation/ItemUsage/Etc/Magical/HairStyleHandler.cs
2026-02-10 18:21:30 +01:00

63 lines
No EOL
1.9 KiB
C#

using System;
using System.Threading.Tasks;
using WingsAPI.Game.Extensions.ItemExtension.Inventory;
using WingsEmu.Game._enum;
using WingsEmu.Game._ItemUsage;
using WingsEmu.Game._ItemUsage.Event;
using WingsEmu.Game.Characters;
using WingsEmu.Game.Extensions;
using WingsEmu.Game.Items;
using WingsEmu.Game.Networking;
using WingsEmu.Packets.Enums;
using WingsEmu.Packets.Enums.Character;
namespace WingsEmu.Plugins.BasicImplementations.ItemUsage.Etc.Magical;
public class HairStyleHandler : IItemHandler
{
public ItemType ItemType => ItemType.Magical;
public long[] Effects { get; } = { 11 };
public async Task HandleAsync(IClientSession session, InventoryUseItemEvent e)
{
IPlayerEntity character = session.PlayerEntity;
IGameItem gameItem = e.Item.ItemInstance.GameItem;
if (character.Class == ClassType.Adventurer && (gameItem.Id == (int)ItemVnums.SUPER_HAIR_GEL || gameItem.Id == (int)ItemVnums.SUPER_HAIR_WAX))
{
return;
}
if (!Enum.TryParse(gameItem.EffectValue.ToString(), out HairStyleType hairStyle))
{
return;
}
if (character.HairStyle == hairStyle && hairStyle != HairStyleType.A)
{
return;
}
if ((hairStyle == HairStyleType.ChoppyBangs || hairStyle == HairStyleType.FrenchBraid) && character.Gender == GenderType.Male)
{
return;
}
if ((hairStyle == HairStyleType.FauxHawk || hairStyle == HairStyleType.JellyRolls) && character.Gender == GenderType.Female)
{
return;
}
if (hairStyle == HairStyleType.A)
{
character.HairStyle = character.HairStyle == HairStyleType.A ? HairStyleType.B : HairStyleType.A;
}
else
{
character.HairStyle = hairStyle;
}
session.BroadcastEq();
await session.RemoveItemFromInventory(item: e.Item);
}
}