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:
parent
96725e7ea8
commit
31185a874f
10 changed files with 39 additions and 18 deletions
|
|
@ -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 )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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 )
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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 )
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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 )
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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 )
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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 )
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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 )
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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 )
|
||||
|
|
|
|||
|
|
@ -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 )
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue