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

51 lines
No EOL
1.5 KiB
C#

using System.Threading.Tasks;
using WingsAPI.Game.Extensions.ItemExtension.Inventory;
using WingsEmu.Game._ItemUsage;
using WingsEmu.Game._ItemUsage.Event;
using WingsEmu.Game.Battle;
using WingsEmu.Game.Buffs;
using WingsEmu.Game.Mates;
using WingsEmu.Game.Networking;
using WingsEmu.Packets.Enums;
namespace WingsEmu.Plugins.BasicImplementations.ItemUsage.Etc.Magical;
public class MagicalBuffPotionHandler : IItemHandler
{
private readonly IBuffFactory _buffFactory;
public MagicalBuffPotionHandler(IBuffFactory buffFactory) => _buffFactory = buffFactory;
public ItemType ItemType => ItemType.Magical;
public long[] Effects => new long[] { 20 };
public async Task HandleAsync(IClientSession session, InventoryUseItemEvent e)
{
if (!session.PlayerEntity.IsAlive())
{
return;
}
if (session.PlayerEntity.IsOnVehicle)
{
return;
}
int buffVnum = e.Item.ItemInstance.GameItem.EffectValue;
Buff buffToCreate = _buffFactory.CreateBuff(buffVnum, session.PlayerEntity);
await session.PlayerEntity.AddBuffAsync(buffToCreate);
foreach (IMateEntity mate in session.PlayerEntity.MateComponent.TeamMembers())
{
if (!mate.IsAlive())
{
continue;
}
buffToCreate = _buffFactory.CreateBuff(buffVnum, mate);
await mate.AddBuffAsync(buffToCreate);
}
await session.RemoveItemFromInventory(item: e.Item);
}
}