This commit is contained in:
mark 2009-07-19 05:13:25 +00:00
parent cc7814db35
commit bcdee05c6c
83 changed files with 268 additions and 146 deletions

View file

@ -582,7 +582,7 @@ namespace Server.Mobiles
}
}
if ( m_Mobile.Spell == null && DateTime.Now > m_NextCastTime && m_Mobile.InRange( c, 12 ) )
if ( m_Mobile.Spell == null && DateTime.Now > m_NextCastTime && m_Mobile.InRange( c, Core.ML ? 10 : 12 ) )
{
// We are ready to cast a spell
@ -621,7 +621,7 @@ namespace Server.Mobiles
{
if ( m_Mobile.InRange( toDispel, 10 ) )
RunFrom( toDispel );
else if ( !m_Mobile.InRange( toDispel, 12 ) )
else if ( !m_Mobile.InRange( toDispel, Core.ML ? 10 : 12 ) )
RunTo( toDispel );
}
else
@ -722,7 +722,7 @@ namespace Server.Mobiles
Mobile comb = m_Mobile.Combatant;
if ( comb != null && !comb.Deleted && comb.Alive && !comb.IsDeadBondedPet && m_Mobile.InRange( comb, 12 ) && CanDispel( comb ) )
if ( comb != null && !comb.Deleted && comb.Alive && !comb.IsDeadBondedPet && m_Mobile.InRange( comb, Core.ML ? 10 : 12 ) && CanDispel( comb ) )
{
active = comb;
activePrio = m_Mobile.GetDistanceToSqrt( comb );
@ -736,7 +736,7 @@ namespace Server.Mobiles
AggressorInfo info = aggressed[i];
Mobile m = info.Defender;
if ( m != comb && m.Combatant == m_Mobile && m_Mobile.InRange( m, 12 ) && CanDispel( m ) )
if ( m != comb && m.Combatant == m_Mobile && m_Mobile.InRange( m, Core.ML ? 10 : 12 ) && CanDispel( m ) )
{
double prio = m_Mobile.GetDistanceToSqrt( m );
@ -756,7 +756,7 @@ namespace Server.Mobiles
AggressorInfo info = aggressors[i];
Mobile m = info.Attacker;
if ( m != comb && m.Combatant == m_Mobile && m_Mobile.InRange( m, 12 ) && CanDispel( m ) )
if ( m != comb && m.Combatant == m_Mobile && m_Mobile.InRange( m, Core.ML ? 10 : 12 ) && CanDispel( m ) )
{
double prio = m_Mobile.GetDistanceToSqrt( m );
@ -790,7 +790,7 @@ namespace Server.Mobiles
actPrio = inactPrio = m_Mobile.GetDistanceToSqrt( comb );
}
foreach ( Mobile m in m_Mobile.GetMobilesInRange( 12 ) )
foreach ( Mobile m in m_Mobile.GetMobilesInRange( Core.ML ? 10 : 12 ) )
{
if ( m != m_Mobile && CanDispel( m ) )
{
@ -964,7 +964,7 @@ namespace Server.Mobiles
int teleRange = targ.Range;
if ( teleRange < 0 )
teleRange = 12;
teleRange = Core.ML ? 11 : 12;
for ( int i = 0; i < 10; ++i )
{

View file

@ -242,8 +242,6 @@ namespace Server.Mobiles
private bool m_IsPrisoner;
private Timer m_GhostDeletionTimer;
#endregion
public virtual InhumanSpeech SpeechType{ get{ return null; } }
@ -251,11 +249,7 @@ namespace Server.Mobiles
public bool IsStabled
{
get{ return m_IsStabled; }
set
{
m_IsStabled = value;
SetGhostDeletionTimer( !m_IsStabled );
}
set{ m_IsStabled = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
@ -1732,8 +1726,6 @@ namespace Server.Mobiles
if ( IsAnimatedDead )
Spells.Necromancy.AnimateDeadSpell.Register( m_SummonMaster, this );
SetGhostDeletionTimer( true );
}
public virtual bool IsHumanInTown()
@ -1930,7 +1922,7 @@ namespace Server.Mobiles
if ( master != null && master == from ) //So friends can't start the bonding process
{
if ( m_dMinTameSkill <= 29.1 || master.Skills[SkillName.AnimalTaming].Base >= m_dMinTameSkill || GetControlChance( master, true ) >= 1.0 )
if ( m_dMinTameSkill <= 29.1 || master.Skills[SkillName.AnimalTaming].Base >= m_dMinTameSkill || ( this is LesserHiryu && master.Skills[SkillName.Bushido].Base >= 90.0 ) )
{
if ( BondingBegin == DateTime.MinValue )
{
@ -4260,8 +4252,6 @@ namespace Server.Mobiles
GiftOfLifeSpell.HandleDeath( this );
CheckStatTimers();
SetGhostDeletionTimer( true );
}
else
{
@ -4881,26 +4871,8 @@ namespace Server.Mobiles
}
CheckStatTimers();
SetGhostDeletionTimer( false );
}
private void SetGhostDeletionTimer( bool running )
{
if( running && ( !IsDeadBondedPet || !Core.ML ) )
return;
if( m_GhostDeletionTimer != null )
m_GhostDeletionTimer.Stop();
if( !running )
return;
m_GhostDeletionTimer = new GhostDeletionTimer( this, TimeSpan.FromMinutes( 120 + Utility.Random( 120 ) ) );
m_GhostDeletionTimer.Start();
}
public override bool CanBeDamaged()
{
if ( IsDeadPet )
@ -4937,26 +4909,6 @@ namespace Server.Mobiles
[CommandProperty( AccessLevel.GameMaster )]
public int RemoveStep { get { return m_RemoveStep; } set { m_RemoveStep = value; } }
private class GhostDeletionTimer : Timer
{
private BaseCreature m_Creature;
public GhostDeletionTimer( BaseCreature Creature, TimeSpan delay ) : base( delay )
{
Priority = TimerPriority.FiveSeconds;
m_Creature = Creature;
}
protected override void OnTick()
{
if( Core.ML && m_Creature.IsDeadBondedPet )
{
m_Creature.Delete();
}
Stop();
}
}
}
public class LoyaltyTimer : Timer

View file

@ -45,7 +45,7 @@ namespace Server.Engines.BulkOrders
case 6: entries = LargeBulkEntry.ConvertEntries( this, LargeBulkEntry.Lady ); break;
case 7: entries = LargeBulkEntry.ConvertEntries( this, LargeBulkEntry.MaleLeatherSet ); useMaterials = true; break;
case 8: entries = LargeBulkEntry.ConvertEntries( this, LargeBulkEntry.Pirate ); break;
case 9: entries = LargeBulkEntry.ConvertEntries( this, LargeBulkEntry.ShoeSet ); break;
case 9: entries = LargeBulkEntry.ConvertEntries( this, LargeBulkEntry.ShoeSet ); useMaterials = Core.ML; break;
case 10: entries = LargeBulkEntry.ConvertEntries( this, LargeBulkEntry.StuddedSet ); useMaterials = true; break;
case 11: entries = LargeBulkEntry.ConvertEntries( this, LargeBulkEntry.TownCrier ); break;
case 12: entries = LargeBulkEntry.ConvertEntries( this, LargeBulkEntry.Wizard ); break;

View file

@ -913,7 +913,7 @@ namespace Server.Items
return true;
}
public bool Scissor( Mobile from, Scissors scissors )
public virtual bool Scissor( Mobile from, Scissors scissors )
{
if ( !IsChildOf( from.Backpack ) )
{

View file

@ -510,6 +510,44 @@ namespace Server.Items
}
}
public class MonkRobe : BaseOuterTorso
{
[Constructable]
public MonkRobe() : this( 0x21E )
{
}
[Constructable]
public MonkRobe( int hue ) : base( 0x2687, hue )
{
Weight = 1.0;
StrRequirement = 0;
}
public override int LabelNumber{ get{ return 1076584; } } // A monk's robe
public override bool CanBeBlessed { get { return false; } }
public override bool Dye( Mobile from, DyeTub sender )
{
from.SendLocalizedMessage( sender.FailMessage );
return false;
}
public MonkRobe( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
[Flipable( 0x2684, 0x2683 )]
public class HoodedShroudOfShadows : BaseOuterTorso
{
@ -725,7 +763,6 @@ namespace Server.Items
[Flipable( 0x2FB9, 0x3173 )]
public class MaleElvenRobe : BaseOuterTorso
{
// TODO: Supports arcane?
public override Race RequiredRace { get { return Race.Elf; } }
[Constructable]
@ -739,8 +776,6 @@ namespace Server.Items
Weight = 2.0;
}
public override bool AllowFemaleWearer{ get{ return false; } }
public MaleElvenRobe( Serial serial ) : base( serial )
{
}
@ -763,7 +798,6 @@ namespace Server.Items
[Flipable( 0x2FBA, 0x3174 )]
public class FemaleElvenRobe : BaseOuterTorso
{
// TODO: Supports arcane?
public override Race RequiredRace { get { return Race.Elf; } }
[Constructable]
public FemaleElvenRobe() : this( 0 )

View file

@ -16,6 +16,15 @@ namespace Server.Items
{
}
public override bool Scissor( Mobile from, Scissors scissors )
{
if( DefaultResource == CraftResource.None )
return base.Scissor( from, scissors );
from.SendLocalizedMessage( 502440 ); // Scissors can not be used on that to produce anything.
return false;
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
@ -293,7 +302,6 @@ namespace Server.Items
public override bool Dye( Mobile from, DyeTub sender )
{
from.SendLocalizedMessage( sender.FailMessage );
return false;
}
@ -433,6 +441,11 @@ namespace Server.Items
{
}
public override bool Dye( Mobile from, DyeTub sender )
{
return false;
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );

View file

@ -118,6 +118,18 @@ namespace Server.Items
{
}
public override bool Dye( Mobile from, DyeTub sender )
{
from.SendLocalizedMessage( sender.FailMessage );
return false;
}
public override bool Scissor( Mobile from, Scissors scissors )
{
from.SendLocalizedMessage( 502440 ); // Scissors can not be used on that to produce anything.
return false;
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );

View file

@ -222,7 +222,7 @@ namespace Server.Items
from.PlaySound( 0x23E );
}
}
else if ( (item is BaseArmor && (((BaseArmor)item).MaterialType == ArmorMaterialType.Leather || ((BaseArmor)item).MaterialType == ArmorMaterialType.Studded)) && m_Tub.AllowLeather )
else if ( (item is BaseArmor && (((BaseArmor)item).MaterialType == ArmorMaterialType.Leather || ((BaseArmor)item).MaterialType == ArmorMaterialType.Studded) || item is ElvenBoots) && m_Tub.AllowLeather )
{
if ( !from.InRange( m_Tub.GetWorldLocation(), 1 ) || !from.InRange( item.GetWorldLocation(), 1 ) )
{

View file

@ -477,6 +477,8 @@ namespace Server.Items
m_Props.Set( 3, true ); // remove mage armor from possible properties
if ( armor.Resource >= CraftResource.RegularLeather && armor.Resource <= CraftResource.BarbedLeather )
m_Props.Set( 0, true ); // remove lower requirements from possible properties for leather armor
if ( armor.RequiredRace == Race.Elf )
m_Props.Set( 7, true ); // elves inherently have night sight and elf only armor doesn't get night sight as a mod
for ( int i = 0; i < attributeCount; ++i )
{

View file

@ -15,8 +15,8 @@ namespace Server.Items
public override WeaponAbility SecondaryAbility{ get{ return WeaponAbility.MortalStrike; } }
public override int AosStrengthReq{ get{ return 30; } }
public override int AosMinDamage{ get{ return 16; } }
public override int AosMaxDamage{ get{ return 18; } }
public override int AosMinDamage{ get{ return Core.ML ? 15 : 16; } }
public override int AosMaxDamage{ get{ return Core.ML ? 19 : 18; } }
public override int AosSpeed{ get{ return 25; } }
public override int OldStrengthReq{ get{ return 20; } }

View file

@ -15,7 +15,7 @@ namespace Server.Items
public override WeaponAbility SecondaryAbility{ get{ return WeaponAbility.MovingShot; } }
public override int AosStrengthReq{ get{ return 45; } }
public override int AosMinDamage{ get{ return 15; } }
public override int AosMinDamage{ get{ return Core.ML ? 13 : 15; } }
public override int AosMaxDamage{ get{ return 17; } }
public override int AosSpeed{ get{ return 25; } }

View file

@ -16,7 +16,7 @@ namespace Server.Items
public override int AosStrengthReq{ get{ return 35; } }
public override int AosMinDamage{ get{ return 18; } }
public override int AosMaxDamage{ get{ return 20; } }
public override int AosMaxDamage{ get{ return Core.ML ? 22 : 20; } }
public override int AosSpeed{ get{ return 24; } }
public override int OldStrengthReq{ get{ return 30; } }

View file

@ -15,8 +15,8 @@ namespace Server.Items
public override WeaponAbility SecondaryAbility{ get{ return WeaponAbility.Dismount; } }
public override int AosStrengthReq{ get{ return 80; } }
public override int AosMinDamage{ get{ return 19; } }
public override int AosMaxDamage{ get{ return 20; } }
public override int AosMinDamage{ get{ return Core.ML ? 20 : 19; } }
public override int AosMaxDamage{ get{ return Core.ML ? 24 : 20; } }
public override int AosSpeed{ get{ return 22; } }
public override int OldStrengthReq{ get{ return 40; } }

View file

@ -15,7 +15,7 @@ namespace Server.Items
public override WeaponAbility SecondaryAbility{ get{ return WeaponAbility.MovingShot; } }
public override int AosStrengthReq{ get{ return 30; } }
public override int AosMinDamage{ get{ return 10; } }
public override int AosMinDamage{ get{ return Core.ML ? 8 : 10; } }
public override int AosMaxDamage{ get{ return 12; } }
public override int AosSpeed{ get{ return 41; } }

View file

@ -15,7 +15,7 @@ namespace Server.Items
public override WeaponAbility SecondaryAbility{ get{ return WeaponAbility.DoubleShot; } }
public override int AosStrengthReq{ get{ return 35; } }
public override int AosMinDamage{ get{ return 18; } }
public override int AosMinDamage{ get{ return Core.ML ? 16 : 18; } }
public override int AosMaxDamage{ get{ return 20; } }
public override int AosSpeed{ get{ return 25; } }

View file

@ -37,7 +37,6 @@ namespace Server.Mobiles
SetSkill( SkillName.Wrestling, 25.1, 40.0 );
Fame = 500;
Karma = -500;
VirtualArmor = 18;

View file

@ -0,0 +1,53 @@
using System;
using System.Collections;
using Server;
using Server.Items;
namespace Server.Mobiles
{
public class Monk : BaseVendor
{
private ArrayList m_SBInfos = new ArrayList();
protected override ArrayList SBInfos{ get { return m_SBInfos; } }
[Constructable]
public Monk() : base( "the Monk" )
{
SetSkill( SkillName.EvalInt, 100.0 );
SetSkill( SkillName.Tactics, 70.0, 90.0 );
SetSkill( SkillName.Wrestling, 70.0, 90.0 );
SetSkill( SkillName.MagicResist, 70.0, 90.0 );
SetSkill( SkillName.Macing, 70.0, 90.0 );
}
public override void InitSBInfo()
{
m_SBInfos.Add( new SBMonk() );
}
public override void InitOutfit()
{
AddItem( new Sandals() );
AddItem( new MonkRobe() );
}
public Monk( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,34 @@
using System;
using System.Collections;
using Server.Items;
namespace Server.Mobiles
{
public class SBMonk : SBInfo
{
private ArrayList m_BuyInfo = new InternalBuyInfo();
private IShopSellInfo m_SellInfo = new InternalSellInfo();
public SBMonk()
{
}
public override IShopSellInfo SellInfo { get { return m_SellInfo; } }
public override ArrayList BuyInfo { get { return m_BuyInfo; } }
public class InternalBuyInfo : ArrayList
{
public InternalBuyInfo()
{
Add( new GenericBuyInfo( typeof( MonkRobe ), 136, 20, 0x2687, 0x21E ) );
}
}
public class InternalSellInfo : GenericSellInfo
{
public InternalSellInfo()
{
}
}
}
}

View file

@ -96,7 +96,7 @@ namespace Server.Spells.Chivalry
{
private CleanseByFireSpell m_Owner;
public InternalTarget( CleanseByFireSpell owner ) : base( 12, false, TargetFlags.Beneficial )
public InternalTarget( CleanseByFireSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.Beneficial )
{
m_Owner = owner;
}

View file

@ -112,7 +112,7 @@ namespace Server.Spells.Chivalry
{
private RemoveCurseSpell m_Owner;
public InternalTarget( RemoveCurseSpell owner ) : base( 12, false, TargetFlags.Beneficial )
public InternalTarget( RemoveCurseSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.Beneficial )
{
m_Owner = owner;
}

View file

@ -141,7 +141,7 @@ namespace Server.Spells.Chivalry
{
private SacredJourneySpell m_Owner;
public InternalTarget( SacredJourneySpell owner ) : base( 12, false, TargetFlags.None )
public InternalTarget( SacredJourneySpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.None )
{
m_Owner = owner;
}

View file

@ -72,7 +72,7 @@ namespace Server.Spells.Eighth
{
private EnergyVortexSpell m_Owner;
public InternalTarget( EnergyVortexSpell owner ) : base( 12, true, TargetFlags.None )
public InternalTarget( EnergyVortexSpell owner ) : base( Core.ML ? 10 : 12, true, TargetFlags.None )
{
m_Owner = owner;
}

View file

@ -79,7 +79,7 @@ namespace Server.Spells.Fifth
{
private BladeSpiritsSpell m_Owner;
public InternalTarget( BladeSpiritsSpell owner ) : base( 12, true, TargetFlags.None )
public InternalTarget( BladeSpiritsSpell owner ) : base( Core.ML ? 10 : 12, true, TargetFlags.None )
{
m_Owner = owner;
}

View file

@ -62,7 +62,7 @@ namespace Server.Spells.Fifth
{
private DispelFieldSpell m_Owner;
public InternalTarget( DispelFieldSpell owner ) : base( 12, false, TargetFlags.None )
public InternalTarget( DispelFieldSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.None )
{
m_Owner = owner;
}

View file

@ -135,7 +135,7 @@ namespace Server.Spells.Fifth
{
private MindBlastSpell m_Owner;
public InternalTarget( MindBlastSpell owner ) : base( 12, false, TargetFlags.Harmful )
public InternalTarget( MindBlastSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.Harmful )
{
m_Owner = owner;
}

View file

@ -82,7 +82,7 @@ namespace Server.Spells.Fifth
{
private ParalyzeSpell m_Owner;
public InternalTarget( ParalyzeSpell owner ) : base( 12, false, TargetFlags.Harmful )
public InternalTarget( ParalyzeSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.Harmful )
{
m_Owner = owner;
}

View file

@ -275,7 +275,7 @@ namespace Server.Spells.Fifth
{
private PoisonFieldSpell m_Owner;
public InternalTarget( PoisonFieldSpell owner ) : base( 12, true, TargetFlags.None )
public InternalTarget( PoisonFieldSpell owner ) : base( Core.ML ? 10 : 12, true, TargetFlags.None )
{
m_Owner = owner;
}

View file

@ -60,7 +60,7 @@ namespace Server.Spells.First
{
private ClumsySpell m_Owner;
public InternalTarget( ClumsySpell owner ) : base( 12, false, TargetFlags.Harmful )
public InternalTarget( ClumsySpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.Harmful )
{
m_Owner = owner;
}

View file

@ -60,7 +60,7 @@ namespace Server.Spells.First
{
private FeeblemindSpell m_Owner;
public InternalTarget( FeeblemindSpell owner ) : base( 12, false, TargetFlags.Harmful )
public InternalTarget( FeeblemindSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.Harmful )
{
m_Owner = owner;
}

View file

@ -84,7 +84,7 @@ namespace Server.Spells.First
{
private HealSpell m_Owner;
public InternalTarget( HealSpell owner ) : base( 12, false, TargetFlags.Beneficial )
public InternalTarget( HealSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.Beneficial )
{
m_Owner = owner;
}

View file

@ -75,7 +75,7 @@ namespace Server.Spells.First
{
private MagicArrowSpell m_Owner;
public InternalTarget( MagicArrowSpell owner ) : base( 12, false, TargetFlags.Harmful )
public InternalTarget( MagicArrowSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.Harmful )
{
m_Owner = owner;
}

View file

@ -60,7 +60,7 @@ namespace Server.Spells.First
{
private WeakenSpell m_Owner;
public InternalTarget( WeakenSpell owner ) : base( 12, false, TargetFlags.Harmful )
public InternalTarget( WeakenSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.Harmful )
{
m_Owner = owner;
}

View file

@ -123,7 +123,7 @@ namespace Server.Spells.Fourth
{
private ArchCureSpell m_Owner;
public InternalTarget( ArchCureSpell owner ) : base( 12, true, TargetFlags.None )
public InternalTarget( ArchCureSpell owner ) : base( Core.ML ? 10 : 12, true, TargetFlags.None )
{
m_Owner = owner;
}

View file

@ -133,7 +133,7 @@ namespace Server.Spells.Fourth
{
private ArchProtectionSpell m_Owner;
public InternalTarget( ArchProtectionSpell owner ) : base( 12, true, TargetFlags.None )
public InternalTarget( ArchProtectionSpell owner ) : base( Core.ML ? 10 : 12, true, TargetFlags.None )
{
m_Owner = owner;
}

View file

@ -91,7 +91,7 @@ namespace Server.Spells.Fourth
{
private CurseSpell m_Owner;
public InternalTarget( CurseSpell owner ) : base( 12, false, TargetFlags.Harmful )
public InternalTarget( CurseSpell owner ) : base( Core.ML? 10 : 12, false, TargetFlags.Harmful )
{
m_Owner = owner;
}

View file

@ -282,7 +282,7 @@ namespace Server.Spells.Fourth
{
private FireFieldSpell m_Owner;
public InternalTarget( FireFieldSpell owner ) : base( 12, true, TargetFlags.None )
public InternalTarget( FireFieldSpell owner ) : base( Core.ML ? 10 : 12, true, TargetFlags.None )
{
m_Owner = owner;
}

View file

@ -74,7 +74,7 @@ namespace Server.Spells.Fourth
{
private GreaterHealSpell m_Owner;
public InternalTarget( GreaterHealSpell owner ) : base( 12, false, TargetFlags.Beneficial )
public InternalTarget( GreaterHealSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.Beneficial )
{
m_Owner = owner;
}

View file

@ -71,7 +71,7 @@ namespace Server.Spells.Fourth
{
private LightningSpell m_Owner;
public InternalTarget( LightningSpell owner ) : base( 12, false, TargetFlags.Harmful )
public InternalTarget( LightningSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.Harmful )
{
m_Owner = owner;
}

View file

@ -112,7 +112,7 @@ namespace Server.Spells.Fourth
{
private ManaDrainSpell m_Owner;
public InternalTarget( ManaDrainSpell owner ) : base( 12, false, TargetFlags.Harmful )
public InternalTarget( ManaDrainSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.Harmful )
{
m_Owner = owner;
}

View file

@ -146,7 +146,7 @@ namespace Server.Spells.Fourth
{
private RecallSpell m_Owner;
public InternalTarget( RecallSpell owner ) : base( 12, false, TargetFlags.None )
public InternalTarget( RecallSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.None )
{
m_Owner = owner;

View file

@ -403,7 +403,7 @@ namespace Server.Spells.Necromancy
{
private AnimateDeadSpell m_Owner;
public InternalTarget( AnimateDeadSpell owner ) : base( 12, false, TargetFlags.None )
public InternalTarget( AnimateDeadSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.None )
{
m_Owner = owner;
}

View file

@ -140,11 +140,17 @@ namespace Server.Spells.Necromancy
}
public void DoExpire()
{
m_Caster.SendLocalizedMessage( 1061620 ); // Your Blood Oath has been broken.
m_Target.SendLocalizedMessage( 1061620 ); // Your Blood Oath has been broken.
if( m_OathTable.Contains( m_Caster ) )
{
m_Caster.SendLocalizedMessage( 1061620 ); // Your Blood Oath has been broken.
m_OathTable.Remove ( m_Caster );
}
m_OathTable.Remove ( m_Caster );
m_OathTable.Remove ( m_Target );
if( m_OathTable.Contains( m_Target ) )
{
m_Target.SendLocalizedMessage( 1061620 ); // Your Blood Oath has been broken.
m_OathTable.Remove ( m_Target );
}
Stop ();
@ -159,7 +165,7 @@ namespace Server.Spells.Necromancy
{
private BloodOathSpell m_Owner;
public InternalTarget( BloodOathSpell owner ) : base( 12, false, TargetFlags.Harmful )
public InternalTarget( BloodOathSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.Harmful )
{
m_Owner = owner;
}

View file

@ -132,7 +132,7 @@ namespace Server.Spells.Necromancy
{
private CorpseSkinSpell m_Owner;
public InternalTarget( CorpseSkinSpell owner ) : base( 12, false, TargetFlags.Harmful )
public InternalTarget( CorpseSkinSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.Harmful )
{
m_Owner = owner;
}

View file

@ -95,7 +95,7 @@ namespace Server.Spells.Necromancy
{
private EvilOmenSpell m_Owner;
public InternalTarget( EvilOmenSpell owner ) : base( 12, false, TargetFlags.Harmful )
public InternalTarget( EvilOmenSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.Harmful )
{
m_Owner = owner;
}

View file

@ -109,7 +109,7 @@ namespace Server.Spells.Necromancy
{
private MindRotSpell m_Owner;
public InternalTarget( MindRotSpell owner ) : base( 12, false, TargetFlags.Harmful )
public InternalTarget( MindRotSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.Harmful )
{
m_Owner = owner;
}

View file

@ -119,7 +119,7 @@ namespace Server.Spells.Necromancy
{
private PainSpikeSpell m_Owner;
public InternalTarget( PainSpikeSpell owner ) : base( 12, false, TargetFlags.Harmful )
public InternalTarget( PainSpikeSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.Harmful )
{
m_Owner = owner;
}

View file

@ -94,7 +94,7 @@ namespace Server.Spells.Necromancy
private PoisonStrikeSpell m_Owner;
public InternalTarget( PoisonStrikeSpell owner )
: base( 12, false, TargetFlags.Harmful )
: base( Core.ML ? 10 : 12, false, TargetFlags.Harmful )
{
m_Owner = owner;
}

View file

@ -176,7 +176,7 @@ namespace Server.Spells.Necromancy
{
private StrangleSpell m_Owner;
public InternalTarget( StrangleSpell owner ) : base( 12, false, TargetFlags.Harmful )
public InternalTarget( StrangleSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.Harmful )
{
m_Owner = owner;
}

View file

@ -77,7 +77,7 @@ namespace Server.Spells.Necromancy
{
private VengefulSpiritSpell m_Owner;
public InternalTarget( VengefulSpiritSpell owner ) : base( 12, false, TargetFlags.Harmful )
public InternalTarget( VengefulSpiritSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.Harmful )
{
m_Owner = owner;
}

View file

@ -74,6 +74,7 @@ namespace Server.Spells.Ninjitsu
public override bool CheckFizzle()
{
// Spell is initially always successful, and with no skill gain.
return true;
}
@ -97,7 +98,8 @@ namespace Server.Spells.Ninjitsu
if ( context != null )
{
RemoveContext( Caster, context, true );
if( ConsumeMana() )
RemoveContext( Caster, context, true );
}
else if ( Caster is PlayerMobile )
{
@ -108,13 +110,13 @@ namespace Server.Spells.Ninjitsu
}
else
{
if ( Morph( Caster, GetLastAnimalForm( Caster ) ) == MorphResult.Fail )
if ( ConsumeMana() && Morph( Caster, GetLastAnimalForm( Caster ) ) == MorphResult.Fail )
DoFizzle();
}
}
else
{
if ( Morph( Caster, GetLastAnimalForm( Caster ) ) == MorphResult.Fail )
if ( ConsumeMana() && Morph( Caster, GetLastAnimalForm( Caster ) ) == MorphResult.Fail )
DoFizzle();
}
}
@ -122,6 +124,21 @@ namespace Server.Spells.Ninjitsu
FinishSequence();
}
public bool ConsumeMana()
{
int mana = ScaleMana( RequiredMana );
if ( Caster.Mana < mana )
{
Caster.SendLocalizedMessage( 1060174, mana.ToString() ); // You must have at least ~1_MANA_REQUIREMENT~ Mana to use this ability.
return false;
}
Caster.Mana -= mana;
return true;
}
private static Hashtable m_LastAnimalForms = new Hashtable();
public int GetLastAnimalForm( Mobile m )
@ -379,7 +396,7 @@ namespace Server.Spells.Ninjitsu
{
int entryID = info.Switches[0] - 100;
if ( AnimalForm.Morph( m_Caster, entryID ) == MorphResult.Fail )
if ( m_Spell.ConsumeMana() && AnimalForm.Morph( m_Caster, entryID ) == MorphResult.Fail )
{
m_Caster.LocalOverheadMessage( MessageType.Regular, 0x3B2, 502632 ); // The spell fizzles.
m_Caster.FixedParticles( 0x3735, 1, 30, 9503, EffectLayer.Waist );

View file

@ -53,7 +53,7 @@ namespace Server.Spells.Second
{
private AgilitySpell m_Owner;
public InternalTarget( AgilitySpell owner ) : base( 12, false, TargetFlags.Beneficial )
public InternalTarget( AgilitySpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.Beneficial )
{
m_Owner = owner;
}

View file

@ -53,7 +53,7 @@ namespace Server.Spells.Second
{
private CunningSpell m_Owner;
public InternalTarget( CunningSpell owner ) : base( 12, false, TargetFlags.Beneficial )
public InternalTarget( CunningSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.Beneficial )
{
m_Owner = owner;
}

View file

@ -69,7 +69,7 @@ namespace Server.Spells.Second
{
private CureSpell m_Owner;
public InternalTarget( CureSpell owner ) : base( 12, false, TargetFlags.Beneficial )
public InternalTarget( CureSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.Beneficial )
{
m_Owner = owner;
}

View file

@ -92,7 +92,7 @@ namespace Server.Spells.Second
{
private HarmSpell m_Owner;
public InternalTarget( HarmSpell owner ) : base( 12, false, TargetFlags.Harmful )
public InternalTarget( HarmSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.Harmful )
{
m_Owner = owner;
}

View file

@ -63,7 +63,7 @@ namespace Server.Spells.Second
{
private MagicTrapSpell m_Owner;
public InternalTarget( MagicTrapSpell owner ) : base( 12, false, TargetFlags.None )
public InternalTarget( MagicTrapSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.None )
{
m_Owner = owner;
}

View file

@ -58,7 +58,7 @@ namespace Server.Spells.Second
{
private RemoveTrapSpell m_Owner;
public InternalTarget( RemoveTrapSpell owner ) : base( 12, false, TargetFlags.None )
public InternalTarget( RemoveTrapSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.None )
{
m_Owner = owner;
}

View file

@ -53,7 +53,7 @@ namespace Server.Spells.Second
{
private StrengthSpell m_Owner;
public InternalTarget( StrengthSpell owner ) : base( 12, false, TargetFlags.Beneficial )
public InternalTarget( StrengthSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.Beneficial )
{
m_Owner = owner;
}

View file

@ -117,7 +117,7 @@ namespace Server.Spells.Seventh
{
private ChainLightningSpell m_Owner;
public InternalTarget( ChainLightningSpell owner ) : base( 12, true, TargetFlags.None )
public InternalTarget( ChainLightningSpell owner ) : base( Core.ML ? 10 : 12, true, TargetFlags.None )
{
m_Owner = owner;
}

View file

@ -171,7 +171,7 @@ namespace Server.Spells.Seventh
{
private EnergyFieldSpell m_Owner;
public InternalTarget( EnergyFieldSpell owner ) : base( 12, true, TargetFlags.None )
public InternalTarget( EnergyFieldSpell owner ) : base( Core.ML ? 10 : 12, true, TargetFlags.None )
{
m_Owner = owner;
}

View file

@ -72,7 +72,7 @@ namespace Server.Spells.Seventh
{
private FlameStrikeSpell m_Owner;
public InternalTarget( FlameStrikeSpell owner ) : base( 12, false, TargetFlags.Harmful )
public InternalTarget( FlameStrikeSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.Harmful )
{
m_Owner = owner;
}

View file

@ -98,7 +98,7 @@ namespace Server.Spells.Seventh
{
private ManaVampireSpell m_Owner;
public InternalTarget( ManaVampireSpell owner ) : base( 12, false, TargetFlags.Harmful )
public InternalTarget( ManaVampireSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.Harmful )
{
m_Owner = owner;
}

View file

@ -92,7 +92,7 @@ namespace Server.Spells.Seventh
{
private MassDispelSpell m_Owner;
public InternalTarget( MassDispelSpell owner ) : base( 12, true, TargetFlags.None )
public InternalTarget( MassDispelSpell owner ) : base( Core.ML ? 10 : 12, true, TargetFlags.None )
{
m_Owner = owner;
}

View file

@ -116,7 +116,7 @@ namespace Server.Spells.Seventh
{
private MeteorSwarmSpell m_Owner;
public InternalTarget( MeteorSwarmSpell owner ) : base( 12, true, TargetFlags.None )
public InternalTarget( MeteorSwarmSpell owner ) : base( Core.ML ? 10 : 12, true, TargetFlags.None )
{
m_Owner = owner;
}

View file

@ -33,7 +33,7 @@ namespace Server.Spells.Sixth
{
private DispelSpell m_Owner;
public InternalTarget( DispelSpell owner ) : base( 12, false, TargetFlags.Harmful )
public InternalTarget( DispelSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.Harmful )
{
m_Owner = owner;
}

View file

@ -77,7 +77,7 @@ namespace Server.Spells.Sixth
{
private EnergyBoltSpell m_Owner;
public InternalTarget( EnergyBoltSpell owner ) : base( 12, false, TargetFlags.Harmful )
public InternalTarget( EnergyBoltSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.Harmful )
{
m_Owner = owner;
}

View file

@ -111,7 +111,7 @@ namespace Server.Spells.Sixth
private ExplosionSpell m_Owner;
public InternalTarget( ExplosionSpell owner )
: base( 12, false, TargetFlags.Harmful )
: base( Core.ML ? 10 : 12, false, TargetFlags.Harmful )
{
m_Owner = owner;
}

View file

@ -102,7 +102,7 @@ namespace Server.Spells.Sixth
{
private InvisibilitySpell m_Owner;
public InternalTarget( InvisibilitySpell owner ) : base( 12, false, TargetFlags.Beneficial )
public InternalTarget( InvisibilitySpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.Beneficial )
{
m_Owner = owner;
}

View file

@ -68,7 +68,7 @@ namespace Server.Spells.Sixth
{
private MarkSpell m_Owner;
public InternalTarget( MarkSpell owner ) : base( 12, false, TargetFlags.None )
public InternalTarget( MarkSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.None )
{
m_Owner = owner;
}

View file

@ -85,7 +85,7 @@ namespace Server.Spells.Sixth
{
private MassCurseSpell m_Owner;
public InternalTarget( MassCurseSpell owner ) : base( 12, true, TargetFlags.None )
public InternalTarget( MassCurseSpell owner ) : base( Core.ML ? 10 : 12, true, TargetFlags.None )
{
m_Owner = owner;
}

View file

@ -210,7 +210,7 @@ namespace Server.Spells.Sixth
{
private ParalyzeFieldSpell m_Owner;
public InternalTarget( ParalyzeFieldSpell owner ) : base( 12, true, TargetFlags.None )
public InternalTarget( ParalyzeFieldSpell owner ) : base( Core.ML ? 10 : 12, true, TargetFlags.None )
{
m_Owner = owner;
}

View file

@ -101,7 +101,7 @@ namespace Server.Spells.Sixth
{
private RevealSpell m_Owner;
public InternalTarget( RevealSpell owner ) : base( 12, true, TargetFlags.None )
public InternalTarget( RevealSpell owner ) : base( Core.ML ? 10 : 12, true, TargetFlags.None )
{
m_Owner = owner;
}

View file

@ -192,7 +192,7 @@ namespace Server.Spells.Spellweaving
private GiftOfLifeSpell m_Owner;
public InternalTarget( GiftOfLifeSpell owner )
: base( 12, false, TargetFlags.Beneficial )
: base( 10, false, TargetFlags.Beneficial )
{
m_Owner = owner;
}

View file

@ -165,7 +165,7 @@ namespace Server.Spells.Spellweaving
private GiftOfRenewalSpell m_Owner;
public InternalTarget( GiftOfRenewalSpell owner )
: base( 12, false, TargetFlags.Beneficial )
: base( 10, false, TargetFlags.Beneficial )
{
m_Owner = owner;
}

View file

@ -107,7 +107,7 @@ namespace Server.Spells.Spellweaving
private NatureFurySpell m_Owner;
public InternalTarget( NatureFurySpell owner )
: base( 12, true, TargetFlags.None )
: base( 10, true, TargetFlags.None )
{
m_Owner = owner;
}

View file

@ -67,7 +67,7 @@ namespace Server.Spells.Spellweaving
{
private WordOfDeathSpell m_Owner;
public InternalTarget( WordOfDeathSpell owner ) : base( 12, false, TargetFlags.Harmful )
public InternalTarget( WordOfDeathSpell owner ) : base( 10, false, TargetFlags.Harmful )
{
m_Owner = owner;
}

View file

@ -57,7 +57,7 @@ namespace Server.Spells.Third
{
private BlessSpell m_Owner;
public InternalTarget( BlessSpell owner ) : base( 12, false, TargetFlags.Beneficial )
public InternalTarget( BlessSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.Beneficial )
{
m_Owner = owner;
}

View file

@ -73,7 +73,7 @@ namespace Server.Spells.Third
{
private FireballSpell m_Owner;
public InternalTarget( FireballSpell owner ) : base( 12, false, TargetFlags.Harmful )
public InternalTarget( FireballSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.Harmful )
{
m_Owner = owner;
}

View file

@ -65,7 +65,7 @@ namespace Server.Spells.Third
{
private MagicLockSpell m_Owner;
public InternalTarget( MagicLockSpell owner ) : base( 12, false, TargetFlags.None )
public InternalTarget( MagicLockSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.None )
{
m_Owner = owner;
}

View file

@ -102,7 +102,7 @@ namespace Server.Spells.Third
{
private PoisonSpell m_Owner;
public InternalTarget( PoisonSpell owner ) : base( 12, false, TargetFlags.Harmful )
public InternalTarget( PoisonSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.Harmful )
{
m_Owner = owner;
}

View file

@ -78,7 +78,7 @@ namespace Server.Spells.Third
{
private TelekinesisSpell m_Owner;
public InternalTarget( TelekinesisSpell owner ) : base( 12, false, TargetFlags.None )
public InternalTarget( TelekinesisSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.None )
{
m_Owner = owner;
}

View file

@ -104,7 +104,7 @@ namespace Server.Spells.Third
{
private TeleportSpell m_Owner;
public InternalTarget( TeleportSpell owner ) : base( 12, true, TargetFlags.None )
public InternalTarget( TeleportSpell owner ) : base( Core.ML ? 11 : 12, true, TargetFlags.None )
{
m_Owner = owner;
}

View file

@ -30,7 +30,7 @@ namespace Server.Spells.Third
{
private UnlockSpell m_Owner;
public InternalTarget( UnlockSpell owner ) : base( 12, false, TargetFlags.None )
public InternalTarget( UnlockSpell owner ) : base( Core.ML ? 10 : 12, false, TargetFlags.None )
{
m_Owner = owner;
}

View file

@ -189,7 +189,7 @@ namespace Server.Spells.Third
{
private WallOfStoneSpell m_Owner;
public InternalTarget( WallOfStoneSpell owner ) : base( 12, true, TargetFlags.None )
public InternalTarget( WallOfStoneSpell owner ) : base( Core.ML ? 10 : 12, true, TargetFlags.None )
{
m_Owner = owner;
}