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. } } }
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. } }