Wand fixes:

- Wands can now be pigmented.
- Corrected ML weapon speed.
- Added SC/FC-1/MW properties for new wands.
- Added message for when the wand is used while it is recharging.
- Clumsy/Feeblemind/Mana Drain/Weakness wands no longer drop if Core.ML.
- Max charges are now 109 for all ML available wands, if Core.ML.
- Wands now have a cast delay if Core.ML.
- Moved RevealingAction for wands from spell casting to spell targeting.
This commit is contained in:
eos 2012-04-29 01:49:56 +00:00
parent 96725e7ea8
commit 31185a874f
10 changed files with 39 additions and 18 deletions

View file

@ -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 )
{

View file

@ -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 )
{
}

View file

@ -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 )
{
}

View file

@ -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 )
{
}

View file

@ -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 )
{
}

View file

@ -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 )
{
}

View file

@ -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 )
{
}

View file

@ -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()

View file

@ -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 )

View file

@ -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 )
{