public void SendGift(long id, short vnum, byte amount, sbyte rare, byte upgrade, bool isNosmall)
{
Item it = ServerManager.GetItem(vnum);
if (it != null)
{
if (it.ItemType != ItemType.Weapon && it.ItemType != ItemType.Armor && it.ItemType != ItemType.Specialist)
{
upgrade = 0;
}
else if (it.ItemType != ItemType.Weapon && it.ItemType != ItemType.Armor)
{
rare = 0;
}
if (rare > 8 || rare < -2)
{
rare = 0;
}
if ((upgrade > 10) && it.ItemType != ItemType.Specialist)
{
upgrade = 0;
}
else if (it.ItemType == ItemType.Specialist && (upgrade > 15))
{
upgrade = 0;
}
// maximum size of the amount is 99
if (amount > 99)
{
amount = 99;
}
MailDTO mail = new MailDTO()
{
AttachmentAmount = it.Type == InventoryType.Etc || it.Type == InventoryType.Main ? amount : (byte)1,
IsOpened = false,
Date = DateTime.Now,
ReceiverId = id,
SenderId = id,
AttachmentRarity = (byte)rare,
AttachmentUpgrade = upgrade,
IsSenderCopy = false,
Title = isNosmall ? "NOSMALL" : "NOSTALE",
AttachmentVNum = vnum,
SenderClass = Class,
SenderGender = Gender,
SenderHairColor = HairColor,
SenderHairStyle = HairStyle,
EqPacket = GenerateEqListForPacket(),
SenderMorphId = Morph == 0 ? (short)-1 : (short)((Morph > short.MaxValue) ? 0 : Morph)
};
DAOFactory.MailDAO.InsertOrUpdate(ref mail);
if (id == CharacterId)
{
MailList.Add(((MailList.Any() ? MailList.OrderBy(s => s.Key).Last().Key : 0) + 1), mail);
Session.SendPacket(GenerateParcel(mail));
Session.SendPacket(GenerateSay($"{Language.Instance.GetMessageFromKey("ITEM_GIFTED")} {mail.AttachmentAmount}", 12));
}
}
}