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; }
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." ); }
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(); } }
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 } ); } }
public static TimeSpan OnUse( Mobile m ) { m.BeginAction( typeof( Engines.Imbuing.Imbuing ) ); m.SendGump( new Engines.Imbuing.ImbuingMainGump() ); return TimeSpan.FromSeconds( 1.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. } }
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" ); } }
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." ); } }
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 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. } }
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 ); }
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 ( 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 ); } }
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 ) { 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." ); } }
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 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" ); } } }
public static void DismountAttack(Mobile from, Mobile target) { target.Damage(1, from); IMount mt = target.Mount; if (mt != null) { mt.Rider = null; } if (target is PlayerMobile) { 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."); } } }
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 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; }
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); }
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" ); } }
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."); } }
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. } }
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 ); } }