public static void Refill( Mobile from, EndlessDecanterOfWater edw )
		{
			if ( edw.Quantity == 0 )
			{
				if ( edw.Link != null )
				{
					if ( from.InRange( edw.Link.GetWorldLocation(), 20 ) )
					{
						edw.Quantity = 40;
						from.SendLocalizedMessage( 1115901 ); //The decanter has automatically been filled from the linked water trough.
					}
					else
					{
						from.SendLocalizedMessage( 1115972 ); //The decanter’s refill attempt failed because the linked water trough is not in the area.
					}
				}
				else
				{
					from.SendLocalizedMessage( 1115898 ); //The link between this decanter and the water trough has been removed.
				}
			}
		}
예제 #2
0
		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 PlantItem )
			{
				((PlantItem)targ).Pour( from, this );
			}
			else if ( targ is AddonComponent &&
				( ((AddonComponent)targ).Addon is WaterVatEast || ((AddonComponent)targ).Addon is WaterVatSouth ) &&
				this.Content == BeverageType.Water )
			{
				PlayerMobile player = from as PlayerMobile;

				if ( player != null )
				{
					SolenMatriarchQuest qs = player.Quest as SolenMatriarchQuest;

					if ( qs != null )
					{
						QuestObjective obj = qs.FindObjective( typeof( GatherWaterObjective ) );

						if ( obj != null && !obj.Completed )
						{
							BaseAddon vat = ((AddonComponent)targ).Addon;

							if ( vat.X > 5784 && vat.X < 5814 && vat.Y > 1903 && vat.Y < 1934 &&
								( (qs.RedSolen && vat.Map == Map.Trammel) || (!qs.RedSolen && vat.Map == Map.Felucca) ) )
							{
								if ( obj.CurProgress + Quantity > obj.MaxProgress )
								{
									int delta = obj.MaxProgress - obj.CurProgress;

									Quantity -= delta;
									obj.CurProgress = obj.MaxProgress;
								}
								else
								{
									obj.CurProgress += Quantity;
									Quantity = 0;
								}
							}
						}
					}
				}
			}
			else if ( targ is WaterElemental )
			{
				WaterElemental we = targ as WaterElemental;

				if ( this is Pitcher && this.Quantity == this.MaxQuantity )
				{
					if ( we.Summoned == true )
					{
						from.SendLocalizedMessage( 1115895 ); // It seems that this water elemental no longer has a magical decanter...
					}
					else if ( we.HasPitcher == false )
					{
						from.SendLocalizedMessage( 1115895 ); // It seems that this water elemental no longer has a magical decanter...
					}
					else
					{
						Effects.SendMovingEffect( from, we, this.ItemID, 7, 0, false, false, this.Hue, 0 );

						if ( Utility.Random( 100 ) < 3 )
						{
							EndlessDecanterOfWater edw = new EndlessDecanterOfWater();

							Effects.SendMovingEffect( we, from, edw.ItemID, 7, 0, false, false, edw.Hue, 0 );

							from.AddToBackpack( edw );
							from.SendLocalizedMessage( 1115897 ); // The water elemental has thrown a magical decanter back to you!
							we.HasPitcher = false;
							
						}
						else
						{
							from.SendLocalizedMessage( 1115896 ); // The water pitcher has shattered.
							//Play Sound?
						}
					}
				}
				else
				{
					from.SendLocalizedMessage( 500846 ); // Can't pour it there.
				}
				
			}
			else
			{
				from.SendLocalizedMessage( 500846 ); // Can't pour it there.
			}
		}