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

58 lines
No EOL
1.5 KiB
C#

using System.Linq;
using System.Threading.Tasks;
using WingsAPI.Game.Extensions.ItemExtension.Inventory;
using WingsEmu.DTOs.Titles;
using WingsEmu.Game._Guri;
using WingsEmu.Game._Guri.Event;
using WingsEmu.Game._i18n;
using WingsEmu.Game.Extensions;
using WingsEmu.Game.Items;
using WingsEmu.Game.Managers.StaticData;
using WingsEmu.Game.Networking;
using WingsEmu.Packets.Enums;
namespace WingsEmu.Plugins.BasicImplementations.Guri;
public class TitleGuriHandler : IGuriHandler
{
private readonly IItemsManager _itemManager;
public TitleGuriHandler(IItemsManager itemManager) => _itemManager = itemManager;
public long GuriEffectId => 306;
public async Task ExecuteAsync(IClientSession session, GuriEvent e)
{
if (e.User == null)
{
return;
}
IGameItem title = _itemManager.GetItem(e.Data);
if (title == null)
{
return;
}
if (title.ItemType != ItemType.Title)
{
return;
}
if (session.PlayerEntity.Titles.Any(s => s.ItemVnum == title.Id))
{
return;
}
session.PlayerEntity.Titles.Add(new CharacterTitleDto
{
TitleId = _itemManager.GetTitleId(title.Id),
ItemVnum = title.Id
});
await session.RemoveItemFromInventory(title.Id);
session.SendInfo(session.GetLanguage(GameDialogKey.TITLE_INFO_UNLOCKED));
session.SendTitlePacket();
}
}