public static bool ConsumeCharges( Mobile from, int amount )
{
List<Item> items = from.Items;
int avail = 0;
for ( int i = 0; i < items.Count; ++i )
{
Item obj = items[i];
if ( obj is IArcaneEquip )
{
IArcaneEquip eq = (IArcaneEquip)obj;
if ( eq.IsArcane )
avail += eq.CurArcaneCharges;
}
}
if ( avail < amount )
return false;
for ( int i = 0; i < items.Count; ++i )
{
Item obj = items[i];
if ( obj is IArcaneEquip )
{
IArcaneEquip eq = (IArcaneEquip)obj;
if ( eq.IsArcane )
{
if ( eq.CurArcaneCharges > amount )
{
eq.CurArcaneCharges -= amount;
break;
}
else
{
amount -= eq.CurArcaneCharges;
eq.CurArcaneCharges = 0;
}
}
}
}
return true;
}