public virtual void Pour_OnTarget( Mobile from, object targ )
{
if( IsEmpty || !Pourable || !ValidateUse( from, false ) )
return;
if( targ is BaseBeverage )
{
BaseBeverage bev = (BaseBeverage)targ;
if( !bev.ValidateUse( from, true ) )
return;
if( bev.IsFull && bev.Content == this.Content )
{
from.SendLocalizedMessage( 500848 ); // Couldn't pour it there. It was already full.
}
else if( !bev.IsEmpty )
{
from.SendLocalizedMessage( 500846 ); // Can't pour it there.
}
else
{
bev.Content = this.Content;
bev.Poison = this.Poison;
bev.Poisoner = this.Poisoner;
if( this.Quantity > bev.MaxQuantity )
{
bev.Quantity = bev.MaxQuantity;
this.Quantity -= bev.MaxQuantity;
}
else
{
bev.Quantity += this.Quantity;
this.Quantity = 0;
}
from.PlaySound( 0x4E );
}
}
else if( from == targ )
{
if( from.Thirst < 20 )
from.Thirst += 1;
if( ContainsAlchohol )
{
int bac = 0;
switch( this.Content )
{
case BeverageType.Ale: bac = 1; break;
case BeverageType.Wine: bac = 2; break;
case BeverageType.Cider: bac = 3; break;
case BeverageType.Liquor: bac = 4; break;
}
from.BAC += bac;
if( from.BAC > 60 )
from.BAC = 60;
CheckHeaveTimer( from );
}
from.PlaySound( Utility.RandomList( 0x30, 0x2D6 ) );
if( m_Poison != null )
from.ApplyPoison( m_Poisoner, m_Poison );
--Quantity;
}
else if( targ is BaseWaterContainer )
{
BaseWaterContainer bwc = targ as BaseWaterContainer;
if( Content != BeverageType.Water )
{
from.SendLocalizedMessage( 500842 ); // Can't pour that in there.
}
else if( bwc.Items.Count != 0 )
{
from.SendLocalizedMessage( 500841 ); // That has something in it.
}
else
{
int itNeeds = Math.Min( ( bwc.MaxQuantity - bwc.Quantity ), Quantity );
if( itNeeds > 0 )
{
bwc.Quantity += itNeeds;
Quantity -= itNeeds;
from.PlaySound( 0x4E );
}
}
}
else
{
from.SendLocalizedMessage( 500846 ); // Can't pour it there.
}
}