server-master/srcs/WingsAPI.Game/Extensions/RarifyExtension.cs
2026-02-10 18:21:30 +01:00

79 lines
No EOL
2.5 KiB
C#

using System.Threading.Tasks;
using WingsEmu.DTOs.Items;
using WingsEmu.Game._enum;
using WingsEmu.Game.Characters.Events;
using WingsEmu.Game.Inventory;
using WingsEmu.Game.Items;
using WingsEmu.Game.Networking;
using WingsEmu.Packets.Enums;
namespace WingsEmu.Game.Extensions;
public static class RarifyExtension
{
public static async Task EmitRarifyEvent(this IClientSession sender, InventoryItem invItem, InventoryItem invAmulet, bool isDrop = false, bool isScroll = false)
{
RarifyMode mode = RarifyMode.Normal;
RarifyProtection protection = RarifyProtection.None;
if (invItem.ItemInstance.Type != ItemInstanceType.WearableInstance)
{
return;
}
GameItemInstance item = invItem.ItemInstance;
GameItemInstance amulet = invAmulet?.ItemInstance;
if (isDrop)
{
mode = RarifyMode.Drop;
}
if (isScroll)
{
protection = RarifyProtection.Scroll;
}
if (amulet == null)
{
await sender.EmitEventAsync(new GamblingEvent(invItem, null, mode, protection));
return;
}
switch (amulet.ItemVNum)
{
case (int)ItemVnums.EQ_NORMAL_SCROLL:
protection = RarifyProtection.Scroll;
break;
case (int)ItemVnums.BLESSING_AMULET:
protection = RarifyProtection.BlessingAmulet;
break;
case (int)ItemVnums.PROTECTION_AMULET:
protection = RarifyProtection.ProtectionAmulet;
break;
case (int)ItemVnums.BLESSING_AMULET_DOUBLE:
protection = RarifyProtection.BlessingAmulet;
break;
case (int)ItemVnums.CHAMPION_AMULET:
protection = RarifyProtection.HeroicAmulet;
break;
case (int)ItemVnums.CHAMPION_AMULET_RANDOM:
protection = RarifyProtection.RandomHeroicAmulet;
break;
case (int)ItemVnums.AMULET_INCREASE_NORMAL:
mode = RarifyMode.Increase;
break;
case (int)ItemVnums.CHAMPION_AMULET_INCREASE_1:
case (int)ItemVnums.CHAMPION_AMULET_INCREASE_2:
if (item.GameItem.IsHeroic)
{
mode = RarifyMode.Increase;
}
break;
}
await sender.EmitEventAsync(new GamblingEvent(invItem, invAmulet, mode, protection));
}
}