79 lines
No EOL
2.5 KiB
C#
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));
|
|
}
|
|
} |