public static GiveFlags GiveTo(
this Item item, Mobile m, GiveFlags flags = GiveFlags.PackBankFeet, bool message = true)
{
if (item == null || item.Deleted || m == null || m.Deleted || flags == GiveFlags.None)
{
return(GiveFlags.None);
}
bool pack = flags.HasFlag(GiveFlags.Pack);
bool bank = flags.HasFlag(GiveFlags.Bank);
bool feet = flags.HasFlag(GiveFlags.Feet);
bool delete = flags.HasFlag(GiveFlags.Delete);
GiveFlags result = VitaNexCore.TryCatchGet(
() =>
{
if (pack && m.PlaceInBackpack(item))
{
return(GiveFlags.Pack);
}
if (bank && m.BankBox.TryDropItem(m, item, false))
{
return(GiveFlags.Bank);
}
if (feet)
{
MapPoint mp = m.ToMapPoint();
if (!mp.Internal)
{
item.MoveToWorld(mp.Location, mp.Map);
return(GiveFlags.Feet);
}
}
if (delete)
{
item.Delete();
return(GiveFlags.Delete);
}
return(GiveFlags.None);
});
if (message)
{
string amount = String.Empty;
string name = ResolveName(item, m);
bool p = false;
if (item.Stackable && item.Amount > 1)
{
amount = item.Amount.ToString("#,0") + " ";
p = true;
if (!Insensitive.EndsWith(name, "s") && !Insensitive.EndsWith(name, "z"))
{
name += "s";
}
}
switch (result)
{
case GiveFlags.Pack:
m.SendMessage("{0}{1} {2} been placed in your pack.", amount, name, p ? "have" : "has");
break;
case GiveFlags.Bank:
m.SendMessage("{0}{1} {2} been placed in your bank.", amount, name, p ? "have" : "has");
break;
case GiveFlags.Feet:
m.SendMessage("{0}{1} {2} been placed at your feet.", amount, name, p ? "have" : "has");
break;
}
}
return(result);
}