Server.Items.BaseBeverage.Fill_OnTarget C# (CSharp) Method

Fill_OnTarget() public method

public Fill_OnTarget ( Server.Mobile from, object targ ) : void
from Server.Mobile
targ object
return void
		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.
				}
			}
		}