diff --git a/Scripts/Items/Wands/BaseWand.cs b/Scripts/Items/Wands/BaseWand.cs index 694db2b7f..c501aaa5e 100644 --- a/Scripts/Items/Wands/BaseWand.cs +++ b/Scripts/Items/Wands/BaseWand.cs @@ -22,7 +22,7 @@ namespace Server.Items ManaDraining } - public abstract class BaseWand : BaseBashing + public abstract class BaseWand : BaseBashing, ITokunoDyable { public override WeaponAbility PrimaryAbility { get { return WeaponAbility.Dismount; } } public override WeaponAbility SecondaryAbility { get { return WeaponAbility.Disarm; } } @@ -31,6 +31,7 @@ namespace Server.Items public override int AosMinDamage { get { return 9; } } public override int AosMaxDamage { get { return 11; } } public override int AosSpeed { get { return 40; } } + public override float MlSpeed{ get{ return 2.75f; } } public override int OldStrengthReq { get { return 0; } } public override int OldMinDamage { get { return 2; } } @@ -64,6 +65,9 @@ namespace Server.Items Weight = 1.0; Effect = effect; Charges = Utility.RandomMinMax( minCharges, maxCharges ); + Attributes.SpellChanneling = 1; + Attributes.CastSpeed = -1; + WeaponAttributes.MageWeapon = Utility.RandomMinMax( 1, 10 ); } public void ConsumeCharge( Mobile from ) @@ -94,7 +98,10 @@ namespace Server.Items public override void OnDoubleClick( Mobile from ) { if ( !from.CanBeginAction( typeof( BaseWand ) ) ) + { + from.SendLocalizedMessage( 1070860 ); // You must wait a moment for the wand to recharge. return; + } if ( Parent == from ) { diff --git a/Scripts/Items/Wands/FireballWand.cs b/Scripts/Items/Wands/FireballWand.cs index d795367d6..395864dba 100644 --- a/Scripts/Items/Wands/FireballWand.cs +++ b/Scripts/Items/Wands/FireballWand.cs @@ -8,7 +8,7 @@ namespace Server.Items public class FireballWand : BaseWand { [Constructable] - public FireballWand() : base( WandEffect.Fireball, 5, 15 ) + public FireballWand() : base( WandEffect.Fireball, 5, Core.ML ? 109 : 15 ) { } diff --git a/Scripts/Items/Wands/GreaterHealWand.cs b/Scripts/Items/Wands/GreaterHealWand.cs index 6c087d643..3883bfa34 100644 --- a/Scripts/Items/Wands/GreaterHealWand.cs +++ b/Scripts/Items/Wands/GreaterHealWand.cs @@ -8,7 +8,7 @@ namespace Server.Items public class GreaterHealWand : BaseWand { [Constructable] - public GreaterHealWand() : base( WandEffect.GreaterHealing, 1, 5 ) + public GreaterHealWand() : base( WandEffect.GreaterHealing, 1, Core.ML ? 109 : 5 ) { } diff --git a/Scripts/Items/Wands/HarmWand.cs b/Scripts/Items/Wands/HarmWand.cs index cf0053283..1112250a5 100644 --- a/Scripts/Items/Wands/HarmWand.cs +++ b/Scripts/Items/Wands/HarmWand.cs @@ -8,7 +8,7 @@ namespace Server.Items public class HarmWand : BaseWand { [Constructable] - public HarmWand() : base( WandEffect.Harming, 5, 30 ) + public HarmWand() : base( WandEffect.Harming, 5, Core.ML ? 109 : 30 ) { } diff --git a/Scripts/Items/Wands/HealWand.cs b/Scripts/Items/Wands/HealWand.cs index 9a5fe358b..23671ef0e 100644 --- a/Scripts/Items/Wands/HealWand.cs +++ b/Scripts/Items/Wands/HealWand.cs @@ -8,7 +8,7 @@ namespace Server.Items public class HealWand : BaseWand { [Constructable] - public HealWand() : base( WandEffect.Healing, 10, 25 ) + public HealWand() : base( WandEffect.Healing, 10, Core.ML ? 109 : 25 ) { } diff --git a/Scripts/Items/Wands/LightningWand.cs b/Scripts/Items/Wands/LightningWand.cs index 18cb3e315..040854ef3 100644 --- a/Scripts/Items/Wands/LightningWand.cs +++ b/Scripts/Items/Wands/LightningWand.cs @@ -8,7 +8,7 @@ namespace Server.Items public class LightningWand : BaseWand { [Constructable] - public LightningWand() : base( WandEffect.Lightning, 5, 20 ) + public LightningWand() : base( WandEffect.Lightning, 5, Core.ML ? 109 : 20 ) { } diff --git a/Scripts/Items/Wands/MagicArrowWand.cs b/Scripts/Items/Wands/MagicArrowWand.cs index 6b6af3ffd..06a9ccdcd 100644 --- a/Scripts/Items/Wands/MagicArrowWand.cs +++ b/Scripts/Items/Wands/MagicArrowWand.cs @@ -8,7 +8,7 @@ namespace Server.Items public class MagicArrowWand : BaseWand { [Constructable] - public MagicArrowWand() : base( WandEffect.MagicArrow, 5, 30 ) + public MagicArrowWand() : base( WandEffect.MagicArrow, 5, Core.ML ? 109 : 30 ) { } diff --git a/Scripts/Misc/Loot.cs b/Scripts/Misc/Loot.cs index 1782c218d..c0fcb808a 100644 --- a/Scripts/Misc/Loot.cs +++ b/Scripts/Misc/Loot.cs @@ -314,12 +314,17 @@ namespace Server public static Type[] TavarasJournalTypes{ get{ return m_TavarasJournalTypes; } } + private static Type[] m_NewWandTypes = new Type[] + { + typeof( FireballWand ), typeof( LightningWand ), typeof( MagicArrowWand ), + typeof( GreaterHealWand ), typeof( HarmWand ), typeof( HealWand ) + }; + public static Type[] NewWandTypes{ get{ return m_NewWandTypes; } } + private static Type[] m_WandTypes = new Type[] { - typeof( ClumsyWand ), typeof( FeebleWand ), typeof( FireballWand ), - typeof( GreaterHealWand ), typeof( HarmWand ), typeof( HealWand ), - typeof( LightningWand ), typeof( MagicArrowWand ), typeof( ManaDrainWand ), - typeof( WeaknessWand ) + typeof( ClumsyWand ), typeof( FeebleWand ), + typeof( ManaDrainWand ), typeof( WeaknessWand ) }; public static Type[] WandTypes{ get{ return m_WandTypes; } } @@ -410,10 +415,12 @@ namespace Server public static BaseWand RandomWand() { - if ( !Core.AOS ) - return Construct( m_OldWandTypes, m_WandTypes ) as BaseWand; - - return Construct( m_WandTypes ) as BaseWand; + if ( Core.ML ) + return Construct( m_NewWandTypes ) as BaseWand; + else if ( Core.AOS ) + return Construct( m_WandTypes, m_NewWandTypes ) as BaseWand; + else + return Construct( m_OldWandTypes, m_WandTypes, m_NewWandTypes ) as BaseWand; } public static BaseClothing RandomClothing() diff --git a/Scripts/Spells/Base/MagerySpell.cs b/Scripts/Spells/Base/MagerySpell.cs index 96764cda8..3c8bab783 100644 --- a/Scripts/Spells/Base/MagerySpell.cs +++ b/Scripts/Spells/Base/MagerySpell.cs @@ -96,7 +96,7 @@ namespace Server.Spells public override TimeSpan GetCastDelay() { - if( Scroll is BaseWand ) + if( !Core.ML && Scroll is BaseWand ) return TimeSpan.Zero; if( !Core.AOS ) diff --git a/Scripts/Spells/Base/Spell.cs b/Scripts/Spells/Base/Spell.cs index b3cbd12b5..6203529b1 100644 --- a/Scripts/Spells/Base/Spell.cs +++ b/Scripts/Spells/Base/Spell.cs @@ -491,6 +491,10 @@ namespace Server.Spells { return false; } + else if ( m_Scroll is BaseWand && m_Caster.Spell != null && m_Caster.Spell.IsCasting ) + { + m_Caster.SendLocalizedMessage( 502643 ); // You can not cast a spell while frozen. + } else if ( m_Caster.Spell != null && m_Caster.Spell.IsCasting ) { m_Caster.SendLocalizedMessage( 502642 ); // You are already casting a spell. @@ -523,7 +527,7 @@ namespace Server.Spells m_State = SpellState.Casting; m_Caster.Spell = this; - if ( RevealOnCast ) + if ( !( m_Scroll is BaseWand ) && RevealOnCast ) m_Caster.RevealingAction(); SayMantra(); @@ -671,7 +675,7 @@ namespace Server.Spells public virtual TimeSpan GetCastDelay() { if ( m_Scroll is BaseWand ) - return TimeSpan.Zero; + return Core.ML ? CastDelayBase : TimeSpan.Zero; // TODO: Should FC apply to wands? // Faster casting cap of 2 (if not using the protection spell) // Faster casting cap of 0 (if using the protection spell) @@ -757,7 +761,10 @@ namespace Server.Spells if ( m_Scroll is SpellScroll ) m_Scroll.Consume(); else if ( m_Scroll is BaseWand ) + { ((BaseWand)m_Scroll).ConsumeCharge( m_Caster ); + m_Caster.RevealingAction(); + } if ( m_Scroll is BaseWand ) {