From c0206c6f7eceb97bc4c5c2e4fb774092e93a6484 Mon Sep 17 00:00:00 2001 From: eos Date: Sun, 11 Mar 2012 01:43:55 +0000 Subject: [PATCH] - Added more future ML craftables that already drop as loot to the special repair lists. - Fixed Bloodwood Spirit and Totem of the Void sometimes not spawning with a protection attribute. (Prepatch ones are fixed on server start.) - Fixed crashes in BaseTalisman resulting from setting Summoner to null. - Paragon perks added to mobs dropping ML artifacts (by making them paragon "under the hood", seems to be the case on OSI as well). This also means the named mobs will now drop paragon chests. - Poison immunity level is now also increased by 1 for paragons. - Rend now drops ML minor artifacts. - ML named mobs no longer use the AoS specific loot packs, but will adjust to the era the server is set in. - The 'current speed' of paragons is now updated to account for the speed boost after spawning. --- Scripts/Engines/Craft/Core/Repair.cs | 44 +++++++++++++++++-- .../Minor Artifacts/ML/BloodwoodSpirit.cs | 7 ++- .../Items/Minor Artifacts/ML/TotemOfVoid.cs | 9 ++-- Scripts/Items/Talismans/BaseTalisman.cs | 34 ++++++++------ Scripts/Mobiles/AI/SpeedInfo.cs | 28 +++++------- Scripts/Mobiles/BaseCreature.cs | 34 +++++++++----- .../Monsters/ML/Bedlam/LadyJennifyr.cs | 4 +- .../Mobiles/Monsters/ML/Bedlam/LadyMarai.cs | 4 +- .../Monsters/ML/Bedlam/MasterJonath.cs | 4 +- .../Monsters/ML/Bedlam/MasterMikael.cs | 4 +- .../Monsters/ML/Bedlam/MasterTheophilus.cs | 16 ++----- .../Mobiles/Monsters/ML/Bedlam/RedDeath.cs | 4 +- .../Mobiles/Monsters/ML/Bedlam/SirPatrick.cs | 4 +- .../Mobiles/Monsters/ML/Labyrinth/Miasma.cs | 11 ++--- Scripts/Mobiles/Monsters/ML/Labyrinth/Pyre.cs | 4 +- Scripts/Mobiles/Monsters/ML/Labyrinth/Rend.cs | 14 +++--- .../Monsters/ML/Painted Caves/Grobu.cs | 6 +-- .../Mobiles/Monsters/ML/Painted Caves/Lurg.cs | 9 ++-- .../ML/Palace of Paroxysmus/Putrefier.cs | 13 +++--- .../Mobiles/Monsters/ML/Twisted Weald/Gnaw.cs | 6 +-- .../Monsters/ML/Twisted Weald/Guile.cs | 6 ++- .../Mobiles/Monsters/ML/Twisted Weald/Irk.cs | 6 ++- .../Monsters/ML/Twisted Weald/LadyLissith.cs | 4 +- .../Monsters/ML/Twisted Weald/LadySabrix.cs | 4 +- .../Monsters/ML/Twisted Weald/Malefic.cs | 4 +- .../Mobiles/Monsters/ML/Twisted Weald/Silk.cs | 6 +-- .../Monsters/ML/Twisted Weald/Spite.cs | 6 ++- .../Monsters/ML/Twisted Weald/Swoop.cs | 6 +-- .../Monsters/ML/Twisted Weald/Virulent.cs | 4 +- Scripts/Mobiles/Special/Paragon.cs | 18 ++++---- 30 files changed, 197 insertions(+), 126 deletions(-) diff --git a/Scripts/Engines/Craft/Core/Repair.cs b/Scripts/Engines/Craft/Core/Repair.cs index fc960ec2a..63f6a887c 100644 --- a/Scripts/Engines/Craft/Core/Repair.cs +++ b/Scripts/Engines/Craft/Core/Repair.cs @@ -103,7 +103,7 @@ namespace Server.Engines.Craft { // Clothing repairable but not craftable - if( m_CraftSystem is DefTailoring ) + if ( m_CraftSystem is DefTailoring ) { return (clothing is BearMask) || (clothing is DeerMask); @@ -128,7 +128,11 @@ namespace Server.Engines.Craft { return ( weapon is Club ) || ( weapon is BlackStaff ) - || ( weapon is MagicWand ); + || ( weapon is MagicWand ) + #region Temporary + // TODO: Make these items craftable + || ( weapon is WildStaff ); + #endregion } else if ( m_CraftSystem is DefBlacksmithy ) { @@ -146,6 +150,14 @@ namespace Server.Engines.Craft || ( weapon is DiamondMace ); #endregion } + #region Temporary + // TODO: Make these items craftable + else if ( m_CraftSystem is DefBowFletching ) + { + return ( weapon is ElvenCompositeLongbow ) + || ( weapon is MagicalShortbow ); + } + #endregion return false; } @@ -156,7 +168,32 @@ namespace Server.Engines.Craft #region Temporary // TODO: Make these items craftable - if ( m_CraftSystem is DefBlacksmithy ) + if ( m_CraftSystem is DefTailoring ) + { + return ( armor is LeafTonlet ) + || ( armor is LeafArms ) + || ( armor is LeafChest ) + || ( armor is LeafGloves ) + || ( armor is LeafGorget ) + || ( armor is LeafLegs ) + || ( armor is HideChest ) + || ( armor is HideGloves ) + || ( armor is HideGorget ) + || ( armor is HidePants ) + || ( armor is HidePauldrons ); + } + else if ( m_CraftSystem is DefCarpentry ) + { + return ( armor is WingedHelm ) + || ( armor is RavenHelm ) + || ( armor is VultureHelm ) + || ( armor is WoodlandArms ) + || ( armor is WoodlandChest ) + || ( armor is WoodlandGloves ) + || ( armor is WoodlandGorget ) + || ( armor is WoodlandLegs ); + } + else if ( m_CraftSystem is DefBlacksmithy ) { return ( armor is Circlet ) || ( armor is RoyalCirclet ) @@ -174,7 +211,6 @@ namespace Server.Engines.Craft if( !CheckDeed( from ) ) return; - bool usingDeed = (m_Deed != null); bool toDelete = false; diff --git a/Scripts/Items/Minor Artifacts/ML/BloodwoodSpirit.cs b/Scripts/Items/Minor Artifacts/ML/BloodwoodSpirit.cs index 84a52d513..5badd1cd4 100644 --- a/Scripts/Items/Minor Artifacts/ML/BloodwoodSpirit.cs +++ b/Scripts/Items/Minor Artifacts/ML/BloodwoodSpirit.cs @@ -16,7 +16,7 @@ namespace Server.Items Removal = TalismanRemoval.Damage; Blessed = GetRandomBlessed(); - Protection = GetRandomProtection(); + Protection = GetRandomProtection( false ); SkillBonuses.SetValues( 0, SkillName.SpiritSpeak, 10.0 ); SkillBonuses.SetValues( 1, SkillName.Necromancy, 5.0 ); @@ -30,7 +30,7 @@ namespace Server.Items { base.Serialize( writer ); - writer.Write( (int) 0 ); // version + writer.Write( (int) 1 ); // version } public override void Deserialize( GenericReader reader ) @@ -38,6 +38,9 @@ namespace Server.Items base.Deserialize( reader ); int version = reader.ReadInt(); + + if ( version == 0 && ( Protection == null || Protection.IsEmpty ) ) + Protection = GetRandomProtection( false ); } } } diff --git a/Scripts/Items/Minor Artifacts/ML/TotemOfVoid.cs b/Scripts/Items/Minor Artifacts/ML/TotemOfVoid.cs index 2b220c66b..8505103b4 100644 --- a/Scripts/Items/Minor Artifacts/ML/TotemOfVoid.cs +++ b/Scripts/Items/Minor Artifacts/ML/TotemOfVoid.cs @@ -16,8 +16,8 @@ namespace Server.Items MaxChargeTime = 1800; Blessed = GetRandomBlessed(); - Protection = GetRandomProtection(); - + Protection = GetRandomProtection( false ); + Attributes.RegenHits = 2; Attributes.LowerManaCost = 10; } @@ -35,7 +35,7 @@ namespace Server.Items { base.Serialize( writer ); - writer.Write( (int) 0 ); // version + writer.Write( (int) 1 ); // version } public override void Deserialize( GenericReader reader ) @@ -43,6 +43,9 @@ namespace Server.Items base.Deserialize( reader ); int version = reader.ReadInt(); + + if ( version == 0 && ( Protection == null || Protection.IsEmpty ) ) + Protection = GetRandomProtection( false ); } } } diff --git a/Scripts/Items/Talismans/BaseTalisman.cs b/Scripts/Items/Talismans/BaseTalisman.cs index a2264e5a1..e5c2f70eb 100644 --- a/Scripts/Items/Talismans/BaseTalisman.cs +++ b/Scripts/Items/Talismans/BaseTalisman.cs @@ -345,7 +345,7 @@ namespace Server.Items from.SendLocalizedMessage(1075001); // You have been given some ingots. else if (item is Bandage) from.SendLocalizedMessage(1075002); // You have been given some clean bandages. - else if (m_Summoner.Name != null) + else if (m_Summoner != null && m_Summoner.Name != null) from.SendLocalizedMessage(1074853, m_Summoner.Name.ToString()); // You have been given ~1_name~ } else if (obj is BaseCreature) @@ -553,7 +553,7 @@ namespace Server.Items SetSaveFlag(ref flags, SaveFlag.SkillBonuses, !m_AosSkillBonuses.IsEmpty); SetSaveFlag(ref flags, SaveFlag.Protection, m_Protection != null && !m_Protection.IsEmpty); SetSaveFlag(ref flags, SaveFlag.Killer, m_Killer != null && !m_Killer.IsEmpty); - SetSaveFlag(ref flags, SaveFlag.Summoner, !m_Summoner.IsEmpty); + SetSaveFlag(ref flags, SaveFlag.Summoner, m_Summoner != null && !m_Summoner.IsEmpty); SetSaveFlag(ref flags, SaveFlag.Removal, m_Removal != TalismanRemoval.None); SetSaveFlag(ref flags, SaveFlag.KarmaLoss, m_KarmaLoss != 0); SetSaveFlag(ref flags, SaveFlag.Skill, (int)m_Skill != 0); @@ -894,26 +894,32 @@ namespace Server.Items public static TalismanAttribute GetRandomKiller() { - if (0.5 > Utility.RandomDouble()) - { - int num = Utility.Random(m_Killers.Length); + return GetRandomKiller( true ); + } - return new TalismanAttribute(m_Killers[num], m_KillerLabels[num], Utility.RandomMinMax(10, 100)); - } + public static TalismanAttribute GetRandomKiller( bool includingNone ) + { + if ( includingNone && Utility.RandomBool() ) + return new TalismanAttribute(); - return new TalismanAttribute(); + int num = Utility.Random(m_Killers.Length); + + return new TalismanAttribute(m_Killers[num], m_KillerLabels[num], Utility.RandomMinMax(10, 100)); } public static TalismanAttribute GetRandomProtection() { - if (0.5 > Utility.RandomDouble()) - { - int num = Utility.Random(m_Killers.Length); + return GetRandomProtection( true ); + } - return new TalismanAttribute(m_Killers[num], m_KillerLabels[num], Utility.RandomMinMax(5, 60)); - } + public static TalismanAttribute GetRandomProtection( bool includingNone ) + { + if ( includingNone && Utility.RandomBool() ) + return new TalismanAttribute(); - return new TalismanAttribute(); + int num = Utility.Random(m_Killers.Length); + + return new TalismanAttribute(m_Killers[num], m_KillerLabels[num], Utility.RandomMinMax(5, 60)); } private static SkillName[] m_Skills = new SkillName[] diff --git a/Scripts/Mobiles/AI/SpeedInfo.cs b/Scripts/Mobiles/AI/SpeedInfo.cs index 9cdae0a0f..03ac7fc38 100644 --- a/Scripts/Mobiles/AI/SpeedInfo.cs +++ b/Scripts/Mobiles/AI/SpeedInfo.cs @@ -119,7 +119,17 @@ namespace Server typeof( DemonKnight ), typeof( GiantBlackWidow ), typeof( SummonedAirElemental ), typeof( LesserHiryu ), typeof( Hiryu ), typeof( LadyOfTheSnow ), typeof( RaiJu ), typeof( Ronin ), typeof( RuneBeetle ), - typeof( Changeling ) + typeof( Changeling ), + #region ML named mobs - before Paragon speedboost + typeof( LadyJennifyr ), typeof( LadyMarai ), typeof( MasterJonath ), + typeof( MasterMikael ), typeof( MasterTheophilus ), typeof( RedDeath ), + typeof( SirPatrick ), typeof( Miasma ), typeof( Rend ), + typeof( Grobu ), typeof( Gnaw ), typeof( Guile ), + typeof( Irk ), typeof( Spite ), typeof( LadyLissith ), + typeof( LadySabrix ), typeof( Malefic ), typeof( Silk ), + typeof( Virulent ) + // TODO: Where to put Lurg, Putrefier, Swoop and Pyre? They seem slower. + #endregion } ), /* Very Fast */ new SpeedInfo( 0.175, 0.350, new Type[] @@ -132,21 +142,7 @@ namespace Server typeof( FactionHenchman ), typeof( FactionMercenary ), typeof( FactionNecromancer ), typeof( FactionSorceress ), typeof( FactionWizard ), typeof( FactionBerserker ), typeof( FactionPaladin ), typeof( Leviathan ), typeof( FireBeetle ), - typeof( FanDancer ), - #region ML named mobs - typeof( LadyJennifyr ), typeof( LadyMarai ), typeof( MasterJonath ), - typeof( MasterMikael ), typeof( MasterTheophilus ), typeof( RedDeath ), - typeof( SirPatrick ), typeof( Miasma ), typeof( Rend ), - typeof( Grobu ), typeof( Gnaw ), typeof( Guile ), - typeof( Irk ), typeof( Spite ), typeof( LadyLissith ), - typeof( LadySabrix ), typeof( Malefic ), typeof( Silk ), - typeof( Virulent ) - /* - // These don't seem to be fast? - typeof( Lurg ), typeof( Putrefier ), typeof( Swoop), - typeof( Pyre ) - */ - #endregion + typeof( FanDancer ) } ), /* Medium */ new SpeedInfo( 0.25, 0.5, new Type[] diff --git a/Scripts/Mobiles/BaseCreature.cs b/Scripts/Mobiles/BaseCreature.cs index a9e0c8f77..6b6e62d73 100644 --- a/Scripts/Mobiles/BaseCreature.cs +++ b/Scripts/Mobiles/BaseCreature.cs @@ -715,7 +715,7 @@ namespace Server.Mobiles #endregion #region Flee!!! - public virtual bool CanFlee{ get{ return ( !m_Paragon && !GivesMLMinorArtifact ); } } + public virtual bool CanFlee{ get{ return !m_Paragon; } } private DateTime m_EndFlee; @@ -880,7 +880,7 @@ namespace Server.Mobiles public override string ApplyNameSuffix( string suffix ) { - if ( IsParagon ) + if ( IsParagon && !GivesMLMinorArtifact ) { if ( suffix.Length == 0 ) suffix = "(Paragon)"; @@ -1088,7 +1088,10 @@ namespace Server.Mobiles if ( base.CheckPoisonImmunity( from, poison ) ) return true; - Poison p = this.PoisonImmune; + Poison p = PoisonImmune; + + if ( m_Paragon ) + p = PoisonImpl.IncreaseLevel( p ); return ( p != null && p.Level >= poison.Level ); } @@ -2780,13 +2783,15 @@ namespace Server.Mobiles if ( m_Paragon ) p = PoisonImpl.IncreaseLevel( p ); - if ( p != null && HitPoisonChance >= Utility.RandomDouble() ) { + if ( p != null && HitPoisonChance >= Utility.RandomDouble() ) + { defender.ApplyPoison( this, p ); - if ( this.Controlled ) - this.CheckSkill(SkillName.Poisoning, 0, this.Skills[SkillName.Poisoning].Cap); + + if ( Controlled ) + CheckSkill( SkillName.Poisoning, 0, Skills[SkillName.Poisoning].Cap ); } - if( AutoDispel && defender is BaseCreature && ((BaseCreature)defender).IsDispellable && AutoDispelChance > Utility.RandomDouble() ) + if ( AutoDispel && defender is BaseCreature && ((BaseCreature)defender).IsDispellable && AutoDispelChance > Utility.RandomDouble() ) Dispel( defender ); } @@ -4493,13 +4498,18 @@ namespace Server.Mobiles public virtual void OnKilledBy( Mobile mob ) { - if ( m_Paragon && Paragon.CheckArtifactChance( mob, this ) ) - Paragon.GiveArtifactTo( mob ); - #region Mondain's Legacy - if ( GivesMLMinorArtifact && MondainsLegacy.CheckArtifactChance( mob, this ) ) - MondainsLegacy.GiveArtifactTo( mob ); + if ( GivesMLMinorArtifact ) + { + if ( MondainsLegacy.CheckArtifactChance( mob, this ) ) + MondainsLegacy.GiveArtifactTo( mob ); + } #endregion + else if ( m_Paragon ) + { + if ( Paragon.CheckArtifactChance( mob, this ) ) + Paragon.GiveArtifactTo( mob ); + } } public override void OnDeath( Container c ) diff --git a/Scripts/Mobiles/Monsters/ML/Bedlam/LadyJennifyr.cs b/Scripts/Mobiles/Monsters/ML/Bedlam/LadyJennifyr.cs index 21d6d40f9..51fad9d39 100644 --- a/Scripts/Mobiles/Monsters/ML/Bedlam/LadyJennifyr.cs +++ b/Scripts/Mobiles/Monsters/ML/Bedlam/LadyJennifyr.cs @@ -11,6 +11,8 @@ namespace Server.Mobiles [Constructable] public LadyJennifyr() { + IsParagon = true; + Name = "Lady Jennifyr"; Hue = 0x76D; @@ -42,7 +44,7 @@ namespace Server.Mobiles public override void GenerateLoot() { - AddLoot( LootPack.AosUltraRich, 4 ); + AddLoot( LootPack.UltraRich, 3 ); } public override void OnGaveMeleeAttack( Mobile defender ) diff --git a/Scripts/Mobiles/Monsters/ML/Bedlam/LadyMarai.cs b/Scripts/Mobiles/Monsters/ML/Bedlam/LadyMarai.cs index 69ed44ae5..3ba6962b0 100644 --- a/Scripts/Mobiles/Monsters/ML/Bedlam/LadyMarai.cs +++ b/Scripts/Mobiles/Monsters/ML/Bedlam/LadyMarai.cs @@ -11,6 +11,8 @@ namespace Server.Mobiles [Constructable] public LadyMarai() { + IsParagon = true; + Name = "Lady Marai"; Hue = 0x21; @@ -42,7 +44,7 @@ namespace Server.Mobiles public override void GenerateLoot() { - AddLoot( LootPack.AosUltraRich, 4 ); + AddLoot( LootPack.UltraRich, 3 ); } public override WeaponAbility GetWeaponAbility() diff --git a/Scripts/Mobiles/Monsters/ML/Bedlam/MasterJonath.cs b/Scripts/Mobiles/Monsters/ML/Bedlam/MasterJonath.cs index 2708ef2a7..64803f8cf 100644 --- a/Scripts/Mobiles/Monsters/ML/Bedlam/MasterJonath.cs +++ b/Scripts/Mobiles/Monsters/ML/Bedlam/MasterJonath.cs @@ -10,6 +10,8 @@ namespace Server.Mobiles [Constructable] public MasterJonath() { + IsParagon = true; + Name = "Master Jonath"; Hue = 0x455; @@ -52,7 +54,7 @@ namespace Server.Mobiles public override void GenerateLoot() { - AddLoot( LootPack.AosUltraRich, 4 ); + AddLoot( LootPack.UltraRich, 3 ); } // TODO: Special move? diff --git a/Scripts/Mobiles/Monsters/ML/Bedlam/MasterMikael.cs b/Scripts/Mobiles/Monsters/ML/Bedlam/MasterMikael.cs index 893421310..545312b00 100644 --- a/Scripts/Mobiles/Monsters/ML/Bedlam/MasterMikael.cs +++ b/Scripts/Mobiles/Monsters/ML/Bedlam/MasterMikael.cs @@ -10,6 +10,8 @@ namespace Server.Mobiles [Constructable] public MasterMikael() { + IsParagon = true; + Name = "Master Mikael"; Hue = 0x8FD; @@ -51,7 +53,7 @@ namespace Server.Mobiles public override void GenerateLoot() { - AddLoot( LootPack.AosUltraRich, 3 ); + AddLoot( LootPack.UltraRich, 2 ); } // TODO: Special move? diff --git a/Scripts/Mobiles/Monsters/ML/Bedlam/MasterTheophilus.cs b/Scripts/Mobiles/Monsters/ML/Bedlam/MasterTheophilus.cs index dc64a6190..2e41c07c7 100644 --- a/Scripts/Mobiles/Monsters/ML/Bedlam/MasterTheophilus.cs +++ b/Scripts/Mobiles/Monsters/ML/Bedlam/MasterTheophilus.cs @@ -10,8 +10,11 @@ namespace Server.Mobiles [Constructable] public MasterTheophilus() { + IsParagon = true; + Name = "Master Theophilus"; Title = "the necromancer"; + Hue = 0; SetStr( 137, 187 ); SetDex( 253, 301 ); @@ -59,7 +62,7 @@ namespace Server.Mobiles public override void GenerateLoot() { - AddLoot( LootPack.AosUltraRich, 4 ); + AddLoot( LootPack.UltraRich, 3 ); } public override WeaponAbility GetWeaponAbility() @@ -67,17 +70,6 @@ namespace Server.Mobiles return WeaponAbility.ParalyzingBlow; } - /* - // TODO: Needs verification - public override void OnDeath( Container c ) - { - base.OnDeath( c ); - - if ( Paragon.ChestChance > Utility.RandomDouble() ) - c.DropItem( new ParagonChest( Name, TreasureMapLevel ) ); - } - */ - public override bool GivesMLMinorArtifact{ get{ return true; } } public override int TreasureMapLevel{ get{ return 5; } } diff --git a/Scripts/Mobiles/Monsters/ML/Bedlam/RedDeath.cs b/Scripts/Mobiles/Monsters/ML/Bedlam/RedDeath.cs index 52f89795c..9d2f8c207 100644 --- a/Scripts/Mobiles/Monsters/ML/Bedlam/RedDeath.cs +++ b/Scripts/Mobiles/Monsters/ML/Bedlam/RedDeath.cs @@ -11,6 +11,8 @@ namespace Server.Mobiles public RedDeath() : base( "Red Death" ) { + IsParagon = true; + Hue = 0x21; BaseSoundID = 0x1C3; @@ -51,7 +53,7 @@ namespace Server.Mobiles public override void GenerateLoot() { - AddLoot( LootPack.AosUltraRich, 4 ); + AddLoot( LootPack.UltraRich, 3 ); } public override WeaponAbility GetWeaponAbility() diff --git a/Scripts/Mobiles/Monsters/ML/Bedlam/SirPatrick.cs b/Scripts/Mobiles/Monsters/ML/Bedlam/SirPatrick.cs index 019ad9dc4..e3571660c 100644 --- a/Scripts/Mobiles/Monsters/ML/Bedlam/SirPatrick.cs +++ b/Scripts/Mobiles/Monsters/ML/Bedlam/SirPatrick.cs @@ -12,6 +12,8 @@ namespace Server.Mobiles [Constructable] public SirPatrick() { + IsParagon = true; + Name = "Sir Patrick"; Hue = 0x47E; @@ -43,7 +45,7 @@ namespace Server.Mobiles public override void GenerateLoot() { - AddLoot( LootPack.AosUltraRich, 3 ); + AddLoot( LootPack.UltraRich, 2 ); } public override void OnGaveMeleeAttack( Mobile defender ) diff --git a/Scripts/Mobiles/Monsters/ML/Labyrinth/Miasma.cs b/Scripts/Mobiles/Monsters/ML/Labyrinth/Miasma.cs index ea14e3844..cddd4d4d0 100644 --- a/Scripts/Mobiles/Monsters/ML/Labyrinth/Miasma.cs +++ b/Scripts/Mobiles/Monsters/ML/Labyrinth/Miasma.cs @@ -10,6 +10,8 @@ namespace Server.Mobiles [Constructable] public Miasma() { + IsParagon = true; + Name = "Miasma"; Hue = 0x8FD; @@ -38,13 +40,11 @@ namespace Server.Mobiles Fame = 21000; Karma = -21000; - - Tamable = false; } public override void GenerateLoot() { - AddLoot( LootPack.AosUltraRich, 3 ); + AddLoot( LootPack.UltraRich, 2 ); } public override WeaponAbility GetWeaponAbility() @@ -80,16 +80,11 @@ namespace Server.Mobiles case 15: c.DropItem( new HunterLegs() ); break; } } - - if ( Paragon.ChestChance > Utility.RandomDouble() ) - c.DropItem( new ParagonChest( Name, TreasureMapLevel ) ); } */ public override bool GivesMLMinorArtifact{ get{ return true; } } public override int TreasureMapLevel{ get{ return 5; } } - public override Poison PoisonImmune{ get{ return Poison.Lethal; } } - public override Poison HitPoison{ get{ return Poison.Lethal; } } public Miasma( Serial serial ) : base( serial ) diff --git a/Scripts/Mobiles/Monsters/ML/Labyrinth/Pyre.cs b/Scripts/Mobiles/Monsters/ML/Labyrinth/Pyre.cs index e0327fe95..6054c703e 100644 --- a/Scripts/Mobiles/Monsters/ML/Labyrinth/Pyre.cs +++ b/Scripts/Mobiles/Monsters/ML/Labyrinth/Pyre.cs @@ -13,6 +13,8 @@ namespace Server.Mobiles [Constructable] public Pyre() { + IsParagon = true; + Name = "Pyre"; Hue = 0x489; @@ -48,7 +50,7 @@ namespace Server.Mobiles public override void GenerateLoot() { - AddLoot( LootPack.AosUltraRich, 4 ); + AddLoot( LootPack.UltraRich, 3 ); } public override WeaponAbility GetWeaponAbility() diff --git a/Scripts/Mobiles/Monsters/ML/Labyrinth/Rend.cs b/Scripts/Mobiles/Monsters/ML/Labyrinth/Rend.cs index 9f7a16240..919d8f853 100644 --- a/Scripts/Mobiles/Monsters/ML/Labyrinth/Rend.cs +++ b/Scripts/Mobiles/Monsters/ML/Labyrinth/Rend.cs @@ -10,6 +10,8 @@ namespace Server.Mobiles [Constructable] public Rend() { + IsParagon = true; + Name = "Rend"; Hue = 0x455; @@ -38,19 +40,11 @@ namespace Server.Mobiles Fame = 21000; Karma = -21000; - - Tamable = false; - - /* - // TODO: Needs verification - if ( Paragon.ChestChance > Utility.RandomDouble() ) - PackItem( new ParagonChest( Name, TreasureMapLevel ) ); - */ } public override void GenerateLoot() { - AddLoot( LootPack.AosUltraRich, 4 ); + AddLoot( LootPack.UltraRich, 3 ); } public override WeaponAbility GetWeaponAbility() @@ -61,6 +55,8 @@ namespace Server.Mobiles return WeaponAbility.BleedAttack; } + public override bool GivesMLMinorArtifact{ get{ return true; } } + public Rend( Serial serial ) : base( serial ) { diff --git a/Scripts/Mobiles/Monsters/ML/Painted Caves/Grobu.cs b/Scripts/Mobiles/Monsters/ML/Painted Caves/Grobu.cs index 407b44b51..abb2aed22 100644 --- a/Scripts/Mobiles/Monsters/ML/Painted Caves/Grobu.cs +++ b/Scripts/Mobiles/Monsters/ML/Painted Caves/Grobu.cs @@ -10,6 +10,8 @@ namespace Server.Mobiles [Constructable] public Grobu() { + IsParagon = true; + Name = "Grobu"; Hue = 0x455; @@ -40,13 +42,11 @@ namespace Server.Mobiles Fame = 1000; Karma = 1000; - - Tamable = false; } public override void GenerateLoot() { - AddLoot( LootPack.AosFilthyRich, 3 ); + AddLoot( LootPack.FilthyRich, 2 ); } /* diff --git a/Scripts/Mobiles/Monsters/ML/Painted Caves/Lurg.cs b/Scripts/Mobiles/Monsters/ML/Painted Caves/Lurg.cs index 98b532b0b..86d386d96 100644 --- a/Scripts/Mobiles/Monsters/ML/Painted Caves/Lurg.cs +++ b/Scripts/Mobiles/Monsters/ML/Painted Caves/Lurg.cs @@ -10,6 +10,8 @@ namespace Server.Mobiles [Constructable] public Lurg() { + IsParagon = true; + Name = "Lurg"; Hue = 0x455; @@ -39,16 +41,11 @@ namespace Server.Mobiles Fame = 10000; Karma = -10000; - - /* - if ( Paragon.ChestChance > Utility.RandomDouble() ) // TODO: Needs verification - PackItem( new ParagonChest( Name, TreasureMapLevel ) ); - */ } public override void GenerateLoot() { - AddLoot( LootPack.AosUltraRich, 3 ); + AddLoot( LootPack.UltraRich, 2 ); } public override WeaponAbility GetWeaponAbility() diff --git a/Scripts/Mobiles/Monsters/ML/Palace of Paroxysmus/Putrefier.cs b/Scripts/Mobiles/Monsters/ML/Palace of Paroxysmus/Putrefier.cs index 32093eec0..be9a8bd34 100644 --- a/Scripts/Mobiles/Monsters/ML/Palace of Paroxysmus/Putrefier.cs +++ b/Scripts/Mobiles/Monsters/ML/Palace of Paroxysmus/Putrefier.cs @@ -10,6 +10,8 @@ namespace Server.Mobiles [Constructable] public Putrefier() { + IsParagon = true; + Name = "Putrefier"; Hue = 63; @@ -41,13 +43,16 @@ namespace Server.Mobiles SetSkill( SkillName.Meditation, 41.4, 85.0 ); SetSkill( SkillName.Poisoning, 45.0, 50.0 ); + Fame = 24000; + Karma = -24000; + PackScroll( 4, 7 ); PackScroll( 4, 7 ); } public override void GenerateLoot() { - AddLoot( LootPack.AosUltraRich, 4 ); + AddLoot( LootPack.UltraRich, 3 ); } /* @@ -60,15 +65,11 @@ namespace Server.Mobiles if ( Utility.RandomDouble() < 0.6 ) c.DropItem( new ParrotItem() ); - - if ( Paragon.ChestChance > Utility.RandomDouble() ) - c.DropItem( new ParagonChest( Name, TreasureMapLevel ) ); } */ public override bool GivesMLMinorArtifact{ get{ return true; } } - public override Poison PoisonImmune{ get{ return Poison.Lethal; } } - public override Poison HitPoison{ get{ return Poison.Lethal; } } + public override Poison HitPoison{ get{ return Poison.Deadly; } } // Becomes Lethal with Paragon bonus public override int TreasureMapLevel{ get{ return 5; } } public Putrefier( Serial serial ) diff --git a/Scripts/Mobiles/Monsters/ML/Twisted Weald/Gnaw.cs b/Scripts/Mobiles/Monsters/ML/Twisted Weald/Gnaw.cs index 794171c82..8d65f4c16 100644 --- a/Scripts/Mobiles/Monsters/ML/Twisted Weald/Gnaw.cs +++ b/Scripts/Mobiles/Monsters/ML/Twisted Weald/Gnaw.cs @@ -10,6 +10,8 @@ namespace Server.Mobiles [Constructable] public Gnaw() { + IsParagon = true; + Name = "Gnaw"; Hue = 0x130; @@ -37,13 +39,11 @@ namespace Server.Mobiles Fame = 17500; Karma = -17500; - - Tamable = false; } public override void GenerateLoot() { - AddLoot( LootPack.AosFilthyRich, 3 ); + AddLoot( LootPack.FilthyRich, 2 ); } public override bool GivesMLMinorArtifact{ get{ return true; } } diff --git a/Scripts/Mobiles/Monsters/ML/Twisted Weald/Guile.cs b/Scripts/Mobiles/Monsters/ML/Twisted Weald/Guile.cs index 57033abec..abec9e794 100644 --- a/Scripts/Mobiles/Monsters/ML/Twisted Weald/Guile.cs +++ b/Scripts/Mobiles/Monsters/ML/Twisted Weald/Guile.cs @@ -13,6 +13,10 @@ namespace Server.Mobiles [Constructable] public Guile() { + IsParagon = true; + + Hue = DefaultHue; + SetStr( 53, 214 ); SetDex( 243, 367 ); SetInt( 369, 586 ); @@ -61,7 +65,7 @@ namespace Server.Mobiles public override void GenerateLoot() { - AddLoot( LootPack.AosUltraRich, 3 ); + AddLoot( LootPack.UltraRich, 2 ); } public Guile( Serial serial ) diff --git a/Scripts/Mobiles/Monsters/ML/Twisted Weald/Irk.cs b/Scripts/Mobiles/Monsters/ML/Twisted Weald/Irk.cs index c854d4521..ab5b3bf19 100644 --- a/Scripts/Mobiles/Monsters/ML/Twisted Weald/Irk.cs +++ b/Scripts/Mobiles/Monsters/ML/Twisted Weald/Irk.cs @@ -13,6 +13,10 @@ namespace Server.Mobiles [Constructable] public Irk() { + IsParagon = true; + + Hue = DefaultHue; + SetStr( 23, 183 ); SetDex( 259, 360 ); SetInt( 374, 600 ); @@ -46,7 +50,7 @@ namespace Server.Mobiles public override void GenerateLoot() { - AddLoot( LootPack.AosUltraRich, 3 ); + AddLoot( LootPack.UltraRich, 2 ); } /* diff --git a/Scripts/Mobiles/Monsters/ML/Twisted Weald/LadyLissith.cs b/Scripts/Mobiles/Monsters/ML/Twisted Weald/LadyLissith.cs index 97f8b8ee0..93d6460df 100644 --- a/Scripts/Mobiles/Monsters/ML/Twisted Weald/LadyLissith.cs +++ b/Scripts/Mobiles/Monsters/ML/Twisted Weald/LadyLissith.cs @@ -11,6 +11,8 @@ namespace Server.Mobiles [Constructable] public LadyLissith() { + IsParagon = true; + Name = "Lady Lissith"; Hue = 0x452; @@ -44,7 +46,7 @@ namespace Server.Mobiles public override void GenerateLoot() { - AddLoot( LootPack.AosUltraRich, 3 ); + AddLoot( LootPack.UltraRich, 2 ); } public override WeaponAbility GetWeaponAbility() diff --git a/Scripts/Mobiles/Monsters/ML/Twisted Weald/LadySabrix.cs b/Scripts/Mobiles/Monsters/ML/Twisted Weald/LadySabrix.cs index 3cc9a323c..b601250e3 100644 --- a/Scripts/Mobiles/Monsters/ML/Twisted Weald/LadySabrix.cs +++ b/Scripts/Mobiles/Monsters/ML/Twisted Weald/LadySabrix.cs @@ -10,6 +10,8 @@ namespace Server.Mobiles [Constructable] public LadySabrix() { + IsParagon = true; + Name = "Lady Sabrix"; Hue = 0x497; @@ -43,7 +45,7 @@ namespace Server.Mobiles public override void GenerateLoot() { - AddLoot( LootPack.AosUltraRich, 3 ); + AddLoot( LootPack.UltraRich, 2 ); } public override WeaponAbility GetWeaponAbility() diff --git a/Scripts/Mobiles/Monsters/ML/Twisted Weald/Malefic.cs b/Scripts/Mobiles/Monsters/ML/Twisted Weald/Malefic.cs index 02eefe8a9..c62b3491e 100644 --- a/Scripts/Mobiles/Monsters/ML/Twisted Weald/Malefic.cs +++ b/Scripts/Mobiles/Monsters/ML/Twisted Weald/Malefic.cs @@ -10,6 +10,8 @@ namespace Server.Mobiles [Constructable] public Malefic() { + IsParagon = true; + Name = "Malefic"; Hue = 0x455; @@ -51,7 +53,7 @@ namespace Server.Mobiles public override void GenerateLoot() { - AddLoot( LootPack.AosUltraRich, 4 ); + AddLoot( LootPack.UltraRich, 3 ); } public override WeaponAbility GetWeaponAbility() diff --git a/Scripts/Mobiles/Monsters/ML/Twisted Weald/Silk.cs b/Scripts/Mobiles/Monsters/ML/Twisted Weald/Silk.cs index 1cb805623..96fcec3a7 100644 --- a/Scripts/Mobiles/Monsters/ML/Twisted Weald/Silk.cs +++ b/Scripts/Mobiles/Monsters/ML/Twisted Weald/Silk.cs @@ -10,6 +10,8 @@ namespace Server.Mobiles [Constructable] public Silk() { + IsParagon = true; + Name = "Silk"; Hue = 0x47E; @@ -43,7 +45,7 @@ namespace Server.Mobiles public override void GenerateLoot() { - AddLoot( LootPack.AosUltraRich, 3 ); + AddLoot( LootPack.UltraRich, 2 ); } public override WeaponAbility GetWeaponAbility() @@ -52,8 +54,6 @@ namespace Server.Mobiles } public override bool GivesMLMinorArtifact{ get{ return true; } } - public override Poison PoisonImmune{ get{ return Poison.Lethal; } } - public override Poison HitPoison{ get{ return Poison.Lethal; } } public Silk( Serial serial ) : base( serial ) diff --git a/Scripts/Mobiles/Monsters/ML/Twisted Weald/Spite.cs b/Scripts/Mobiles/Monsters/ML/Twisted Weald/Spite.cs index beea7c3d0..c25125ed2 100644 --- a/Scripts/Mobiles/Monsters/ML/Twisted Weald/Spite.cs +++ b/Scripts/Mobiles/Monsters/ML/Twisted Weald/Spite.cs @@ -13,6 +13,10 @@ namespace Server.Mobiles [Constructable] public Spite() { + IsParagon = true; + + Hue = DefaultHue; + SetStr( 53, 214 ); SetDex( 243, 367 ); SetInt( 369, 586 ); @@ -44,7 +48,7 @@ namespace Server.Mobiles public override void GenerateLoot() { - AddLoot( LootPack.AosUltraRich, 3 ); + AddLoot( LootPack.UltraRich, 2 ); } public override bool GivesMLMinorArtifact{ get{ return true; } } diff --git a/Scripts/Mobiles/Monsters/ML/Twisted Weald/Swoop.cs b/Scripts/Mobiles/Monsters/ML/Twisted Weald/Swoop.cs index 1971001e5..da298ca34 100644 --- a/Scripts/Mobiles/Monsters/ML/Twisted Weald/Swoop.cs +++ b/Scripts/Mobiles/Monsters/ML/Twisted Weald/Swoop.cs @@ -11,6 +11,8 @@ namespace Server.Mobiles [Constructable] public Swoop() { + IsParagon = true; + Name = "Swoop"; Hue = 0xE0; @@ -39,15 +41,13 @@ namespace Server.Mobiles Fame = 18000; Karma = 0; - Tamable = false; - PackReg( 4 ); PackArcaneScroll( 0, 1 ); } public override void GenerateLoot() { - AddLoot( LootPack.UltraRich, 3 ); + AddLoot( LootPack.UltraRich, 2 ); } // TODO: Put this attack shared with Hiryu and Lesser Hiryu in one place diff --git a/Scripts/Mobiles/Monsters/ML/Twisted Weald/Virulent.cs b/Scripts/Mobiles/Monsters/ML/Twisted Weald/Virulent.cs index eae0d3f1c..99fe487a4 100644 --- a/Scripts/Mobiles/Monsters/ML/Twisted Weald/Virulent.cs +++ b/Scripts/Mobiles/Monsters/ML/Twisted Weald/Virulent.cs @@ -10,6 +10,8 @@ namespace Server.Mobiles [Constructable] public Virulent() { + IsParagon = true; + Name = "Virulent"; Hue = 0x8FD; @@ -45,7 +47,7 @@ namespace Server.Mobiles public override void GenerateLoot() { - AddLoot( LootPack.AosUltraRich, 4 ); + AddLoot( LootPack.UltraRich, 3 ); } public override WeaponAbility GetWeaponAbility() diff --git a/Scripts/Mobiles/Special/Paragon.cs b/Scripts/Mobiles/Special/Paragon.cs index 46c05dd88..86a822389 100644 --- a/Scripts/Mobiles/Special/Paragon.cs +++ b/Scripts/Mobiles/Special/Paragon.cs @@ -14,7 +14,7 @@ namespace Server.Mobiles public static Type[] Artifacts = new Type[] { - typeof( GoldBricks ), typeof( PhillipsWoodenSteed ), + typeof( GoldBricks ), typeof( PhillipsWoodenSteed ), typeof( AlchemistsBauble ), typeof( ArcticDeathDealer ), typeof( BlazeOfDeath ), typeof( BowOfTheJukaKing ), typeof( BurglarsBandana ), typeof( CavortingClub ), @@ -23,13 +23,13 @@ namespace Server.Mobiles typeof( NightsKiss ), typeof( NoxRangersHeavyCrossbow ), typeof( OrcishVisage ), typeof( PolarBearMask ), typeof( ShieldOfInvulnerability ), typeof( StaffOfPower ), - typeof( VioletCourage ), typeof( HeartOfTheLion ), - typeof( WrathOfTheDryad ), typeof( PixieSwatter ), + typeof( VioletCourage ), typeof( HeartOfTheLion ), + typeof( WrathOfTheDryad ), typeof( PixieSwatter ), typeof( GlovesOfThePugilist ) }; public static int Hue = 0x501; // Paragon hue - + // Buffs public static double HitsBuff = 5.0; public static double StrBuff = 1.05; @@ -50,7 +50,7 @@ namespace Server.Mobiles if ( bc.HitsMaxSeed >= 0 ) bc.HitsMaxSeed = (int)( bc.HitsMaxSeed * HitsBuff ); - + bc.RawStr = (int)( bc.RawStr * StrBuff ); bc.RawInt = (int)( bc.RawInt * IntBuff ); bc.RawDex = (int)( bc.RawDex * DexBuff ); @@ -69,6 +69,7 @@ namespace Server.Mobiles bc.PassiveSpeed /= SpeedBuff; bc.ActiveSpeed /= SpeedBuff; + bc.CurrentSpeed = bc.PassiveSpeed; bc.DamageMin += DamageBuff; bc.DamageMax += DamageBuff; @@ -99,7 +100,7 @@ namespace Server.Mobiles if ( bc.HitsMaxSeed >= 0 ) bc.HitsMaxSeed = (int)( bc.HitsMaxSeed / HitsBuff ); - + bc.RawStr = (int)( bc.RawStr / StrBuff ); bc.RawInt = (int)( bc.RawInt / IntBuff ); bc.RawDex = (int)( bc.RawDex / DexBuff ); @@ -115,9 +116,10 @@ namespace Server.Mobiles if ( skill.Base > 0.0 ) skill.Base /= SkillsBuff; } - + bc.PassiveSpeed *= SpeedBuff; bc.ActiveSpeed *= SpeedBuff; + bc.CurrentSpeed = bc.PassiveSpeed; bc.DamageMin -= DamageBuff; bc.DamageMax -= DamageBuff; @@ -141,7 +143,7 @@ namespace Server.Mobiles if ( Array.IndexOf( Maps, m ) == -1 ) return false; - if ( bc is BaseChampion || bc is Harrower || bc is BaseVendor || bc is BaseEscortable || bc is Clone || bc.GivesMLMinorArtifact ) + if ( bc is BaseChampion || bc is Harrower || bc is BaseVendor || bc is BaseEscortable || bc is Clone || bc.IsParagon ) return false; int fame = bc.Fame;