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

Pour_OnTarget() public method

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

Usage Example

示例#1
0
        public void Pour(Mobile from, BaseBeverage beverage)
        {
            if (beverage.Content == BeverageType.Water)
            {
                if (Items.Count > 0)
                {
                    from.SendLocalizedMessage(500848);                                                             // Couldn't pour it there.  It was already full.
                    beverage.PrivateOverheadMessage(Server.Network.MessageType.Regular, 0, 500841, from.NetState); // that has somethign in it.
                }
                else
                {
                    var barrel = new WaterBarrel();
                    barrel.Movable = false;
                    barrel.MoveToWorld(Location, Map);

                    beverage.Pour_OnTarget(from, barrel);
                    Delete();
                }
            }
        }