58 lines
No EOL
1.5 KiB
C#
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();
|
|
}
|
|
} |