private void ValidateEquipment_Sandbox()
{
try
{
if (Map == null || Map == Map.Internal)
return;
List<Item> items = this.Items;
if (items == null)
return;
bool moved = false;
int str = this.Str;
int dex = this.Dex;
int intel = this.Int;
Mobile from = this;
for (int i = items.Count - 1; i >= 0; --i)
{
if (i >= items.Count)
continue;
Item item = items[i];
if (item is BaseWeapon)
{
BaseWeapon weapon = (BaseWeapon)item;
bool drop = false;
if (dex < weapon.DexRequirement)
drop = true;
else if (str < weapon.StrRequirement)
drop = true;
else if (intel < weapon.IntRequirement)
drop = true;
else if (weapon.RequiredRace != null && weapon.RequiredRace != this.Race)
drop = true;
if (drop)
{
string name = weapon.Name;
if (name == null)
name = String.Format("#{0}", weapon.LabelNumber);
from.SendLocalizedMessage(1062001, name); // You can no longer wield your ~1_WEAPON~
from.AddToBackpack(weapon);
moved = true;
}
}
else if (item is BaseArmor)
{
BaseArmor armor = (BaseArmor)item;
bool drop = false;
if (!armor.AllowMaleWearer && !from.Female && from.AccessLevel < AccessLevel.GameMaster)
{
drop = true;
}
else if (!armor.AllowFemaleWearer && from.Female && from.AccessLevel < AccessLevel.GameMaster)
{
drop = true;
}
else if (armor.RequiredRace != null && armor.RequiredRace != this.Race)
{
drop = true;
}
else
{
int strReq = armor.ComputeStatReq(StatType.Str);
int dexReq = armor.ComputeStatReq(StatType.Dex);
int intReq = armor.ComputeStatReq(StatType.Int);
if (dex < dexReq)
drop = true;
else if (str < strReq)
drop = true;
else if (intel < intReq)
drop = true;
}
if (drop)
{
string name = armor.Name;
if (name == null)
name = String.Format("#{0}", armor.LabelNumber);
if (armor is BaseShield)
from.SendLocalizedMessage(1062003, name); // You can no longer equip your ~1_SHIELD~
else
from.SendLocalizedMessage(1062002, name); // You can no longer wear your ~1_ARMOR~
from.AddToBackpack(armor);
moved = true;
}
}
else if (item is BaseClothing)
{
BaseClothing clothing = (BaseClothing)item;
bool drop = false;
if (!clothing.AllowMaleWearer && !from.Female && from.AccessLevel < AccessLevel.GameMaster)
{
drop = true;
}
else if (!clothing.AllowFemaleWearer && from.Female && from.AccessLevel < AccessLevel.GameMaster)
{
drop = true;
}
else if (clothing.RequiredRace != null && clothing.RequiredRace != this.Race)
{
drop = true;
}
else
{
int strBonus = clothing.ComputeStatBonus(StatType.Str);
int strReq = clothing.StrRequirement;
if (str < strReq || (str + strBonus) < 1)
drop = true;
}
if (drop)
{
string name = clothing.Name;
if (name == null)
name = String.Format("#{0}", clothing.LabelNumber);
from.SendLocalizedMessage(1062002, name); // You can no longer wear your ~1_ARMOR~
from.AddToBackpack(clothing);
moved = true;
}
}
}
if (moved)
from.SendLocalizedMessage(500647); // Some equipment has been moved to your backpack.
}
catch (Exception e)
{
Console.WriteLine(e);
}
finally
{
m_NoDeltaRecursion = false;
}
}