Bug fix for :

skillcaps and things that exceed it
Possible threading issue
Addition of Generic FindItemsByType  - List<T> findItemsByType<T>()
Change to make polymorph not have a timer and instead a toggle skill
KiAttack no longer works with ranged weapons
Poison strike speed and damage changed
Necro spells now affected by FC
Must have atleast 50 weapon skill if no shield equipped to use Evasion
Stalking bonus capped at 10 + skill/10
Stalking bonus now Clears
Bugfix w/Guilds
Crashguard Exception message moved closer to the top of the file.
Character creation of Pallys and necros using advanced skills now gives skill items 
Honor no longer works on Players
Pre-ML area HitArea attacks nolonger require LoS
Serialization fix for BladeOfTheRighteous
RidingSwipe now has paralyzation immunity as with NerveStrike and ParaBlow
AnkhEast renamed to AnkhNorth
LeggingsOfBane no longer have 510 HP
ElvenWashBasinEastAddon Fixed
AnsellaGryen won't be renamed each time the server Restarts
DiseasedCats are properly named
Localization fixes in DefBlacksmithy
BearMasks/DearMAsks and things that extend from them now can be repaired
This commit is contained in:
asayre 2006-08-19 23:24:47 +00:00
parent c3eb5cebc6
commit ce54fe8635
28 changed files with 1495 additions and 1290 deletions

View file

@ -21,14 +21,28 @@ namespace Server.Spells.Bushido
public override bool CheckCast()
{
if ( Caster.FindItemOnLayer( Layer.TwoHanded ) as BaseShield != null )
if( Caster.FindItemOnLayer( Layer.TwoHanded ) as BaseShield != null )
return base.CheckCast();
if ( Caster.FindItemOnLayer( Layer.OneHanded ) as BaseWeapon != null )
return base.CheckCast();
//Intentional having a Shield check override all.
BaseWeapon weap = Caster.FindItemOnLayer( Layer.OneHanded ) as BaseWeapon;
if( weap == null )
weap = Caster.FindItemOnLayer( Layer.TwoHanded ) as BaseWeapon;
if( weap != null )
{
if( Core.ML && Caster.Skills[weap.Skill].Value < 50 )
{
//Does UBW affect this?
Caster.SendLocalizedMessage( 1076206 ); // Your skill with your equipped weapon must be 50 or higher to use Evasion.
return false;
}
if ( Caster.FindItemOnLayer( Layer.TwoHanded ) as BaseWeapon != null )
return base.CheckCast();
}
Caster.SendLocalizedMessage( 1062944 ); // You must have a weapon or a shield equipped to use this ability!
return false;

View file

@ -13,7 +13,7 @@ namespace Server.Spells.Necromancy
public override bool ClearHandsOnCast{ get{ return false; } }
public override int CastDelayFastScalar{ get{ return 0; } } // Necromancer spells are not effected by fast cast items, though they are by fast cast recovery
public override int CastDelayFastScalar{ get{ return (Core.SE? base.CastDelayFastScalar : 0); } } // Necromancer spells are not effected by fast cast items, though they are by fast cast recovery
public NecromancerSpell( Mobile caster, Item scroll, SpellInfo info ) : base( caster, scroll, info )
{

View file

@ -10,7 +10,8 @@ namespace Server.Spells.Necromancy
{
private static SpellInfo m_Info = new SpellInfo(
"Poison Strike", "In Vas Nox",
SpellCircle.Fourth, // 0.5 + 1.0 = 1.5s base cast delay
(Core.ML ? SpellCircle.Fifth : // 0.5 + 1.25 = 1.75s base cast delay
SpellCircle.Fourth), // 0.5 + 1.0 = 1.5s base cast delay
203,
9031,
Reagent.NoxCrystal
@ -46,7 +47,7 @@ namespace Server.Spells.Necromancy
Effects.SendLocationParticles( EffectItem.Create( m.Location, m.Map, EffectItem.DefaultDuration ), 0x36B0, 1, 14, 63, 7, 9915, 0 );
Effects.PlaySound( m.Location, m.Map, 0x229 );
double damage = Utility.RandomMinMax( 36, 40 ) * ((300 + (GetDamageSkill( Caster ) * 9)) / 1000);
double damage = Utility.RandomMinMax( (Core.ML ? 32 : 36), 40 ) * ((300 + (GetDamageSkill( Caster ) * 9)) / 1000);
Map map = m.Map;

View file

@ -37,6 +37,18 @@ namespace Server.Spells.Ninjitsu
return false;
}
if( Core.ML )
{
BaseRanged ranged = from.Weapon as BaseRanged;
if( ranged != null )
{
from.SendLocalizedMessage( 1075858 ); // You can only use this with melee attacks.
return false;
}
}
return base.Validate( from );
}

View file

@ -61,7 +61,10 @@ namespace Server.Spells.Seventh
}
else if ( !Caster.CanBeginAction( typeof( PolymorphSpell ) ) )
{
Caster.SendLocalizedMessage( 1005559 ); // This spell is already in effect.
if( Core.ML )
EndPolymorph( Caster );
else
Caster.SendLocalizedMessage( 1005559 ); // This spell is already in effect.
return false;
}
else if ( m_NewBody == 0 )
@ -92,7 +95,10 @@ namespace Server.Spells.Seventh
}
else if ( !Caster.CanBeginAction( typeof( PolymorphSpell ) ) )
{
Caster.SendLocalizedMessage( 1005559 ); // This spell is already in effect.
if( Core.ML )
EndPolymorph( Caster );
else
Caster.SendLocalizedMessage( 1005559 ); // This spell is already in effect.
}
else if ( Necromancy.TransformationSpell.UnderTransformation( Caster ) )
{
@ -134,13 +140,16 @@ namespace Server.Spells.Seventh
BaseArmor.ValidateMobile( Caster );
BaseClothing.ValidateMobile( Caster );
StopTimer( Caster );
if( !Core.ML )
{
StopTimer( Caster );
Timer t = new InternalTimer( Caster );
Timer t = new InternalTimer( Caster );
m_Timers[Caster] = t;
m_Timers[Caster] = t;
t.Start();
t.Start();
}
}
}
else
@ -167,6 +176,19 @@ namespace Server.Spells.Seventh
return ( t != null );
}
private static void EndPolymorph( Mobile m )
{
if( !m.CanBeginAction( typeof( PolymorphSpell ) ) )
{
m.BodyMod = 0;
m.HueMod = -1;
m.EndAction( typeof( PolymorphSpell ) );
BaseArmor.ValidateMobile( m );
BaseClothing.ValidateMobile( m );
}
}
private class InternalTimer : Timer
{
private Mobile m_Owner;
@ -186,15 +208,7 @@ namespace Server.Spells.Seventh
protected override void OnTick()
{
if ( !m_Owner.CanBeginAction( typeof( PolymorphSpell ) ) )
{
m_Owner.BodyMod = 0;
m_Owner.HueMod = -1;
m_Owner.EndAction( typeof( PolymorphSpell ) );
BaseArmor.ValidateMobile( m_Owner );
BaseClothing.ValidateMobile( m_Owner );
}
EndPolymorph( m_Owner );
}
}
}