public virtual void Fill_OnTarget( Mobile from, object targ )
{
if( !IsEmpty || !Fillable || !ValidateUse( from, false ) )
return;
if( targ is BaseBeverage )
{
BaseBeverage bev = (BaseBeverage)targ;
if( bev.IsEmpty || !bev.ValidateUse( from, true ) )
return;
this.Content = bev.Content;
this.Poison = bev.Poison;
this.Poisoner = bev.Poisoner;
if( bev.Quantity > this.MaxQuantity )
{
this.Quantity = this.MaxQuantity;
bev.Quantity -= this.MaxQuantity;
}
else
{
this.Quantity += bev.Quantity;
bev.Quantity = 0;
}
}
else if( targ is BaseWaterContainer )
{
BaseWaterContainer bwc = targ as BaseWaterContainer;
if( Quantity == 0 || ( Content == BeverageType.Water && !IsFull ) )
{
int iNeed = Math.Min( ( MaxQuantity - Quantity ), bwc.Quantity );
if( iNeed > 0 && !bwc.IsEmpty && !IsFull )
{
bwc.Quantity -= iNeed;
Quantity += iNeed;
Content = BeverageType.Water;
from.PlaySound( 0x4E );
}
}
}
else if( targ is Item )
{
Item item = (Item)targ;
IWaterSource src;
src = ( item as IWaterSource );
if( src == null && item is AddonComponent )
src = ( ( (AddonComponent)item ).Addon as IWaterSource );
if( src == null || src.Quantity <= 0 )
return;
if( from.Map != item.Map || !from.InRange( item.GetWorldLocation(), 2 ) || !from.InLOS( item ) )
{
from.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1019045 ); // I can't reach that.
return;
}
this.Content = BeverageType.Water;
this.Poison = null;
this.Poisoner = null;
if( src.Quantity > this.MaxQuantity )
{
this.Quantity = this.MaxQuantity;
src.Quantity -= this.MaxQuantity;
}
else
{
this.Quantity += src.Quantity;
src.Quantity = 0;
}
from.SendLocalizedMessage( 1010089 ); // You fill the container with water.
}
else if( targ is Cow )
{
Cow cow = (Cow)targ;
if( cow.TryMilk( from ) )
{
Content = BeverageType.Milk;
Quantity = MaxQuantity;
from.SendLocalizedMessage( 1080197 ); // You fill the container with milk.
}
}
}