Example #1
0
		public override void OnDoubleClick( Mobile from )
		{
			if ( from.BeginAction( typeof( RejuvinationAddonComponent ) ) )
			{
				from.FixedEffect( 0x373A, 1, 16 );

				int random = Utility.Random( 1, 4 );

				if ( random == 1 || random == 4 )
				{
					from.Hits = from.HitsMax;
					SendLocalizedMessageTo( from, 500801 ); // A sense of warmth fills your body!
				}

				if ( random == 2 || random == 4 )
				{
					from.Mana = from.ManaMax;
					SendLocalizedMessageTo( from, 500802 ); // A feeling of power surges through your veins!
				}

				if ( random == 3 || random == 4 )
				{
					from.Stam = from.StamMax;
					SendLocalizedMessageTo( from, 500803 ); // You feel as though you've slept for days!
				}

				Timer.DelayCall( TimeSpan.FromHours( 2.0 ), new TimerStateCallback( ReleaseUseLock_Callback ), new object[]{ from, random } );
			}
		}
Example #2
0
		public override void OnDoubleClick( Mobile from )
		{
			if( !IsChildOf( from.Backpack ) )
				from.SendLocalizedMessage( 1042001 );
			else if( this.UsesRemaining < 1 )
			{
				from.SendMessage( "There is no more use for this item." );
				this.Delete();
			}
			else if( from.BeginAction( typeof( DaemonBait ) ) )
			{
				new InternalTimer( from ).Start();
				
				SpawnDaemon( from );
				Effects.SendLocationEffect( new Point3D( from.X, from.Y, from.Z + 1 ), from.Map, 0x37B9, 13 );
				Effects.SendLocationEffect( new Point3D( from.X, from.Y, from.Z ), from.Map, 0x37C3, 13 );
				
				this.UsesRemaining -= 1;
				
				if( this.UsesRemaining <= 0 )
					this.Delete();
			}
			else
				from.SendMessage( "You must wait before another daemon is ready to be called forth." );
		}
Example #3
0
        public override void Drink( Mobile from )
        {
            if ( from.Hits < from.HitsMax )
            {
                if ( from.Poisoned || MortalStrike.IsWounded( from ) )
                {
                    from.LocalOverheadMessage( MessageType.Regular, 0x22, 1005000 ); // You can not heal yourself in your current state.
                }
                else
                {
                    if ( from.BeginAction( typeof( BaseHealPotion ) ) )
                    {
                        DoHeal( from );

                        PlayDrinkEffect( from );

                        this.Consume();

                        Timer.DelayCall( TimeSpan.FromSeconds( Delay ), new TimerStateCallback( ReleaseHealLock ), from );
                    }
                    else
                    {
                        from.LocalOverheadMessage( MessageType.Regular, 0x22, 500235 ); // You must wait 10 seconds before using another healing potion.
                    }
                }
            }
            else
            {
                from.SendLocalizedMessage( 1049547 ); // You decide against drinking this potion, as you are already at full health.
            }
        }
Example #4
0
		public static TimeSpan OnUse( Mobile m )
		{
			m.BeginAction( typeof( Engines.Imbuing.Imbuing ) );
			m.SendGump( new Engines.Imbuing.ImbuingMainGump() );

			return TimeSpan.FromSeconds( 1.0 );
		}
Example #5
0
		public override void OnDoubleClick( Mobile from )
		{
			if ( !from.InRange( this.GetWorldLocation(), 1 ) )
			{
				from.SendLocalizedMessage( 502138 ); // That is too far away for you to use
				return;
			}
			else if ( from != m_Caster )
			{
				// from.SendLocalizedMessage( ); // 
				return;
			}

			BaseWeapon weapon = from.FindItemOnLayer( Layer.OneHanded ) as BaseWeapon;

			if ( weapon == null )
				weapon = from.FindItemOnLayer( Layer.TwoHanded ) as BaseWeapon;

			if ( weapon != null )
			{
				from.SendLocalizedMessage( 1080116 ); // You must have a free hand to use a Healing Stone.
			}
			else if ( from.BeginAction( typeof( BaseHealPotion ) ) )
			{
				from.Heal( Utility.RandomMinMax( BasePotion.Scale( from, 13 ) , BasePotion.Scale( from, 16 ) ) );
				this.Consume();
				Timer.DelayCall( TimeSpan.FromSeconds( 8.0 ), new TimerStateCallback( ReleaseHealLock ), from );
			}
			else
				from.SendLocalizedMessage( 1095172 ); // You must wait a few seconds before using another Healing Stone.
		}
		public override bool Drink( Mobile from )
		{
			if ( from.Mana < from.ManaMax )
			{
				if ( from.BeginAction( typeof( BaseManaRefreshPotion ) ) )
				{
					from.Mana += Scale( from, (int)(Refresh * from.ManaMax) );

					BasePotion.PlayDrinkEffect( from );

					Delete();

					Timer.DelayCall<Mobile>( TimeSpan.FromSeconds( 20.0 ), new TimerStateCallback<Mobile>( ReleaseManaLock ), from );

					return true;
				}
				else
					from.LocalOverheadMessage( MessageType.Regular, 0x22, false, "You must wait 20 seconds before using another mana refresh potion." );

			}
			else
				from.SendMessage( "You decide against drinking this potion, as you already have full mana." );

			return false;
		}
		public override void Drink( Mobile from )
		{
			
			if ( from.BeginAction( typeof( BaseMaskOfDeathPotion ) ) )
			{
				
				if ( !UnderEffect( from ) )
				{
					Timer t = (Timer)m_Table[from];
	
					if ( t != null )
						t.Stop();
	
					m_Table[from] = t = Timer.DelayCall( Duration, new TimerStateCallback( Expire_Callback ), from );			
	
					//Effects.SendPacket( from, from.Map, new GraphicalEffect( EffectType.FixedFrom, from.Serial, Serial.Zero, 0x375A, from.Location, from.Location, 10, 15, true, false ) );//Default
					from.FixedParticles( 0x3779, 10, 15, 5002, EffectLayer.Head );
					from.FixedParticles( 0x376A, 9, 32, 5008, EffectLayer.Waist );
					from.FixedParticles( 0x3778, 10, 30, 5010, EffectLayer.Head );
					
					
				        from.SendLocalizedMessage( 503326 ); // You are now ignored by monsters.
	
					Delete();
				}
				Timer.DelayCall( TimeSpan.FromMinutes( Delay ),new TimerStateCallback( Release ), from );
			}
			else
			{
				from.SendMessage("You must wait 30 minutes to use this potion" );					
			}		
			
			
		}
Example #8
0
		public override void Drink( Mobile from )
		{
			if ( from.BeginAction( typeof( LightCycle ) ) )
			{
				new LightCycle.NightSightTimer( from ).Start();

				if( Server.Utilities.StartupSettings.LightingChanged )
					from.LightLevel = 15;
				else if( from.Map != Map.Trammel )
					from.LightLevel = LightCycle.DungeonLevel / 2;
				else
					from.LightLevel = 6;

				from.FixedParticles( 0x376A, 9, 32, 5007, EffectLayer.Waist );
				from.PlaySound( 0x1E3 );

				BasePotion.PlayDrinkEffect( from );

				this.Consume();
			}
			else
			{
				from.SendMessage( "You already have nightsight." );
			}
		}
        public override void Drink( Mobile from )
        {
            if (from.Mana < from.ManaMax)
            {
                if (MortalStrike.IsWounded(from)) // if (from.Poisoned || MortalStrike.IsWounded(from))
                {
                    from.LocalOverheadMessage(MessageType.Regular, 0x22, 1005000); // You can not heal yourself in your current state.
                }
                else
                {
                    if (from.BeginAction(typeof(BaseHealPotion)))
                    {
                        DoMana(from);

                        BasePotion.PlayDrinkEffect(from);

                        this.Consume(); // this.Consume();

                        Timer.DelayCall(TimeSpan.FromSeconds(Delay), new TimerStateCallback(ReleaseManaLock), from);
                    }
                    else
                    {
                        from.SendMessage(0x22, "Voce nao pode usar outra potion em tao pouco tempo");
                        //from.LocalOverheadMessage(MessageType.Regular, 0x22, 500235); // You must wait 10 seconds before using another healing potion.
                    }
                }
            }
            else
            {
                from.SendMessage(0x22, "Voce decide nao usar a potion, pois esta com Mana cheia");
                //from.SendLocalizedMessage( 1049547 ); // You decide against drinking this potion, as you are already at full health.
            }
        }
		public override bool Drink( Mobile from )
		{
			if ( from.RawStr > 10 )
			{
				if ( from.BeginAction( typeof( BaseCripplePotion ) ) )
				{
					DoStatLoss( from );

					BasePotion.PlayDrinkEffect( from );

					this.Consume();

					new DelayTimer( from ).Start();

					return true;
				}
				else
					from.LocalOverheadMessage( MessageType.Regular, 0x22, true, "You must wait for your body to adjust to the potion." );
			}
			else
			{
				from.SendMessage( "You decide against drinking this potion, as you are already fairly crippled." );
			}

			return false;
		}
		public override void Drink( Mobile from )
		{
			if ( from.Mana < from.ManaMax )
			{
				if ( from.Poisoned || MortalStrike.IsWounded( from ) )
				{
					from.SendMessage( "You cannot use this in your current state." );
				}
				else
				{
					if ( from.BeginAction( typeof( BaseManaPotion ) ) )
					{
						DoMana( from );

						BasePotion.PlayDrinkEffect( from );

						this.Consume();

						Timer.DelayCall( TimeSpan.FromSeconds( Delay ), new TimerStateCallback( ReleaseManaLock ), from );
					}
					else
					{
						from.SendMessage( "You must wait to use another mana potion." );
					}
				}
			}
			else
			{
				from.SendMessage( "You are already at full mana." ); 
			}
		}
Example #12
0
		public override bool Use( Mobile from ) {
			if ( from.BeginAction( typeof( ClarityPotion ) ) ) {
				int amount = Utility.Dice( 3, 3, 3 );
				int time = Utility.RandomMinMax( 5, 30 );

				from.PlaySound( 0x2D6 );

				if ( from.Body.IsHuman ) {
					from.Animate( 34, 5, 1, true, false, 0 );
				}

				from.FixedParticles( 0x375A, 10, 15, 5011, EffectLayer.Head );
				from.PlaySound( 0x1EB );

				StatMod mod = from.GetStatMod( "Concussion" );

				if ( mod != null ) {
					from.RemoveStatMod( "Concussion" );
					from.Mana -= mod.Offset;
				}

				from.PlaySound( 0x1EE );
				from.AddStatMod( new StatMod( StatType.Int, "clarity-potion", amount, TimeSpan.FromMinutes( time ) ) );

				Timer.DelayCall( TimeSpan.FromMinutes( time ), delegate() {
					from.EndAction( typeof( ClarityPotion ) );
				} );

				return true;
			}

			return false;
		}
Example #13
0
		protected override void OnTarget( Mobile from, object o )
		{
			IPoint3D ip = o as IPoint3D;

			if ( ip != null )
			{
				if ( ip is Item )
					ip = ((Item)ip).GetWorldTop();

				Point3D p = new Point3D( ip );

				Region reg = Region.Find( new Point3D( p ), from.Map );

				if ( from.AccessLevel >= AccessLevel.GameMaster || reg.AllowHousing( from, p ) )
					m_Deed.OnPlacement( from, p );
				else if ( reg.IsPartOf( typeof( TempNoHousingRegion ) ) )
					from.SendLocalizedMessage( 501270 ); // Lord British has decreed a 'no build' period, thus you cannot build this house at this time.
				else if ( reg.IsPartOf( typeof( TreasureRegion ) ) || reg.IsPartOf( typeof( HouseRegion ) ) )
					from.SendLocalizedMessage( 1043287 ); // The house could not be created here.  Either something is blocking the house, or the house would not be on valid terrain.
				else
					from.SendLocalizedMessage( 501265 ); // Housing can not be created in this area.

                if (HouseSystemController._MaxPlaceDelay > 0)
                {
                    from.BeginAction(typeof(HouseDeed));
                    Timer.DelayCall<Mobile>(TimeSpan.FromSeconds(Utility.RandomMinMax(HouseSystemController._MinPlaceDelay, HouseSystemController._MaxPlaceDelay)), new TimerStateCallback<Mobile>(ReleasePlacementLock), from);
                }
                from.RevealingAction();
			}
		}
Example #14
0
        public override void Drink(Mobile from)
        {
            if (from.Hits < from.HitsMax)
            {
                if (from.Poisoned || MortalStrike.IsWounded(from))
                {
                    from.LocalOverheadMessage(MessageType.Regular, 0x22, 1005000); // You can not heal yourself in your current state.
                }
                else
                {
                    if (from.BeginAction(typeof(BaseHealPotion)))
                    {
                        //Plume : Addiction
                        if (from is PlayerMobile)
                        {
                            PlayerMobile drinker = from as PlayerMobile;
                           
                            double Addiction = drinker.CalculateHealAddiction(this);
                            
                            if(Addiction > 100)
                            {
                                drinker.SendMessage("Votre corps ne supporte plus ce traitement");
                                drinker.Poison = Poison.Lesser;          
                            }
                            else
                            {
                                double HealScalar = Addiction/100 * 0.95;
                                DoHeal(from, HealScalar);
                            }
                            drinker.IncAddiction(this);
                        }
                        else
                            DoHeal(from);

                        BasePotion.PlayDrinkEffect(from);

                        if (!Engines.ConPVP.DuelContext.IsFreeConsume(from))
                            this.Consume();

                        Timer.DelayCall(TimeSpan.FromSeconds(Delay), new TimerStateCallback(ReleaseHealLock), from);
                    }
                    else
                    {
                        from.LocalOverheadMessage(MessageType.Regular, 0x22, 500235); // You must wait 10 seconds before using another healing potion.
                    }
                }
            }
            else
            {
                from.SendLocalizedMessage(1049547); // You decide against drinking this potion, as you are already at full health.
            }
        }
Example #15
0
		public override void OnDoubleClick( Mobile from )
		{
			if ( from.CanBeginAction( this ) )
			{
				from.BeginAction( this );
				Timer.DelayCall<Mobile>( m_ShoutCooldown, EndLock, from );
			}

			MLQuestSystem.TurnToFace( this, from );
			from.SendGump( m_Gump );

			// Paperdoll doesn't open
			//base.OnDoubleClick( from );
		}
Example #16
0
        public override void Drink(Mobile from)
        {
            if (from.BeginAction(typeof(LightCycle)))
                new LightCycle.NightSightTimer(from).Start();
            from.LightLevel = LightCycle.DungeonLevel / 2;

            from.FixedParticles(0x376A, 9, 32, 5007, EffectLayer.Waist);
            from.PlaySound(0x1E3);

            BasePotion.PlayDrinkEffect(from);

            if (!Engines.ConPVP.DuelContext.IsFreeConsume(from))
                this.Consume();
        }
        public override void ApplyEffect( Mobile to, Mobile source, int intensity, Item itemSource )
        {
            if ( source != to && intensity < 0 )
                source.DoHarmful( to );

            if ( intensity > 0 )
            {
                if ( to.CanBeginAction( typeof( StaminaRegenerationEffect ) ) )
                {
                    to.BeginAction( typeof( StaminaRegenerationEffect ) );
                    Timer.DelayCall( TimeSpan.FromSeconds( 20 ), new TimerStateCallback( ReleaseStamRegenLock ), to ); // 20 sec delay
                }

                else
                    return;
            }

            BeginRegenerating( to, intensity, source );
        }
		public override void Drink( Mobile from )
		{

			int Delay = 5; // <- Added this line to set the delay between use
			if ( from.BeginAction( typeof( BaseFragmentationPotion ) ) ) // <- Added this line and set it to BaseFragmentationPotion
			{


			if ( Core.AOS && (from.Paralyzed || from.Frozen || (from.Spell != null && from.Spell.IsCasting)) )
			{
				from.SendLocalizedMessage( 1062725 ); // You can not use a purple potion while paralyzed.
				return;
			}

			ThrowTarget targ = from.Target as ThrowTarget;

			if ( targ != null && targ.Potion == this )
				return;

			from.RevealingAction();

			if ( m_Users == null )
				m_Users = new ArrayList();

			if ( !m_Users.Contains( from ) )
				m_Users.Add( from );

			from.Target = new ThrowTarget( this );

			Timer.DelayCall( TimeSpan.FromSeconds( Delay ), new TimerStateCallback( ReleaseExploderLock ), from ); // <- Added this line to set the timer for allowing you to throw another

			if ( m_Timer == null )
			{
				from.SendLocalizedMessage( 500236 ); // You should throw it now!
				m_Timer = Timer.DelayCall( TimeSpan.FromSeconds( 0.75 ), TimeSpan.FromSeconds( 1.0 ), 5, new TimerStateCallback( Detonate_OnTick ), new object[]{ from, Utility.RandomMinMax(3, 4) } );
			}
			}
			else
			{ 
                		from.SendMessage("You must wait a few seconds before using another explosion potion."); 
			}
					
		}
        public override void ApplyEffect( Mobile to, Mobile source, int intensity, Item itemSource )
        {
            if ( intensity > 0 )
            {
                if ( to.CanBeginAction( typeof( StaminaRestorationEffect ) ) && to.Stam < to.StamMax )
                {
                    to.Stam += BasePotion.Scale( to, (int)(intensity * Divisor) );
                    to.BeginAction( typeof( StaminaRestorationEffect ) );
                    Timer.DelayCall( TimeSpan.FromSeconds( 10 ), new TimerStateCallback( ReleaseStamLock ), to ); // 10 sec delay
                }
            }
            else
            {
                to.Stam -= BasePotion.Scale( to, (int)(-1 * intensity * Divisor) );

                if ( source != to ) // if it was thrown or something
                    source.DoHarmful( to );
            }
        }
Example #20
0
		public override void Drink( Mobile from )
		{
			if ( from.BeginAction( typeof( LightCycle ) ) )
			{
				new LightCycle.NightSightTimer( from ).Start();
				from.LightLevel = Math.Abs( LightCycle.DungeonLevel / 2 );

				from.FixedParticles( 0x376A, 9, 32, 5007, EffectLayer.Waist );
				from.PlaySound( 0x1E3 );

				BasePotion.PlayDrinkEffect( from );

				this.Delete();
			}
			else
			{
				from.SendMessage( "You already have nightsight." );
			}
		}
Example #21
0
public override void Drink( Mobile from )
{
	if ( from.BeginAction( typeof( LightCycle ) ) )
	{

// ** EDIT ** Time System

		//new LightCycle.NightSightTimer( from ).Start();
		//from.LightLevel = LightCycle.DungeonLevel / 2;

		from.FixedParticles( 0x376A, 9, 32, 5007, EffectLayer.Waist );
		from.PlaySound( 0x1E3 );

		BasePotion.PlayDrinkEffect( from );

		this.Consume();

		int oldLevel = LightCycle.DungeonLevel / 2;

		int level = TimeSystem.EffectsEngine.GetNightSightLevel(from, oldLevel);

		if (level > -1)
		{
			from.LightLevel = level;

			TimeSystem.EffectsEngine.SetNightSightOn(from, oldLevel);
		}
		else
		{
			from.EndAction(typeof(LightCycle));

			from.SendMessage("The potion seems to have no effect.");
		}

// ** END *** Time System

	}
	else
	{
		from.SendMessage( "You already have nightsight." );
	}
}
		public override void OnDoubleClick( Mobile from )
		{
			if (!IsChildOf(from.Backpack))
			{
				from.SendLocalizedMessage( 1042010 ); //You must have the object in your backpack to use it.
				return;
			}
			else
			{
				if ( from.BeginAction( typeof( PumpkinheadSummoner ) ) )
				{
					from.Target = new PumpkinheadTarget( from, this );
					
					new InternalTimer( from ).Start();
				}
				else
				{
					from.SendMessage( "You cannot summon Pumpkinhead yet" );
				}
			}
		}
Example #23
0
		public override bool Drink( Mobile from )
		{
			if ( from.Hits < from.HitsMax )
			{
				if ( from.Poisoned && !from.IsT2A|| MortalStrike.IsWounded( from ) )
				{
					from.LocalOverheadMessage(MessageType.Regular, 0x22, 1005000); // You can not heal yourself in your current state.
					return false;
				}
				else
				{
					if ( from.BeginAction( typeof( BaseHealPotion ) ) )
					{
                        CustomRegion region1 = from.Region as CustomRegion;

						DoHeal( from );

						BasePotion.PlayDrinkEffect( from );

                        if (!Engines.ConPVP.DuelContext.IsFreeConsume(from) && (region1 == null || !region1.PlayingGame(from)))
                            this.Consume();
						
						Timer.DelayCall<Mobile>( TimeSpan.FromSeconds( Delay ), new TimerStateCallback<Mobile>( ReleaseHealLock ), from );
					}
					else
					{
						from.LocalOverheadMessage( MessageType.Regular, 0x22, 500235 ); // You must wait 10 seconds before using another healing potion.
						return false;
					}
				}
			}
			else
			{
				from.SendLocalizedMessage(1049547); // You decide against drinking this potion, as you are already at full health.
				return false;
			}

			return true;
		}
Example #24
0
        public static void DismountAttack( Mobile from, Mobile target )
        {
            target.Damage( 1, from );

            IMount mt = target.Mount;

            if ( mt != null )
            {
                mt.Rider = null;
            }

            if ( target.IsPlayer )
            {
                target.BeginAction( typeof( BaseMount ) );

                target.SendLocalizedMessage( 1040023 ); // You have been knocked off of your mount!

                target.EndAction( typeof( BaseMount ) );
            }

            from.DoHarmful( target );
        }
        public override void ApplyEffect(Mobile to, Mobile source, int intensity, Item itemSource)
        {
            if (to.BeginAction(typeof(LightCycle)))
            {
                int oldLevel = to.LightLevel;

                int level = TimeSystem.EffectsEngine.GetNightSightLevel(to, oldLevel);

                if (level > -1)
                {
                    to.LightLevel = level;

                    TimeSystem.EffectsEngine.SetNightSightOn(to, oldLevel);
                }
                else
                {
                    to.EndAction(typeof(LightCycle));

                    to.SendMessage("The potion seems to have no effect.");
                }
            }
        }
Example #26
0
		public override bool Drink( Mobile from )
		{
			if ( from.BeginAction( typeof( LightCycle ) ) )
			{
				new LightCycle.NightSightTimer( from ).Start();
				from.LightLevel = LightCycle.DungeonLevel / 2;

				from.FixedParticles( 0x376A, 9, 32, 5007, EffectLayer.Waist );
				from.PlaySound( 0x1E3 );

				BasePotion.PlayDrinkEffect( from );

				if ( !Engines.ConPVP.DuelContext.IsFreeConsume( from ) )
					this.Consume();
			}
			else
			{
				from.SendMessage( "You already have nightsight." );
				return false;
			}

			return true;
		}
		public override void Drink( Mobile from )
		{
			
			
		if ( from.BeginAction( typeof( BaseConfusionBlastPotion ) ) )
		{	
			
			ThrowTarget targ = from.Target as ThrowTarget;

			if ( targ != null && targ.Potion == this )
				return;

			from.RevealingAction();

			from.Target = new ThrowTarget( this );
			Timer.DelayCall( TimeSpan.FromSeconds( Delay ),new TimerStateCallback( Release ), from );
		}
		else
			{
			 from.SendMessage("You must wait 10 seconds to use this potion" );					
			}		
		
		}
Example #28
0
        public override void Drink(Mobile from)
        {
            if (from.BeginAction(typeof(LightCycle)))
            {
                m_Time = IntensifiedTime ? 45 : 20;
                //Plume : Addiction
                if (from is PlayerMobile)
                {
                    PlayerMobile drinker = from as PlayerMobile;

                    double Addiction = drinker.CalculateHealAddiction(this);

                    if (Addiction > 100)
                    {
                        drinker.SendMessage("Votre corps ne supporte plus ce traitement");
                        drinker.Poison = Poison.Lesser;
                        drinker.Hunger = 0;
                    }

                    m_Time -= drinker.CalculateNightSightAddiction(this);
                }
                new LightCycle.PotionNightSightTimer(from, this).Start();
                from.LightLevel = LightCycle.DungeonLevel / 2;

                from.FixedParticles(0x376A, 9, 32, 5007, EffectLayer.Waist);
                from.PlaySound(0x1E3);

                BasePotion.PlayDrinkEffect(from);

                if (!Engines.ConPVP.DuelContext.IsFreeConsume(from))
                    this.Consume();
            }
            else
            {
                from.SendMessage("You already have nightsight.");
            }
        }
        protected override void OnTarget( Mobile from, object targeted )
        {
            Container cont = targeted as Container;

            from.EndAction( typeof( Imbuing ) );

            if ( !Soulforge.CheckProximity( from, 2 ) )
                from.SendLocalizedMessage( 1080433 ); // You must be near a soulforge to magically unravel an item.
            else if ( !Soulforge.CheckQueen( from ) )
                from.SendLocalizedMessage( 1113736 ); // You must rise to the rank of noble in the eyes of the Gargoyle Queen before her majesty will allow you to use this soulforge.
            else if ( cont == null )
                from.SendLocalizedMessage( 1111814, "0\t0" ); // Unraveled: ~1_COUNT~/~2_NUM~ items
            else if ( !cont.IsChildOf( from.Backpack ) )
                from.SendLocalizedMessage( 1062334 ); // This item must be in your backpack to be used.
            else if ( HasSpecialMaterialItem( cont ) )
            {
                from.BeginAction( typeof( Imbuing ) );
                from.SendGump( new ConfirmUnravelContainerGump( cont ) );
            }
            else
            {
                Unraveling.UnravelContainer( from, cont );
            }
        }
        public override void Drink( Mobile from )
        {
            if ( from.Hits < from.HitsMax )
            {
                if ( from.BeginAction( typeof( BaseHealPotion ) ) )
                {
                    DoHeal( from );

                    BasePotion.PlayDrinkEffect( from );

                    this.Delete();

                    Timer.DelayCall( TimeSpan.FromSeconds( 10.0 ), new TimerStateCallback( ReleaseHealLock ), from );
                }
                else
                {
                    from.LocalOverheadMessage( MessageType.Regular, 0x22, 500235 ); // You must wait 10 seconds before using another healing potion.
                }
            }
            else
            {
                from.SendLocalizedMessage( 1049547 ); // You decide against drinking this potion, as you are already at full health.
            }
        }