diff --git a/Distribution/Data/npc-speeds.json b/Distribution/Data/npc-speeds.json index ea3146211..5ea8371ae 100644 --- a/Distribution/Data/npc-speeds.json +++ b/Distribution/Data/npc-speeds.json @@ -1,8 +1,8 @@ [ { "name": "Slow", - "active": 0.6, - "passive": 1.4, + "active": 0.3, + "passive": 0.6, "types": [ "AntLion", "ArcticOgreLord", "BogThing", "Bogle", "BoneKnight", "EarthElemental", @@ -18,57 +18,10 @@ "GreaterDragon", "PlagueBeastLord" ] }, - { - "name": "Fast", - "active": 0.3, - "passive": 1.0, - "types": [ - "LordOaks", "Silvani", "AirElemental", - "AncientWyrm", "Balron", "BladeSpirits", - "DreadSpider", "Efreet", "EtherealWarrior", - "Lich", "Nightmare", "OphidianArchmage", - "OphidianMage", "OphidianWarrior", "OphidianMatriarch", - "OphidianKnight", "PoisonElemental", "Revenant", - "SandVortex", "SavageRider", "SavageShaman", - "SnowElemental", "WhiteWyrm", "Wisp", - "DemonKnight", "GiantBlackWidow", "SummonedAirElemental", - "LesserHiryu", "Hiryu", "LadyOfTheSnow", - "RaiJu", "Ronin", "RuneBeetle", - "Changeling", "LadyJennifyr", "LadyMarai", "MasterJonath", - "MasterMikael", "MasterTheophilus", "RedDeath", - "SirPatrick", "Miasma", "Rend", - "Grobu", "Gnaw", "Guile", - "Irk", "Spite", "LadyLissith", - "LadySabrix", "Malefic", "Silk", - "Virulent", "SeaHorse", "UnholyFamiliar", - "HolyFamiliar", "GiantIceWorm", "Phoenix", - "Succubus", "EnragedRabbit", "EnragedHind", - "EnragedHart", "EnragedBlackBear", "EnragedEagle", - "RagingGrizzlyBear", "CorrosiveSlime", "DarkWisp", - "DarkGuardian", "HarrowerTentacles", "ServantOfSemidar", - "Ninja", "Samurai" - ] - }, - { - "name": "Very Fast", - "active": 0.25, - "passive": 0.7, - "types": [ - "Barracoon", "Mephitis", "Neira", - "Rikktor", "Semidar", "EnergyVortex", - "EliteNinja", "Pixie", "SilverSerpent", - "VorpalBunny", "FleshRenderer", "KhaldunRevenant", - "FactionDragoon", "FactionKnight", "FactionPaladin", - "FactionHenchman", "FactionMercenary", "FactionNecromancer", - "FactionSorceress", "FactionWizard", "FactionBerserker", - "FactionPaladin", "Leviathan", "FireBeetle", - "FanDancer", "FactionDeathKnight" - ] - }, { "name": "Medium", - "active": 0.5, - "passive": 1.2, + "active": 0.25, + "passive": 0.5, "types": [ "AcidElemental", "AgapiteElemental", "Alligator", "AncientLich", "Betrayer", "Bird", @@ -144,5 +97,52 @@ "Parrot", "ElfBrigand", "GreaterMongbat", "AnimatedWeapon", "Reaper", "Corpser" ] + }, + { + "name": "Fast", + "active": 0.2, + "passive": 0.4, + "types": [ + "LordOaks", "Silvani", "AirElemental", + "AncientWyrm", "Balron", "BladeSpirits", + "DreadSpider", "Efreet", "EtherealWarrior", + "Lich", "Nightmare", "OphidianArchmage", + "OphidianMage", "OphidianWarrior", "OphidianMatriarch", + "OphidianKnight", "PoisonElemental", + "SandVortex", "SavageRider", "SavageShaman", + "SnowElemental", "WhiteWyrm", "Wisp", + "DemonKnight", "GiantBlackWidow", "SummonedAirElemental", + "LesserHiryu", "Hiryu", "LadyOfTheSnow", + "RaiJu", "Ronin", "RuneBeetle", + "Changeling", "LadyJennifyr", "LadyMarai", "MasterJonath", + "MasterMikael", "MasterTheophilus", "RedDeath", + "SirPatrick", "Miasma", "Rend", + "Grobu", "Gnaw", "Guile", + "Irk", "Spite", "LadyLissith", + "LadySabrix", "Malefic", "Silk", + "Virulent", "SeaHorse", "UnholyFamiliar", + "HolyFamiliar", "GiantIceWorm", "Phoenix", + "Succubus", "EnragedRabbit", "EnragedHind", + "EnragedHart", "EnragedBlackBear", "EnragedEagle", + "RagingGrizzlyBear", "CorrosiveSlime", "DarkWisp", + "DarkGuardian", "HarrowerTentacles", "ServantOfSemidar", + "Reptalon" + ] + }, + { + "name": "Very Fast", + "active": 0.175, + "passive": 0.35, + "types": [ + "Barracoon", "Mephitis", "Neira", + "Rikktor", "Semidar", "EnergyVortex", + "EliteNinja", "Pixie", "SilverSerpent", + "VorpalBunny", "FleshRenderer", "KhaldunRevenant", + "FactionDragoon", "FactionKnight", "FactionPaladin", + "FactionHenchman", "FactionMercenary", "FactionNecromancer", + "FactionSorceress", "FactionWizard", "FactionBerserker", + "FactionPaladin", "Leviathan", "FireBeetle", + "FanDancer", "FactionDeathKnight", "Revenant" + ] } ] diff --git a/Projects/UOContent/Engines/Ethics/Evil/Mobiles/UnholySteed.cs b/Projects/UOContent/Engines/Ethics/Evil/Mobiles/UnholySteed.cs index 5546f571c..ec13266a9 100644 --- a/Projects/UOContent/Engines/Ethics/Evil/Mobiles/UnholySteed.cs +++ b/Projects/UOContent/Engines/Ethics/Evil/Mobiles/UnholySteed.cs @@ -6,7 +6,7 @@ namespace Server.Mobiles { [Constructible] public UnholySteed() - : base("a dark steed", 0x74, 0x3EA7, AIType.AI_Melee, FightMode.Aggressor, 10, 1) + : base("a dark steed", 0x74, 0x3EA7, AIType.AI_Melee, FightMode.Aggressor) { SetStr(496, 525); SetDex(86, 105); diff --git a/Projects/UOContent/Engines/Ethics/Hero/Mobiles/HolySteed.cs b/Projects/UOContent/Engines/Ethics/Hero/Mobiles/HolySteed.cs index c6c41aa1e..da52600f8 100644 --- a/Projects/UOContent/Engines/Ethics/Hero/Mobiles/HolySteed.cs +++ b/Projects/UOContent/Engines/Ethics/Hero/Mobiles/HolySteed.cs @@ -6,7 +6,7 @@ namespace Server.Mobiles { [Constructible] public HolySteed() - : base("a silver steed", 0x75, 0x3EA8, AIType.AI_Melee, FightMode.Aggressor, 10, 1) + : base("a silver steed", 0x75, 0x3EA8, AIType.AI_Melee, FightMode.Aggressor) { SetStr(496, 525); SetDex(86, 105); diff --git a/Projects/UOContent/Engines/Factions/Mobiles/FactionWarHorse.cs b/Projects/UOContent/Engines/Factions/Mobiles/FactionWarHorse.cs index e313de059..e0aa13256 100644 --- a/Projects/UOContent/Engines/Factions/Mobiles/FactionWarHorse.cs +++ b/Projects/UOContent/Engines/Factions/Mobiles/FactionWarHorse.cs @@ -10,7 +10,7 @@ namespace Server.Factions [Constructible] public FactionWarHorse(Faction faction = null) - : base("a war horse", 0xE2, 0x3EA0, AIType.AI_Melee, FightMode.Aggressor, 10, 1) + : base("a war horse", 0xE2, 0x3EA0, AIType.AI_Melee, FightMode.Aggressor) { BaseSoundID = 0xA8; diff --git a/Projects/UOContent/Engines/Factions/Mobiles/Guards/BaseFactionGuard.cs b/Projects/UOContent/Engines/Factions/Mobiles/Guards/BaseFactionGuard.cs index ebabde5c0..5b59ecb6f 100644 --- a/Projects/UOContent/Engines/Factions/Mobiles/Guards/BaseFactionGuard.cs +++ b/Projects/UOContent/Engines/Factions/Mobiles/Guards/BaseFactionGuard.cs @@ -37,7 +37,6 @@ namespace Server.Factions public BaseFactionGuard(string title) : base(AIType.AI_Melee) { - SetSpeed(0.3, 1.0); Orders = new Orders(this); Title = title; diff --git a/Projects/UOContent/Engines/ML Quests/Definitions/AGhostOfCovetous.cs b/Projects/UOContent/Engines/ML Quests/Definitions/AGhostOfCovetous.cs index 63ebe8524..d8e567687 100644 --- a/Projects/UOContent/Engines/ML Quests/Definitions/AGhostOfCovetous.cs +++ b/Projects/UOContent/Engines/ML Quests/Definitions/AGhostOfCovetous.cs @@ -96,8 +96,7 @@ namespace Server.Engines.MLQuests.Definitions public class Ben : BaseCreature { [Constructible] - public Ben() - : base(AIType.AI_Vendor, FightMode.None, 2) + public Ben() : base(AIType.AI_Vendor, FightMode.None, 2) { Title = "the Apprentice Necromancer"; Body = 0x190; diff --git a/Projects/UOContent/Engines/ML Quests/Definitions/Bedlam.cs b/Projects/UOContent/Engines/ML Quests/Definitions/Bedlam.cs index 390262e51..fe4fbdcec 100644 --- a/Projects/UOContent/Engines/ML Quests/Definitions/Bedlam.cs +++ b/Projects/UOContent/Engines/ML Quests/Definitions/Bedlam.cs @@ -77,7 +77,7 @@ namespace Server.Engines.MLQuests.Definitions Female = true; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -122,7 +122,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -175,7 +175,7 @@ namespace Server.Engines.MLQuests.Definitions Female = true; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); diff --git a/Projects/UOContent/Engines/ML Quests/Definitions/Britannia.cs b/Projects/UOContent/Engines/ML Quests/Definitions/Britannia.cs index 5f3b2ce96..df01d3119 100644 --- a/Projects/UOContent/Engines/ML Quests/Definitions/Britannia.cs +++ b/Projects/UOContent/Engines/ML Quests/Definitions/Britannia.cs @@ -116,7 +116,7 @@ namespace Server.Engines.MLQuests.Definitions Female = true; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -169,7 +169,7 @@ namespace Server.Engines.MLQuests.Definitions Hue = 0x83F2; // TODO: Random human hue? Why??? Body = 0x32; - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); } diff --git a/Projects/UOContent/Engines/ML Quests/Definitions/Heartwood.cs b/Projects/UOContent/Engines/ML Quests/Definitions/Heartwood.cs index 1dd07828e..6594c71fb 100644 --- a/Projects/UOContent/Engines/ML Quests/Definitions/Heartwood.cs +++ b/Projects/UOContent/Engines/ML Quests/Definitions/Heartwood.cs @@ -2012,7 +2012,7 @@ namespace Server.Engines.MLQuests.Definitions Female = true; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -2079,7 +2079,7 @@ namespace Server.Engines.MLQuests.Definitions Female = true; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -2147,7 +2147,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -2213,7 +2213,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -2280,7 +2280,7 @@ namespace Server.Engines.MLQuests.Definitions Female = true; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -2346,7 +2346,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -2410,7 +2410,7 @@ namespace Server.Engines.MLQuests.Definitions Female = true; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -2482,7 +2482,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -2546,7 +2546,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -2624,7 +2624,7 @@ namespace Server.Engines.MLQuests.Definitions Female = true; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -2684,7 +2684,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -2748,7 +2748,7 @@ namespace Server.Engines.MLQuests.Definitions Female = true; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -2810,7 +2810,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -2887,7 +2887,7 @@ namespace Server.Engines.MLQuests.Definitions Female = true; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -2971,7 +2971,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -3039,7 +3039,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -3109,7 +3109,7 @@ namespace Server.Engines.MLQuests.Definitions Female = true; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -3172,7 +3172,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -3242,7 +3242,7 @@ namespace Server.Engines.MLQuests.Definitions Female = true; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -3306,7 +3306,7 @@ namespace Server.Engines.MLQuests.Definitions Female = true; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -3369,7 +3369,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -3419,7 +3419,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -3492,7 +3492,7 @@ namespace Server.Engines.MLQuests.Definitions Female = true; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -3555,7 +3555,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -3625,7 +3625,7 @@ namespace Server.Engines.MLQuests.Definitions Female = true; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -3690,7 +3690,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -3754,7 +3754,7 @@ namespace Server.Engines.MLQuests.Definitions Female = true; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -3817,7 +3817,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -3881,7 +3881,7 @@ namespace Server.Engines.MLQuests.Definitions Female = true; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -3943,7 +3943,7 @@ namespace Server.Engines.MLQuests.Definitions Female = true; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -3988,7 +3988,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -4046,7 +4046,7 @@ namespace Server.Engines.MLQuests.Definitions Female = true; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -4090,7 +4090,7 @@ namespace Server.Engines.MLQuests.Definitions Female = true; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -4139,7 +4139,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -4185,7 +4185,7 @@ namespace Server.Engines.MLQuests.Definitions Female = true; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -4231,7 +4231,7 @@ namespace Server.Engines.MLQuests.Definitions Female = true; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -4275,7 +4275,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -4319,7 +4319,7 @@ namespace Server.Engines.MLQuests.Definitions Female = true; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -4364,7 +4364,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -4415,7 +4415,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -4459,7 +4459,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -4512,7 +4512,7 @@ namespace Server.Engines.MLQuests.Definitions Female = true; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -4569,7 +4569,7 @@ namespace Server.Engines.MLQuests.Definitions Female = true; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -4621,7 +4621,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -4686,7 +4686,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -4742,7 +4742,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -4797,7 +4797,7 @@ namespace Server.Engines.MLQuests.Definitions Female = true; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -4853,7 +4853,7 @@ namespace Server.Engines.MLQuests.Definitions Female = true; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); diff --git a/Projects/UOContent/Engines/ML Quests/Definitions/Heritage.cs b/Projects/UOContent/Engines/ML Quests/Definitions/Heritage.cs index 92fa5d7bb..d705f351e 100644 --- a/Projects/UOContent/Engines/ML Quests/Definitions/Heritage.cs +++ b/Projects/UOContent/Engines/ML Quests/Definitions/Heritage.cs @@ -283,7 +283,7 @@ namespace Server.Engines.MLQuests.Definitions Body = 788; BaseSoundID = 0x3EE; - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); } @@ -622,7 +622,7 @@ namespace Server.Engines.MLQuests.Definitions Body = 400; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); AddItem(new Tunic(Utility.RandomNeutralHue())); @@ -678,7 +678,7 @@ namespace Server.Engines.MLQuests.Definitions Body = 400; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); AddItem(new FancyShirt(Utility.RandomNeutralHue())); @@ -722,7 +722,7 @@ namespace Server.Engines.MLQuests.Definitions Body = 401; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); diff --git a/Projects/UOContent/Engines/ML Quests/Definitions/HonestBeggar.cs b/Projects/UOContent/Engines/ML Quests/Definitions/HonestBeggar.cs index d9f5a2bdb..2b54401c5 100644 --- a/Projects/UOContent/Engines/ML Quests/Definitions/HonestBeggar.cs +++ b/Projects/UOContent/Engines/ML Quests/Definitions/HonestBeggar.cs @@ -63,7 +63,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -107,7 +107,7 @@ namespace Server.Engines.MLQuests.Definitions Female = true; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); diff --git a/Projects/UOContent/Engines/ML Quests/Definitions/Ilshenar.cs b/Projects/UOContent/Engines/ML Quests/Definitions/Ilshenar.cs index 3d9967a7a..7887057f4 100644 --- a/Projects/UOContent/Engines/ML Quests/Definitions/Ilshenar.cs +++ b/Projects/UOContent/Engines/ML Quests/Definitions/Ilshenar.cs @@ -180,7 +180,7 @@ namespace Server.Engines.MLQuests.Definitions Body = 400; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); var hairHue = 0x3B2 + Utility.Random(2); @@ -235,7 +235,7 @@ namespace Server.Engines.MLQuests.Definitions Female = true; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -286,7 +286,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); diff --git a/Projects/UOContent/Engines/ML Quests/Definitions/Malas.cs b/Projects/UOContent/Engines/ML Quests/Definitions/Malas.cs index 0c60b8265..56a595140 100644 --- a/Projects/UOContent/Engines/ML Quests/Definitions/Malas.cs +++ b/Projects/UOContent/Engines/ML Quests/Definitions/Malas.cs @@ -35,7 +35,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); AddItem(new Backpack()); diff --git a/Projects/UOContent/Engines/ML Quests/Definitions/MistakenIdentity.cs b/Projects/UOContent/Engines/ML Quests/Definitions/MistakenIdentity.cs index cb07d63cb..42b2eed73 100644 --- a/Projects/UOContent/Engines/ML Quests/Definitions/MistakenIdentity.cs +++ b/Projects/UOContent/Engines/ML Quests/Definitions/MistakenIdentity.cs @@ -203,7 +203,7 @@ namespace Server.Engines.MLQuests.Definitions Female = true; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -250,7 +250,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); AddItem(new Backpack()); @@ -308,7 +308,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = 0x83E8; - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); HairItemID = 0x2049; diff --git a/Projects/UOContent/Engines/ML Quests/Definitions/NewHavenSkillTraining.cs b/Projects/UOContent/Engines/ML Quests/Definitions/NewHavenSkillTraining.cs index 5e4535cd1..bdcca750f 100644 --- a/Projects/UOContent/Engines/ML Quests/Definitions/NewHavenSkillTraining.cs +++ b/Projects/UOContent/Engines/ML Quests/Definitions/NewHavenSkillTraining.cs @@ -654,7 +654,7 @@ namespace Server.Engines.MLQuests.Definitions FacialHairItemID = 0x204D; FacialHairHue = 0x47D; - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); SetSkill(SkillName.Anatomy, 120.0); @@ -719,7 +719,7 @@ namespace Server.Engines.MLQuests.Definitions FacialHairItemID = 0x204D; FacialHairHue = 0x455; - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); SetSkill(SkillName.EvalInt, 120.0); @@ -776,7 +776,7 @@ namespace Server.Engines.MLQuests.Definitions HairItemID = 0x203C; HairHue = 0x455; - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); SetSkill(SkillName.Anatomy, 120.0); @@ -855,7 +855,7 @@ namespace Server.Engines.MLQuests.Definitions HairHue = 0x47D; Female = true; - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); SetSkill(SkillName.Anatomy, 120.0); @@ -939,7 +939,7 @@ namespace Server.Engines.MLQuests.Definitions FacialHairItemID = 0x204D; FacialHairHue = 0x455; - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); SetSkill(SkillName.Anatomy, 120.0); @@ -1021,7 +1021,7 @@ namespace Server.Engines.MLQuests.Definitions HairItemID = 0x203B; HairHue = 0x44E; - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); SetSkill(SkillName.Anatomy, 120.0); @@ -1086,7 +1086,7 @@ namespace Server.Engines.MLQuests.Definitions HairItemID = 0x203C; HairHue = 0x8A7; - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); SetSkill(SkillName.Anatomy, 120.0); @@ -1146,7 +1146,7 @@ namespace Server.Engines.MLQuests.Definitions Hue = 0x8374; HairItemID = 0; - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); SetSkill(SkillName.Anatomy, 120.0); @@ -1228,7 +1228,7 @@ namespace Server.Engines.MLQuests.Definitions HairItemID = 0x203D; HairHue = 0x457; - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); SetSkill(SkillName.EvalInt, 120.0); @@ -1284,7 +1284,7 @@ namespace Server.Engines.MLQuests.Definitions HairItemID = 0x203B; HairHue = 0x455; - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); SetSkill(SkillName.EvalInt, 120.0); @@ -1367,7 +1367,7 @@ namespace Server.Engines.MLQuests.Definitions HairItemID = 0x203D; HairHue = 0x455; - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); SetSkill(SkillName.EvalInt, 120.0); @@ -1424,7 +1424,7 @@ namespace Server.Engines.MLQuests.Definitions HairItemID = 0x203C; HairHue = 0x47D; - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); SetSkill(SkillName.EvalInt, 120.0); @@ -1480,7 +1480,7 @@ namespace Server.Engines.MLQuests.Definitions HairItemID = 0x203C; HairHue = 0x455; - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); SetSkill(SkillName.EvalInt, 120.0); @@ -1542,7 +1542,7 @@ namespace Server.Engines.MLQuests.Definitions HairItemID = 0x203D; HairHue = 0x46C; - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); SetSkill(SkillName.ArmsLore, 120.0); @@ -1604,7 +1604,7 @@ namespace Server.Engines.MLQuests.Definitions FacialHairItemID = 0x203E; FacialHairHue = 0x477; - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); SetSkill(SkillName.Anatomy, 120.0); @@ -1662,7 +1662,7 @@ namespace Server.Engines.MLQuests.Definitions HairItemID = 0x203B; HairHue = 0x477; - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); SetSkill(SkillName.Anatomy, 120.0); @@ -1720,7 +1720,7 @@ namespace Server.Engines.MLQuests.Definitions HairItemID = 0x203C; HairHue = 0x456; - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); SetSkill(SkillName.Anatomy, 120.0); @@ -1848,7 +1848,7 @@ namespace Server.Engines.MLQuests.Definitions Title = "the Hiding Instructor"; Body = 0xF7; - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); SetSkill(SkillName.Hiding, 120.0); @@ -1900,7 +1900,7 @@ namespace Server.Engines.MLQuests.Definitions HairItemID = 0x203B; HairHue = 0x455; - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); SetSkill(SkillName.Hiding, 120.0); @@ -1962,7 +1962,7 @@ namespace Server.Engines.MLQuests.Definitions FacialHairItemID = 0x204B; FacialHairHue = 0x47D; - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); SetSkill(SkillName.Hiding, 120.0); @@ -2100,7 +2100,7 @@ namespace Server.Engines.MLQuests.Definitions HairItemID = 0x203D; HairHue = 0x457; - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); SetSkill(SkillName.Magery, 120.0); @@ -2180,7 +2180,7 @@ namespace Server.Engines.MLQuests.Definitions HairItemID = 0x203C; HairHue = 0x455; - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); SetSkill(SkillName.Magery, 120.0); @@ -2240,7 +2240,7 @@ namespace Server.Engines.MLQuests.Definitions FacialHairItemID = 0x204D; FacialHairHue = 0x44E; - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); SetSkill(SkillName.ArmsLore, 120.0); @@ -2301,7 +2301,7 @@ namespace Server.Engines.MLQuests.Definitions HairItemID = 0x203B; HairHue = 0x47B; - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); SetSkill(SkillName.ArmsLore, 120.0); diff --git a/Projects/UOContent/Engines/ML Quests/Definitions/NewHavenTraining.cs b/Projects/UOContent/Engines/ML Quests/Definitions/NewHavenTraining.cs index 97ebd7e94..f3d9b8ba9 100644 --- a/Projects/UOContent/Engines/ML Quests/Definitions/NewHavenTraining.cs +++ b/Projects/UOContent/Engines/ML Quests/Definitions/NewHavenTraining.cs @@ -270,7 +270,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -349,7 +349,7 @@ namespace Server.Engines.MLQuests.Definitions Female = true; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -412,7 +412,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -473,7 +473,7 @@ namespace Server.Engines.MLQuests.Definitions Female = true; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -530,7 +530,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -599,7 +599,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -653,7 +653,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -712,7 +712,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -769,7 +769,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -815,7 +815,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -874,7 +874,7 @@ namespace Server.Engines.MLQuests.Definitions Female = true; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); @@ -935,7 +935,7 @@ namespace Server.Engines.MLQuests.Definitions Female = false; Hue = Race.RandomSkinHue(); - SetSpeed(0.5, 2); + SetSpeed(0.5, 2.0); InitStats(100, 100, 25); Utility.AssignRandomHair(this); diff --git a/Projects/UOContent/Engines/Quests/Dark Tides/Mobiles/SummonedPaladin.cs b/Projects/UOContent/Engines/Quests/Dark Tides/Mobiles/SummonedPaladin.cs index 6164a70f0..a01569975 100644 --- a/Projects/UOContent/Engines/Quests/Dark Tides/Mobiles/SummonedPaladin.cs +++ b/Projects/UOContent/Engines/Quests/Dark Tides/Mobiles/SummonedPaladin.cs @@ -13,7 +13,6 @@ namespace Server.Engines.Quests.Necro { m_Necromancer = necromancer; - SetSpeed(0.3, 1.0); InitStats(45, 30, 5); Title = "the Paladin"; diff --git a/Projects/UOContent/Engines/Quests/Emino's Undertaking/Mobiles/Henchman.cs b/Projects/UOContent/Engines/Quests/Emino's Undertaking/Mobiles/Henchman.cs index 69d17d058..d4e24e217 100644 --- a/Projects/UOContent/Engines/Quests/Emino's Undertaking/Mobiles/Henchman.cs +++ b/Projects/UOContent/Engines/Quests/Emino's Undertaking/Mobiles/Henchman.cs @@ -8,7 +8,6 @@ namespace Server.Engines.Quests.Ninja [Constructible] public Henchman() : base(AIType.AI_Melee, FightMode.Aggressor) { - SetSpeed(0.3, 1.0); InitStats(45, 30, 5); Hue = Race.Human.RandomSkinHue(); diff --git a/Projects/UOContent/Engines/Quests/Haochi's Trials/Mobiles/CursedSoul.cs b/Projects/UOContent/Engines/Quests/Haochi's Trials/Mobiles/CursedSoul.cs index 4e9e4b2d2..151f85901 100644 --- a/Projects/UOContent/Engines/Quests/Haochi's Trials/Mobiles/CursedSoul.cs +++ b/Projects/UOContent/Engines/Quests/Haochi's Trials/Mobiles/CursedSoul.cs @@ -11,7 +11,6 @@ namespace Server.Engines.Quests.Samurai Body = 3; BaseSoundID = 471; - SetSpeed(0.3, 1.0); SetStr(20, 40); SetDex(40, 60); SetInt(15, 25); diff --git a/Projects/UOContent/Engines/Quests/Haochi's Trials/Mobiles/DeadlyImp.cs b/Projects/UOContent/Engines/Quests/Haochi's Trials/Mobiles/DeadlyImp.cs index abfcf594b..7d9085567 100644 --- a/Projects/UOContent/Engines/Quests/Haochi's Trials/Mobiles/DeadlyImp.cs +++ b/Projects/UOContent/Engines/Quests/Haochi's Trials/Mobiles/DeadlyImp.cs @@ -11,7 +11,6 @@ namespace Server.Engines.Quests.Samurai BaseSoundID = 422; Hue = 0x66A; - SetSpeed(0.3, 1.0); SetStr(91, 115); SetDex(61, 80); SetInt(86, 105); diff --git a/Projects/UOContent/Engines/Quests/Haochi's Trials/Mobiles/DiseasedCat.cs b/Projects/UOContent/Engines/Quests/Haochi's Trials/Mobiles/DiseasedCat.cs index 6b47e683d..c73bbc558 100644 --- a/Projects/UOContent/Engines/Quests/Haochi's Trials/Mobiles/DiseasedCat.cs +++ b/Projects/UOContent/Engines/Quests/Haochi's Trials/Mobiles/DiseasedCat.cs @@ -11,7 +11,6 @@ namespace Server.Engines.Quests.Samurai Hue = Utility.RandomAnimalHue(); BaseSoundID = 0x69; - SetSpeed(0.3, 1.0); SetStr(9); SetDex(35); SetInt(5); diff --git a/Projects/UOContent/Engines/Quests/Haochi's Trials/Mobiles/FierceDragon.cs b/Projects/UOContent/Engines/Quests/Haochi's Trials/Mobiles/FierceDragon.cs index 010514878..914aec85e 100644 --- a/Projects/UOContent/Engines/Quests/Haochi's Trials/Mobiles/FierceDragon.cs +++ b/Projects/UOContent/Engines/Quests/Haochi's Trials/Mobiles/FierceDragon.cs @@ -10,7 +10,6 @@ namespace Server.Engines.Quests.Samurai Body = 103; BaseSoundID = 362; - SetSpeed(0.3, 1.0); SetStr(6000, 6020); SetDex(0); SetInt(850, 870); diff --git a/Projects/UOContent/Engines/Quests/Haochi's Trials/Mobiles/InjuredWolf.cs b/Projects/UOContent/Engines/Quests/Haochi's Trials/Mobiles/InjuredWolf.cs index 484342255..fd7ab7078 100644 --- a/Projects/UOContent/Engines/Quests/Haochi's Trials/Mobiles/InjuredWolf.cs +++ b/Projects/UOContent/Engines/Quests/Haochi's Trials/Mobiles/InjuredWolf.cs @@ -12,7 +12,6 @@ namespace Server.Engines.Quests.Samurai Hue = Utility.RandomAnimalHue(); - SetSpeed(0.3, 1.0); SetStr(10, 20); SetDex(45, 65); SetInt(10, 15); diff --git a/Projects/UOContent/Engines/Quests/Haochi's Trials/Mobiles/YoungNinja.cs b/Projects/UOContent/Engines/Quests/Haochi's Trials/Mobiles/YoungNinja.cs index 51d97861a..f3b63e1b2 100644 --- a/Projects/UOContent/Engines/Quests/Haochi's Trials/Mobiles/YoungNinja.cs +++ b/Projects/UOContent/Engines/Quests/Haochi's Trials/Mobiles/YoungNinja.cs @@ -8,7 +8,6 @@ namespace Server.Engines.Quests.Samurai [Constructible] public YoungNinja() : base(AIType.AI_Melee, FightMode.Aggressor) { - SetSpeed(0.3, 1.0); InitStats(45, 30, 5); SetHits(20, 30); diff --git a/Projects/UOContent/Engines/Quests/Haochi's Trials/Mobiles/YoungRonin.cs b/Projects/UOContent/Engines/Quests/Haochi's Trials/Mobiles/YoungRonin.cs index 29644ffbd..c2f1aed70 100644 --- a/Projects/UOContent/Engines/Quests/Haochi's Trials/Mobiles/YoungRonin.cs +++ b/Projects/UOContent/Engines/Quests/Haochi's Trials/Mobiles/YoungRonin.cs @@ -8,7 +8,6 @@ namespace Server.Engines.Quests.Samurai [Constructible] public YoungRonin() : base(AIType.AI_Melee, FightMode.Aggressor) { - SetSpeed(0.3, 1.0); InitStats(45, 30, 5); SetHits(10, 20); diff --git a/Projects/UOContent/Engines/Quests/Uzeraan Turmoil/Mobiles/MilitiaFighter.cs b/Projects/UOContent/Engines/Quests/Uzeraan Turmoil/Mobiles/MilitiaFighter.cs index 505add3d7..34b3947a6 100644 --- a/Projects/UOContent/Engines/Quests/Uzeraan Turmoil/Mobiles/MilitiaFighter.cs +++ b/Projects/UOContent/Engines/Quests/Uzeraan Turmoil/Mobiles/MilitiaFighter.cs @@ -11,7 +11,6 @@ namespace Server.Engines.Quests.Haven [Constructible] public MilitiaFighter() : base(AIType.AI_Melee) { - SetSpeed(0.3, 1.0); InitStats(40, 30, 5); Title = "the Militia Fighter"; diff --git a/Projects/UOContent/Holiday Stuff/Halloween/2006/Engines/TrickOrTreat.cs b/Projects/UOContent/Holiday Stuff/Halloween/2006/Engines/TrickOrTreat.cs index 9eda894b9..992214b14 100644 --- a/Projects/UOContent/Holiday Stuff/Halloween/2006/Engines/TrickOrTreat.cs +++ b/Projects/UOContent/Holiday Stuff/Halloween/2006/Engines/TrickOrTreat.cs @@ -278,7 +278,6 @@ namespace Server.Engines.Events public NaughtyTwin(Mobile from) : base(AIType.AI_Melee, FightMode.None) { - SetSpeed(0.3, 1.0); if (TrickOrTreat.CheckMobile(from)) { Body = from.Body; diff --git a/Projects/UOContent/Holiday Stuff/Halloween/2012/Engines/PlayerZombies.cs b/Projects/UOContent/Holiday Stuff/Halloween/2012/Engines/PlayerZombies.cs index efb2cf1e0..30e41249e 100644 --- a/Projects/UOContent/Holiday Stuff/Halloween/2012/Engines/PlayerZombies.cs +++ b/Projects/UOContent/Holiday Stuff/Halloween/2012/Engines/PlayerZombies.cs @@ -166,7 +166,6 @@ namespace Server.Engines.Events Body = 0x93; BaseSoundID = 0x1c3; - SetSpeed(0.3, 1.0); SetStr(500); SetDex(500); SetInt(500); diff --git a/Projects/UOContent/Items/Talismans/TalismanSummons.cs b/Projects/UOContent/Items/Talismans/TalismanSummons.cs index 4f8a4ddf9..262334eb7 100644 --- a/Projects/UOContent/Items/Talismans/TalismanSummons.cs +++ b/Projects/UOContent/Items/Talismans/TalismanSummons.cs @@ -11,7 +11,6 @@ namespace Server.Mobiles public BaseTalismanSummon() : base(AIType.AI_Melee, FightMode.None) { - SetSpeed(0.3, 1.0); // TODO: Stats/skills } diff --git a/Projects/UOContent/Mobiles/AI/BaseAI.cs b/Projects/UOContent/Mobiles/AI/BaseAI.cs index dc6e47c81..4b8a4772a 100644 --- a/Projects/UOContent/Mobiles/AI/BaseAI.cs +++ b/Projects/UOContent/Mobiles/AI/BaseAI.cs @@ -7,6 +7,7 @@ using Server.Engines.Spawners; using Server.Factions; using Server.Gumps; using Server.Items; +using Server.Logging; using Server.Network; using Server.Spells; using Server.Spells.Spellweaving; @@ -1091,7 +1092,7 @@ namespace Server.Mobiles m_Mobile.ControlMaster.RevealingAction(); m_Mobile.CurrentSpeed = m_Mobile.PassiveSpeed; m_Mobile.PlaySound(m_Mobile.GetIdleSound()); - m_Mobile.Warmode = true; + m_Mobile.Warmode = false; m_Mobile.Combatant = null; break; } @@ -1110,8 +1111,7 @@ namespace Server.Mobiles m_Mobile.PlaySound(m_Mobile.GetIdleSound()); m_Mobile.Warmode = true; m_Mobile.Combatant = null; - var petname = $"{m_Mobile.Name}"; - m_Mobile.ControlMaster.SendLocalizedMessage(1049671, petname); // ~1_PETNAME~ is now guarding you. + m_Mobile.ControlMaster.SendLocalizedMessage(1049671, m_Mobile.Name); // ~1_PETNAME~ is now guarding you. break; } @@ -1368,10 +1368,6 @@ namespace Server.Mobiles { m_Mobile.CurrentSpeed = 0.1; } - else if (m_Mobile.CurrentSpeed == m_Mobile.ActiveSpeed && m_Mobile.ControlTarget == m_Mobile.ControlMaster) - { - m_Mobile.CurrentSpeed = Math.Max(SpeedInfo.MinDelay, m_Mobile.CurrentSpeed * 0.5); - } } } } @@ -1923,19 +1919,31 @@ namespace Server.Mobiles public double TransformMoveDelay(double delay) { - // Non-monsters in PVP combat (like pets) are penalized - if (!m_Mobile.IsMonster && m_Mobile.InActivePVPCombat() && delay <= SpeedInfo.MaxDelay) + // Monster is passive + if (m_Mobile is { Controlled: false, Summoned: false } && Math.Abs(delay - m_Mobile.PassiveSpeed) < 0.0001) { - delay += 0.4; + delay *= 3; } if (!m_Mobile.IsDeadPet && (m_Mobile.ReduceSpeedWithDamage || m_Mobile.IsSubdued)) { - double offset = m_Mobile.StamMax <= 0 ? 1.0 : Math.Max(0, m_Mobile.Stam) / (double)m_Mobile.StamMax; + int stats, statsMax; + if (Core.HS) + { + stats = m_Mobile.Stam; + statsMax = m_Mobile.StamMax; + } + else + { + stats = m_Mobile.Hits; + statsMax = m_Mobile.HitsMax; + } + + var offset = statsMax <= 0 ? 1.0 : Math.Max(0, stats) / (double)statsMax; if (offset < 1.0) { - delay += delay * (1.0 - offset); + delay += m_Mobile.PassiveSpeed * (1.0 - offset); } } @@ -1969,7 +1977,6 @@ namespace Server.Mobiles m_Mobile.Direction = d; var delay = (int)(TransformMoveDelay(m_Mobile.CurrentSpeed) * 1000); - NextMove += delay; if (Core.TickCount - NextMove > 0) @@ -2708,7 +2715,7 @@ namespace Server.Mobiles */ public virtual void OnCurrentSpeedChanged() { - m_Timer.Interval = TimeSpan.FromSeconds(Math.Max(0.0, m_Mobile.CurrentSpeed)); + m_Timer.Interval = TimeSpan.FromSeconds(Math.Max(0.008, m_Mobile.CurrentSpeed)); } private class InternalEntry : ContextMenuEntry diff --git a/Projects/UOContent/Mobiles/AI/LegacySpeedInfo.cs b/Projects/UOContent/Mobiles/AI/LegacySpeedInfo.cs deleted file mode 100644 index d4182b3b9..000000000 --- a/Projects/UOContent/Mobiles/AI/LegacySpeedInfo.cs +++ /dev/null @@ -1,77 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Text.Json.Serialization; -using Server.Json; -using Server.Logging; - -namespace Server; - -public class LegacySpeedInfo -{ - private static readonly ILogger logger = LogFactory.GetLogger(typeof(LegacySpeedInfo)); - - private const string _tablePath = "Data/npc-speeds.json"; - private static Dictionary m_Table; - - public static bool Enabled { get; private set; } - - public static bool GetSpeeds(Type type, out double activeSpeed, out double passiveSpeed) - { - if (!(Enabled && m_Table.TryGetValue(type, out var sp))) - { - activeSpeed = 0; - passiveSpeed = 0; - return false; - } - - activeSpeed = sp.ActiveSpeed; - passiveSpeed = sp.PassiveSpeed; - - return true; - } - - public static void Configure() - { - Enabled = ServerConfiguration.GetSetting("movement.delay.useLegacySpeeds", !Core.HS); - - if (!Enabled) - { - return; - } - - var path = Path.Combine(Core.BaseDirectory, _tablePath); - if (!File.Exists(path)) - { - logger.Warning($"Cannot find {path}. Disabling legacy speed system."); - Enabled = false; - return; - } - - var speeds = JsonConfig.Deserialize(path); - - m_Table = new Dictionary(); - - for (var i = 0; i < speeds.Length; ++i) - { - var info = speeds[i]; - - foreach (var type in info.Types) - { - m_Table[type] = info; - } - } - } - - public record LegacySpeedEntry - { - [JsonPropertyName("active")] - public double ActiveSpeed { get; init; } - - [JsonPropertyName("passive")] - public double PassiveSpeed { get; init; } - - [JsonPropertyName("types")] - public HashSet Types { get; init; } - } -} diff --git a/Projects/UOContent/Mobiles/AI/SpeedInfo.cs b/Projects/UOContent/Mobiles/AI/SpeedInfo.cs deleted file mode 100644 index 36811f37a..000000000 --- a/Projects/UOContent/Mobiles/AI/SpeedInfo.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System; -using Server.Mobiles; - -namespace Server; - -public static class SpeedInfo -{ - public static double MinDelay { get; private set; } - public static double MaxDelay { get; private set; } - public static double MinMonsterDelay { get; private set; } - public static double MaxMonsterDelay { get; private set; } - - // Determines the maximum dex for delay by dex - public static int MaxDex { get; private set; } - public static int MaxMonsterDex { get; private set; } - - public static void Configure() - { - // Default speed determined by dex (0 -> 190) for non-monster NPCs including pets - MinDelay = ServerConfiguration.GetOrUpdateSetting("movement.delay.npcMinDelay", 0.1); - MaxDelay = ServerConfiguration.GetOrUpdateSetting("movement.delay.npcMaxDelay", 0.5); - MaxDex = ServerConfiguration.GetOrUpdateSetting("movement.delay.maxDex", 190); - - // Default speed determined by dex (0 -> 150) for monsters - MinMonsterDelay = ServerConfiguration.GetOrUpdateSetting("movement.delay.monsterMinDelay", 0.4); - MaxMonsterDelay = ServerConfiguration.GetOrUpdateSetting("movement.delay.monsterMaxDelay", 0.8); - MaxMonsterDex = ServerConfiguration.GetOrUpdateSetting("movement.delay.monsterMaxDex", 150); - } - - public static void GetSpeeds(BaseCreature bc, out double activeSpeed, out double passiveSpeed) - { - // Legacy is used if it is enabled, and the type is in the table - if (LegacySpeedInfo.GetSpeeds(bc.GetType(), out activeSpeed, out passiveSpeed)) - { - return; - } - - var isMonster = bc.IsMonster; - var maxDex = isMonster ? MaxMonsterDex : MaxDex; - - var dex = Math.Clamp(bc.Dex, 25, maxDex); - - double min = isMonster ? MinMonsterDelay : MinDelay; - double max = isMonster ? MaxMonsterDelay : MaxDelay; - - activeSpeed = Math.Max(max - (max - min) * ((double)dex / maxDex), min); - passiveSpeed = activeSpeed * 2; - } -} diff --git a/Projects/UOContent/Mobiles/Animals/Mounts/Nightmare.cs b/Projects/UOContent/Mobiles/Animals/Mounts/Nightmare.cs index 6c058f86c..e186bec7c 100644 --- a/Projects/UOContent/Mobiles/Animals/Mounts/Nightmare.cs +++ b/Projects/UOContent/Mobiles/Animals/Mounts/Nightmare.cs @@ -14,7 +14,26 @@ namespace Server.Mobiles { BaseSoundID = Core.AOS ? 0xA8 : 0x16A; - SetStr(496, 525); + // Publish 97 + if (Core.TOL) + { + if (Utility.RandomDouble() < 0.3) + { + SetStr(296, 315); + ControlSlots = 2; + } + else + { + SetStr(496, 525); + ControlSlots = 3; + } + } + else + { + SetStr(496, 525); + ControlSlots = 2; + } + SetDex(86, 105); SetInt(86, 125); @@ -44,7 +63,6 @@ namespace Server.Mobiles VirtualArmor = 60; Tamable = true; - ControlSlots = 2; MinTameSkill = 95.1; switch (Utility.Random(3)) diff --git a/Projects/UOContent/Mobiles/Animals/Mounts/SeaHorse.cs b/Projects/UOContent/Mobiles/Animals/Mounts/SeaHorse.cs index be56e80a6..4f799c9ad 100644 --- a/Projects/UOContent/Mobiles/Animals/Mounts/SeaHorse.cs +++ b/Projects/UOContent/Mobiles/Animals/Mounts/SeaHorse.cs @@ -5,7 +5,6 @@ namespace Server.Mobiles [Constructible] public SeaHorse(string name = "a sea horse") : base(name, 0x90, 0x3EB3, AIType.AI_Animal, FightMode.Aggressor) { - SetSpeed(0.4, 0.8); InitStats(Utility.Random(50, 30), Utility.Random(50, 30), 10); Skills.MagicResist.Base = 25.0 + Utility.RandomDouble() * 5.0; Skills.Wrestling.Base = 35.0 + Utility.RandomDouble() * 10.0; diff --git a/Projects/UOContent/Mobiles/Animals/Mounts/SilverSteed.cs b/Projects/UOContent/Mobiles/Animals/Mounts/SilverSteed.cs index d8ed1fafe..43d32abe8 100644 --- a/Projects/UOContent/Mobiles/Animals/Mounts/SilverSteed.cs +++ b/Projects/UOContent/Mobiles/Animals/Mounts/SilverSteed.cs @@ -5,8 +5,6 @@ namespace Server.Mobiles [Constructible] public SilverSteed(string name = "a silver steed") : base(name, 0x75, 0x3EA8, AIType.AI_Animal, FightMode.Aggressor) { - SetSpeed(0.55, 1.1); - InitStats(Utility.Random(50, 30), Utility.Random(50, 30), 10); Skills.MagicResist.Base = 25.0 + Utility.RandomDouble() * 5.0; Skills.Wrestling.Base = 35.0 + Utility.RandomDouble() * 10.0; diff --git a/Projects/UOContent/Mobiles/Animals/Mounts/SkeletalMount.cs b/Projects/UOContent/Mobiles/Animals/Mounts/SkeletalMount.cs index 4e14da8ea..2b2f76a3b 100644 --- a/Projects/UOContent/Mobiles/Animals/Mounts/SkeletalMount.cs +++ b/Projects/UOContent/Mobiles/Animals/Mounts/SkeletalMount.cs @@ -5,7 +5,6 @@ namespace Server.Mobiles [Constructible] public SkeletalMount(string name = null) : base(name, 793, 0x3EBB, AIType.AI_Animal, FightMode.Aggressor) { - SetSpeed(0.55, 1.1); SetStr(91, 100); SetDex(46, 55); SetInt(46, 60); diff --git a/Projects/UOContent/Mobiles/BaseCreature.cs b/Projects/UOContent/Mobiles/BaseCreature.cs index a57f8443a..602955362 100644 --- a/Projects/UOContent/Mobiles/BaseCreature.cs +++ b/Projects/UOContent/Mobiles/BaseCreature.cs @@ -338,12 +338,7 @@ namespace Server.Mobiles FightMode = mode; - if (LegacySpeedInfo.Enabled && LegacySpeedInfo.GetSpeeds(GetType(), out var activeSpeed, out var passiveSpeed)) - { - ActiveSpeed = activeSpeed; - PassiveSpeed = passiveSpeed; - CurrentSpeed = passiveSpeed; - } + ResetSpeeds(); m_Team = 0; @@ -879,6 +874,8 @@ namespace Server.Mobiles public virtual bool ReturnsToHome => SeeksHome && Home != Point3D.Zero && !m_ReturnQueued && !Controlled && !Summoned; + public virtual bool ScaleSpeedByDex => NPCSpeeds.ScaleSpeedByDex && !IsMonster; + // used for deleting untamed creatures [in houses] [CommandProperty(AccessLevel.GameMaster)] public bool RemoveIfUntamed { get; set; } @@ -1363,7 +1360,8 @@ namespace Server.Mobiles public override void OnRawDexChange(int oldValue) { - if (oldValue != RawDex && ActiveSpeed <= 0 && PassiveSpeed <= 0) + // This only really happens for pets or when a GM modifies a mob. + if (oldValue != RawDex && ScaleSpeedByDex) { ResetSpeeds(); } @@ -1627,23 +1625,35 @@ namespace Server.Mobiles switch (sc) { case ScaleType.Red: - corpse.AddCarvedItem(new RedScales(scales), from); - break; + { + corpse.AddCarvedItem(new RedScales(scales), from); + break; + } case ScaleType.Yellow: - corpse.AddCarvedItem(new YellowScales(scales), from); - break; + { + corpse.AddCarvedItem(new YellowScales(scales), from); + break; + } case ScaleType.Black: - corpse.AddCarvedItem(new BlackScales(scales), from); - break; + { + corpse.AddCarvedItem(new BlackScales(scales), from); + break; + } case ScaleType.Green: - corpse.AddCarvedItem(new GreenScales(scales), from); - break; + { + corpse.AddCarvedItem(new GreenScales(scales), from); + break; + } case ScaleType.White: - corpse.AddCarvedItem(new WhiteScales(scales), from); - break; + { + corpse.AddCarvedItem(new WhiteScales(scales), from); + break; + } case ScaleType.Blue: - corpse.AddCarvedItem(new BlueScales(scales), from); - break; + { + corpse.AddCarvedItem(new BlueScales(scales), from); + break; + } case ScaleType.All: { corpse.AddCarvedItem(new RedScales(scales), from); @@ -2567,18 +2577,23 @@ namespace Server.Mobiles return false; // not idling, but don't want to enter idle state } - m_IdleReleaseTime = Core.Now + TimeSpan.FromSeconds(Utility.RandomMinMax(15, 25)); + var idleSeconds = Utility.RandomMinMax(NPCSpeeds.MinIdleSeconds, NPCSpeeds.MaxIdleSeconds); + m_IdleReleaseTime = Core.Now + TimeSpan.FromSeconds(idleSeconds); if (Body.IsHuman) { switch (Utility.Random(2)) { case 0: - CheckedAnimate(5, 5, 1, true, true, 1); - break; + { + CheckedAnimate(5, 5, 1, true, true, 1); + break; + } case 1: - CheckedAnimate(6, 5, 1, true, false, 1); - break; + { + CheckedAnimate(6, 5, 1, true, false, 1); + break; + } } } else if (Body.IsAnimal) @@ -2586,14 +2601,20 @@ namespace Server.Mobiles switch (Utility.Random(3)) { case 0: - CheckedAnimate(3, 3, 1, true, false, 1); - break; + { + CheckedAnimate(3, 3, 1, true, false, 1); + break; + } case 1: - CheckedAnimate(9, 5, 1, true, false, 1); - break; + { + CheckedAnimate(9, 5, 1, true, false, 1); + break; + } case 2: - CheckedAnimate(10, 5, 1, true, false, 1); - break; + { + CheckedAnimate(10, 5, 1, true, false, 1); + break; + } } } else if (Body.IsMonster) @@ -2601,11 +2622,15 @@ namespace Server.Mobiles switch (Utility.Random(2)) { case 0: - CheckedAnimate(17, 5, 1, true, false, 1); - break; + { + CheckedAnimate(17, 5, 1, true, false, 1); + break; + } case 1: - CheckedAnimate(18, 5, 1, true, false, 1); - break; + { + CheckedAnimate(18, 5, 1, true, false, 1); + break; + } } } @@ -2862,17 +2887,25 @@ namespace Server.Mobiles switch (Utility.Random(4)) { case 0: - PackItem(new CocoaButter()); - break; + { + PackItem(new CocoaButter()); + break; + } case 1: - PackItem(new CocoaLiquor()); - break; + { + PackItem(new CocoaLiquor()); + break; + } case 2: - PackItem(new SackOfSugar()); - break; + { + PackItem(new SackOfSugar()); + break; + } case 3: - PackItem(new Vanilla()); - break; + { + PackItem(new Vanilla()); + break; + } } } } @@ -3323,11 +3356,6 @@ namespace Server.Mobiles Controlled = false; ControlTarget = null; ControlOrder = OrderType.None; - Guild = null; - - ResetSpeeds(); - - Delta(MobileDelta.Noto); } else { @@ -3351,19 +3379,20 @@ namespace Server.Mobiles Controlled = true; ControlTarget = null; ControlOrder = OrderType.Come; - Guild = null; + if (m_DeleteTimer != null) { m_DeleteTimer.Stop(); m_DeleteTimer = null; } - - ResetSpeeds(true); - - Delta(MobileDelta.Noto); } + Guild = null; + ResetSpeeds(); + + Delta(MobileDelta.Noto); + InvalidateProperties(); return true; @@ -3953,20 +3982,30 @@ namespace Server.Mobiles switch (Utility.Random(5)) { case 0: - physDamage += BreathChaosDamage; - break; + { + physDamage += BreathChaosDamage; + break; + } case 1: - fireDamage += BreathChaosDamage; - break; + { + fireDamage += BreathChaosDamage; + break; + } case 2: - coldDamage += BreathChaosDamage; - break; + { + coldDamage += BreathChaosDamage; + break; + } case 3: - poisDamage += BreathChaosDamage; - break; + { + poisDamage += BreathChaosDamage; + break; + } case 4: - nrgyDamage += BreathChaosDamage; - break; + { + nrgyDamage += BreathChaosDamage; + break; + } } } @@ -4620,20 +4659,30 @@ namespace Server.Mobiles switch (type) { case ResistanceType.Physical: - PhysicalDamage = val; - break; + { + PhysicalDamage = val; + break; + } case ResistanceType.Fire: - FireDamage = val; - break; + { + FireDamage = val; + break; + } case ResistanceType.Cold: - ColdDamage = val; - break; + { + ColdDamage = val; + break; + } case ResistanceType.Poison: - PoisonDamage = val; - break; + { + PoisonDamage = val; + break; + } case ResistanceType.Energy: - EnergyDamage = val; - break; + { + EnergyDamage = val; + break; + } } } @@ -4647,20 +4696,30 @@ namespace Server.Mobiles switch (type) { case ResistanceType.Physical: - m_PhysicalResistance = val; - break; + { + m_PhysicalResistance = val; + break; + } case ResistanceType.Fire: - m_FireResistance = val; - break; + { + m_FireResistance = val; + break; + } case ResistanceType.Cold: - m_ColdResistance = val; - break; + { + m_ColdResistance = val; + break; + } case ResistanceType.Poison: - m_PoisonResistance = val; - break; + { + m_PoisonResistance = val; + break; + } case ResistanceType.Energy: - m_EnergyResistance = val; - break; + { + m_EnergyResistance = val; + break; + } } UpdateResistances(); @@ -4794,9 +4853,17 @@ namespace Server.Mobiles } } - public virtual void ResetSpeeds(bool currentUseActive = false) + // If this needs to be serialized, recommend creating a hash or registry id. Don't serialize strings. + public virtual string SpeedClass => null; + + public virtual void GetSpeeds(out double activeSpeed, out double passiveSpeed) { - SpeedInfo.GetSpeeds(this, out var activeSpeed, out var passiveSpeed); + NPCSpeeds.GetSpeeds(this, out activeSpeed, out passiveSpeed); + } + + public void ResetSpeeds(bool currentUseActive = false) + { + GetSpeeds(out var activeSpeed, out var passiveSpeed); ActiveSpeed = activeSpeed; PassiveSpeed = passiveSpeed; diff --git a/Projects/UOContent/Mobiles/Familiars/BaseFamiliar.cs b/Projects/UOContent/Mobiles/Familiars/BaseFamiliar.cs index dba69c327..8cad6a780 100644 --- a/Projects/UOContent/Mobiles/Familiars/BaseFamiliar.cs +++ b/Projects/UOContent/Mobiles/Familiars/BaseFamiliar.cs @@ -10,7 +10,7 @@ namespace Server.Mobiles public BaseFamiliar() : base(AIType.AI_Melee) { - SetSpeed(0.1, 0.1); + SetSpeed(0.1, 0.11); } public BaseFamiliar(Serial serial) : base(serial) diff --git a/Projects/UOContent/Mobiles/Monsters/AOS/Revenant.cs b/Projects/UOContent/Mobiles/Monsters/AOS/Revenant.cs index 72517630f..057ad6c58 100644 --- a/Projects/UOContent/Mobiles/Monsters/AOS/Revenant.cs +++ b/Projects/UOContent/Mobiles/Monsters/AOS/Revenant.cs @@ -19,8 +19,6 @@ namespace Server.Mobiles m_Target = target; m_ExpireTime = Core.Now + duration; - SetSpeed(0.25, 0.55); - SetStr(200); SetDex(150); SetInt(150); diff --git a/Projects/UOContent/Mobiles/Monsters/Humanoid/Melee/KhaldunRevenant.cs b/Projects/UOContent/Mobiles/Monsters/Humanoid/Melee/KhaldunRevenant.cs index 02210c9f1..f3298de78 100644 --- a/Projects/UOContent/Mobiles/Monsters/Humanoid/Melee/KhaldunRevenant.cs +++ b/Projects/UOContent/Mobiles/Monsters/Humanoid/Melee/KhaldunRevenant.cs @@ -19,8 +19,6 @@ namespace Server.Mobiles m_Target = target; m_ExpireTime = Core.Now + TimeSpan.FromMinutes(10.0); - SetSpeed(0.25, 0.55); - SetStr(401, 500); SetDex(296, 315); SetInt(101, 200); diff --git a/Projects/UOContent/Mobiles/Monsters/LBR/Jukas/ChaosDragoon.cs b/Projects/UOContent/Mobiles/Monsters/LBR/Jukas/ChaosDragoon.cs index f55806873..fb3b38a7c 100644 --- a/Projects/UOContent/Mobiles/Monsters/LBR/Jukas/ChaosDragoon.cs +++ b/Projects/UOContent/Mobiles/Monsters/LBR/Jukas/ChaosDragoon.cs @@ -10,7 +10,7 @@ namespace Server.Mobiles Body = 0x190; Hue = Race.Human.RandomSkinHue(); - SetSpeed(0.25, 1.0); + SetSpeed(0.15, 0.4); SetStr(176, 225); SetDex(81, 95); diff --git a/Projects/UOContent/Mobiles/Monsters/LBR/Jukas/ChaosDragoonElite.cs b/Projects/UOContent/Mobiles/Monsters/LBR/Jukas/ChaosDragoonElite.cs index 331056eb8..5e6bf3b5e 100644 --- a/Projects/UOContent/Mobiles/Monsters/LBR/Jukas/ChaosDragoonElite.cs +++ b/Projects/UOContent/Mobiles/Monsters/LBR/Jukas/ChaosDragoonElite.cs @@ -10,7 +10,7 @@ namespace Server.Mobiles Body = 0x190; Hue = Race.Human.RandomSkinHue(); - SetSpeed(0.25, 1.0); + SetSpeed(0.15, 0.4); SetStr(276, 350); SetDex(66, 90); diff --git a/Projects/UOContent/Mobiles/Monsters/ML/Animal/CuSidhe.cs b/Projects/UOContent/Mobiles/Monsters/ML/Animal/CuSidhe.cs index a06b0fa9f..b6ab6b169 100644 --- a/Projects/UOContent/Mobiles/Monsters/ML/Animal/CuSidhe.cs +++ b/Projects/UOContent/Mobiles/Monsters/ML/Animal/CuSidhe.cs @@ -5,7 +5,7 @@ namespace Server.Mobiles public class CuSidhe : BaseMount { [Constructible] - public CuSidhe(string name = null) : base(name, 277, 0x3E91, AIType.AI_Animal, FightMode.Aggressor, 10, 1) + public CuSidhe(string name = null) : base(name, 277, 0x3E91, AIType.AI_Animal, FightMode.Aggressor) { var chance = Utility.RandomDouble() * 23301; diff --git a/Projects/UOContent/Mobiles/Monsters/ML/Animal/Ferret.cs b/Projects/UOContent/Mobiles/Monsters/ML/Animal/Ferret.cs index 9441427ae..413886152 100644 --- a/Projects/UOContent/Mobiles/Monsters/ML/Animal/Ferret.cs +++ b/Projects/UOContent/Mobiles/Monsters/ML/Animal/Ferret.cs @@ -19,7 +19,6 @@ namespace Server.Mobiles { Body = 0x117; - SetSpeed(0.3, 1.0); SetStr(41, 48); SetDex(55); SetInt(75); diff --git a/Projects/UOContent/Mobiles/Monsters/ML/Animal/RagingGrizzlyBear.cs b/Projects/UOContent/Mobiles/Monsters/ML/Animal/RagingGrizzlyBear.cs index e2d67ddca..d02acc83e 100644 --- a/Projects/UOContent/Mobiles/Monsters/ML/Animal/RagingGrizzlyBear.cs +++ b/Projects/UOContent/Mobiles/Monsters/ML/Animal/RagingGrizzlyBear.cs @@ -8,7 +8,6 @@ namespace Server.Mobiles Body = 212; BaseSoundID = 0xA3; - SetSpeed(0.3, 1.0); SetStr(1251, 1550); SetDex(801, 1050); SetInt(151, 400); diff --git a/Projects/UOContent/Mobiles/Monsters/ML/Animal/Squirrel.cs b/Projects/UOContent/Mobiles/Monsters/ML/Animal/Squirrel.cs index 3ca9ff581..1749f7d73 100644 --- a/Projects/UOContent/Mobiles/Monsters/ML/Animal/Squirrel.cs +++ b/Projects/UOContent/Mobiles/Monsters/ML/Animal/Squirrel.cs @@ -7,7 +7,6 @@ namespace Server.Mobiles { Body = 0x116; - SetSpeed(0.3, 1.0); SetStr(44, 50); SetDex(35); SetInt(5); diff --git a/Projects/UOContent/Mobiles/Monsters/ML/Humanoid/Melee/CorruptedSoul.cs b/Projects/UOContent/Mobiles/Monsters/ML/Humanoid/Melee/CorruptedSoul.cs index a65b126d8..bed118762 100644 --- a/Projects/UOContent/Mobiles/Monsters/ML/Humanoid/Melee/CorruptedSoul.cs +++ b/Projects/UOContent/Mobiles/Monsters/ML/Humanoid/Melee/CorruptedSoul.cs @@ -8,14 +8,13 @@ namespace Server.Mobiles Body = 0x3CA; Hue = 0x453; - SetSpeed(0.25, 5); - SetStr(102, 115); SetDex(101, 115); SetInt(203, 215); SetHits(61, 69); + SetSpeed(0.25, 2.5); SetDamage(4, 40); SetDamageType(ResistanceType.Physical, 100); diff --git a/Projects/UOContent/Mobiles/Monsters/ML/Labyrinth/Miasma.cs b/Projects/UOContent/Mobiles/Monsters/ML/Labyrinth/Miasma.cs index 2e8ba905c..456198c9e 100644 --- a/Projects/UOContent/Mobiles/Monsters/ML/Labyrinth/Miasma.cs +++ b/Projects/UOContent/Mobiles/Monsters/ML/Labyrinth/Miasma.cs @@ -11,8 +11,6 @@ namespace Server.Mobiles Hue = 0x8FD; - SetSpeed(0.1, 0.6); - SetStr(255, 847); SetDex(145, 428); SetInt(26, 380); diff --git a/Projects/UOContent/Mobiles/Monsters/ML/Misc/Melee/Reptalon.cs b/Projects/UOContent/Mobiles/Monsters/ML/Misc/Melee/Reptalon.cs index e057936ce..fe27e5c56 100644 --- a/Projects/UOContent/Mobiles/Monsters/ML/Misc/Melee/Reptalon.cs +++ b/Projects/UOContent/Mobiles/Monsters/ML/Misc/Melee/Reptalon.cs @@ -9,8 +9,6 @@ namespace Server.Mobiles { BaseSoundID = 0x16A; - SetSpeed(0.25, 0.55); - SetStr(1001, 1025); SetDex(152, 164); SetInt(251, 289); diff --git a/Projects/UOContent/Mobiles/Monsters/Misc/Melee/BladeSpirits.cs b/Projects/UOContent/Mobiles/Monsters/Misc/Melee/BladeSpirits.cs index d05ffb814..c0ea74690 100644 --- a/Projects/UOContent/Mobiles/Monsters/Misc/Melee/BladeSpirits.cs +++ b/Projects/UOContent/Mobiles/Monsters/Misc/Melee/BladeSpirits.cs @@ -11,7 +11,6 @@ public class BladeSpirits : BaseCreature { Body = 574; - SetSpeed(0.5, 1.2); SetStr(150); SetDex(150); SetInt(100); diff --git a/Projects/UOContent/Mobiles/Monsters/Misc/Melee/Golem.cs b/Projects/UOContent/Mobiles/Monsters/Misc/Melee/Golem.cs index 7dc6ffe5c..7bd41f3f4 100644 --- a/Projects/UOContent/Mobiles/Monsters/Misc/Melee/Golem.cs +++ b/Projects/UOContent/Mobiles/Monsters/Misc/Melee/Golem.cs @@ -18,8 +18,6 @@ namespace Server.Mobiles Hue = 2101; } - SetSpeed(0.9, 1.5); - SetStr((int)(251 * scalar), (int)(350 * scalar)); SetDex((int)(76 * scalar), (int)(100 * scalar)); SetInt((int)(101 * scalar), (int)(150 * scalar)); diff --git a/Projects/UOContent/Mobiles/Monsters/SE/EliteNinja.cs b/Projects/UOContent/Mobiles/Monsters/SE/EliteNinja.cs index 8d21aa003..a16c794c0 100644 --- a/Projects/UOContent/Mobiles/Monsters/SE/EliteNinja.cs +++ b/Projects/UOContent/Mobiles/Monsters/SE/EliteNinja.cs @@ -16,7 +16,7 @@ namespace Server.Mobiles SetHits(251, 350); SetStr(126, 225); - SetDex(81, 95); + SetDex(175, 275); SetInt(151, 165); SetDamage(12, 20); diff --git a/Projects/UOContent/Mobiles/Monsters/SE/FireBeetle.cs b/Projects/UOContent/Mobiles/Monsters/SE/FireBeetle.cs index b6ea95b88..7f4daea42 100644 --- a/Projects/UOContent/Mobiles/Monsters/SE/FireBeetle.cs +++ b/Projects/UOContent/Mobiles/Monsters/SE/FireBeetle.cs @@ -7,10 +7,11 @@ namespace Server.Mobiles public class FireBeetle : BaseMount { [Constructible] - public FireBeetle() : base("a fire beetle", 0xA9, 0x3E95, AIType.AI_Melee, FightMode.Closest, 10, 1) + public FireBeetle() : base("a fire beetle", 0xA9, 0x3E95, AIType.AI_Melee) { + SetStam(100); SetStr(300); - SetDex(100); + SetDex(65, 100); SetInt(500); SetHits(200); diff --git a/Projects/UOContent/Mobiles/NPCSpeeds.cs b/Projects/UOContent/Mobiles/NPCSpeeds.cs new file mode 100644 index 000000000..e6317c91f --- /dev/null +++ b/Projects/UOContent/Mobiles/NPCSpeeds.cs @@ -0,0 +1,102 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Text.Json.Serialization; +using Server.Json; + +namespace Server.Mobiles; + +public static class NPCSpeeds +{ + private const string _tablePath = "Data/npc-speeds.json"; + private static Dictionary _speedsByType = new(); + private static Dictionary _speedsByName = new(); + + // Enabled for pets on HS+ + public static bool ScaleSpeedByDex { get; private set; } + public static double MinDelay { get; private set; } + public static double MaxDelay { get; private set; } + public static int MinDex { get; private set; } + public static int MaxDex { get; private set; } + + // Time period to lock NPCs into idling + public static int MinIdleSeconds { get; private set; } + public static int MaxIdleSeconds { get; private set; } + + public static void GetSpeeds(BaseCreature bc, out double activeSpeed, out double passiveSpeed) + { + // Used for scaling pet's speed by dex in HS+ + if (bc.ScaleSpeedByDex) + { + var maxDex = MaxDex; + double min = MinDelay; + double max = MaxDelay; + var dex = Math.Clamp(bc.Dex, MinDex, maxDex); + + activeSpeed = Math.Max(max - (max - min) * ((double)dex / maxDex), min); + passiveSpeed = activeSpeed * 2; + return; + } + + if (bc.SpeedClass != null && _speedsByName.TryGetValue(bc.SpeedClass, out var sp) || + _speedsByType.TryGetValue(bc.GetType(), out sp)) + { + activeSpeed = sp.ActiveSpeed; + passiveSpeed = sp.PassiveSpeed; + return; + } + + // "Fast" + activeSpeed = 0.2; + passiveSpeed = 0.4; + } + + public static void RegisterSpeed(SpeedClassEntry entry) + { + _speedsByName[entry.Name] = entry; + + foreach (var type in entry.Types) + { + _speedsByType[type] = entry; + } + } + + public static void Configure() + { + ScaleSpeedByDex = ServerConfiguration.GetSetting("movement.delay.scaleSpeedByDex", Core.HS); + MinDelay = ServerConfiguration.GetSetting("movement.delay.npcMinDelay", 0.1); + MaxDelay = ServerConfiguration.GetSetting("movement.delay.npcMaxDelay", 0.4); + MaxDex = ServerConfiguration.GetSetting("movement.delay.npcMinDex", 50); + MaxDex = ServerConfiguration.GetSetting("movement.delay.npcMaxDex", 200); + MinIdleSeconds = ServerConfiguration.GetSetting("movement.delay.npcMinIdle", 15); + MaxIdleSeconds = ServerConfiguration.GetSetting("movement.delay.npcMaxIdle", 25); + + var path = Path.Combine(Core.BaseDirectory, _tablePath); + if (!File.Exists(path)) + { + return; + } + + var speeds = JsonConfig.Deserialize(path); + + for (var i = 0; i < speeds.Length; i++) + { + RegisterSpeed(speeds[i]); + } + } + + public record SpeedClassEntry + { + [JsonPropertyName("name")] + public string Name { get; init; } + + [JsonPropertyName("active")] + public double ActiveSpeed { get; init; } + + [JsonPropertyName("passive")] + public double PassiveSpeed { get; init; } + + [JsonPropertyName("types")] + public HashSet Types { get; init; } + } +} diff --git a/Projects/UOContent/Mobiles/Special/BaseChampion.cs b/Projects/UOContent/Mobiles/Special/BaseChampion.cs index 4983292da..0085781a7 100644 --- a/Projects/UOContent/Mobiles/Special/BaseChampion.cs +++ b/Projects/UOContent/Mobiles/Special/BaseChampion.cs @@ -9,7 +9,6 @@ namespace Server.Mobiles { public BaseChampion(AIType aiType, FightMode mode = FightMode.Closest) : base(aiType, mode, 18) { - SetSpeed(0.25, 0.55); } public BaseChampion(Serial serial) : base(serial) diff --git a/Projects/UOContent/Mobiles/Special/BaseShieldGuard.cs b/Projects/UOContent/Mobiles/Special/BaseShieldGuard.cs index 829cea481..3ca4c3232 100644 --- a/Projects/UOContent/Mobiles/Special/BaseShieldGuard.cs +++ b/Projects/UOContent/Mobiles/Special/BaseShieldGuard.cs @@ -7,12 +7,11 @@ namespace Server.Mobiles { public BaseShieldGuard() : base(AIType.AI_Melee, FightMode.Aggressor, 14) { - SetSpeed(0.5, 2.0); InitStats(1000, 1000, 1000); Title = "the guard"; + SetSpeed(0.5, 2.0); SpeechHue = Utility.RandomDyedHue(); - Hue = Race.Human.RandomSkinHue(); if (Female = Utility.RandomBool()) diff --git a/Projects/UOContent/Mobiles/Special/Mephitis.cs b/Projects/UOContent/Mobiles/Special/Mephitis.cs index f7bfe79d5..f6af38c11 100644 --- a/Projects/UOContent/Mobiles/Special/Mephitis.cs +++ b/Projects/UOContent/Mobiles/Special/Mephitis.cs @@ -12,8 +12,6 @@ namespace Server.Mobiles Body = 173; BaseSoundID = 0x183; - SetSpeed(0.1, 0.6); - SetStr(505, 1000); SetDex(102, 300); SetInt(402, 600); diff --git a/Projects/UOContent/Mobiles/Special/Semidar.cs b/Projects/UOContent/Mobiles/Special/Semidar.cs index f2227a90b..e6092bd43 100644 --- a/Projects/UOContent/Mobiles/Special/Semidar.cs +++ b/Projects/UOContent/Mobiles/Special/Semidar.cs @@ -12,8 +12,6 @@ namespace Server.Mobiles Body = 174; BaseSoundID = 0x4B0; - SetSpeed(0.1, 0.6); - SetStr(502, 600); SetDex(102, 200); SetInt(601, 750); diff --git a/Projects/UOContent/Mobiles/Special/Silvani.cs b/Projects/UOContent/Mobiles/Special/Silvani.cs index cdd9c0e75..c103169e8 100644 --- a/Projects/UOContent/Mobiles/Special/Silvani.cs +++ b/Projects/UOContent/Mobiles/Special/Silvani.cs @@ -8,8 +8,6 @@ namespace Server.Mobiles Body = 176; BaseSoundID = 0x467; - SetSpeed(0.25, 0.55); - SetStr(253, 400); SetDex(157, 850); SetInt(503, 800); diff --git a/Projects/UOContent/Mobiles/Townfolk/Actor.cs b/Projects/UOContent/Mobiles/Townfolk/Actor.cs index 38078b040..7dbe6eec6 100644 --- a/Projects/UOContent/Mobiles/Townfolk/Actor.cs +++ b/Projects/UOContent/Mobiles/Townfolk/Actor.cs @@ -7,11 +7,10 @@ namespace Server.Mobiles [Constructible] public Actor() : base(AIType.AI_Animal, FightMode.None) { - SetSpeed(0.6, 1.2); InitStats(31, 41, 51); + SetSpeed(0.2, 0.4); SpeechHue = Utility.RandomDyedHue(); - Hue = Race.Human.RandomSkinHue(); if (Female = Utility.RandomBool()) diff --git a/Projects/UOContent/Mobiles/Townfolk/Artist.cs b/Projects/UOContent/Mobiles/Townfolk/Artist.cs index 4f6276882..de9567ab7 100644 --- a/Projects/UOContent/Mobiles/Townfolk/Artist.cs +++ b/Projects/UOContent/Mobiles/Townfolk/Artist.cs @@ -7,11 +7,10 @@ namespace Server.Mobiles [Constructible] public Artist() : base(AIType.AI_Animal, FightMode.None) { - SetSpeed(0.6, 1.2); InitStats(31, 41, 51); - SetSkill(SkillName.Healing, 36, 68); + SetSpeed(0.2, 0.4); SpeechHue = Utility.RandomDyedHue(); Title = "the artist"; Hue = Race.Human.RandomSkinHue(); diff --git a/Projects/UOContent/Mobiles/Townfolk/BaseEscortable.cs b/Projects/UOContent/Mobiles/Townfolk/BaseEscortable.cs index e7726c6c8..9cecc6c78 100644 --- a/Projects/UOContent/Mobiles/Townfolk/BaseEscortable.cs +++ b/Projects/UOContent/Mobiles/Townfolk/BaseEscortable.cs @@ -94,13 +94,13 @@ namespace Server.Mobiles [Constructible] public BaseEscortable() : base(AIType.AI_Melee, FightMode.Aggressor, 22) { - SetSpeed(0.3, 1.0); - InitBody(); InitOutfit(); Fame = 200; Karma = 4000; + + SetSpeed(0.2, 1.0); } public BaseEscortable(Serial serial) diff --git a/Projects/UOContent/Mobiles/Townfolk/Gypsy.cs b/Projects/UOContent/Mobiles/Townfolk/Gypsy.cs index b6cc02447..b15e221d2 100644 --- a/Projects/UOContent/Mobiles/Townfolk/Gypsy.cs +++ b/Projects/UOContent/Mobiles/Townfolk/Gypsy.cs @@ -7,15 +7,13 @@ namespace Server.Mobiles [Constructible] public Gypsy() : base(AIType.AI_Animal, FightMode.None) { - SetSpeed(0.6, 1.2); InitStats(31, 41, 51); - - SpeechHue = Utility.RandomDyedHue(); - SetSkill(SkillName.Cooking, 65, 88); SetSkill(SkillName.Snooping, 65, 88); SetSkill(SkillName.Stealing, 65, 88); + SetSpeed(0.2, 0.4); + SpeechHue = Utility.RandomDyedHue(); Hue = Race.Human.RandomSkinHue(); if (Female = Utility.RandomBool()) diff --git a/Projects/UOContent/Mobiles/Townfolk/HarborMaster.cs b/Projects/UOContent/Mobiles/Townfolk/HarborMaster.cs index 50b2edd3f..844eb7876 100644 --- a/Projects/UOContent/Mobiles/Townfolk/HarborMaster.cs +++ b/Projects/UOContent/Mobiles/Townfolk/HarborMaster.cs @@ -7,11 +7,10 @@ namespace Server.Mobiles [Constructible] public HarborMaster() : base(AIType.AI_Animal, FightMode.None) { - SetSpeed(0.6, 1.2); InitStats(31, 41, 51); - SetSkill(SkillName.Mining, 36, 68); + SetSpeed(0.2, 0.4); SpeechHue = Utility.RandomDyedHue(); Hue = Race.Human.RandomSkinHue(); Blessed = true; diff --git a/Projects/UOContent/Mobiles/Townfolk/Ninja.cs b/Projects/UOContent/Mobiles/Townfolk/Ninja.cs index d7ff674a3..0026e20d1 100644 --- a/Projects/UOContent/Mobiles/Townfolk/Ninja.cs +++ b/Projects/UOContent/Mobiles/Townfolk/Ninja.cs @@ -8,7 +8,6 @@ namespace Server.Mobiles public Ninja() : base(AIType.AI_Melee, FightMode.Aggressor) { Title = "the ninja"; - InitStats(100, 100, 25); SetSkill(SkillName.Fencing, 64.0, 80.0); @@ -18,8 +17,8 @@ namespace Server.Mobiles SetSkill(SkillName.Tactics, 64.0, 85.0); SetSkill(SkillName.Swords, 64.0, 85.0); + SetSpeed(0.2, 0.4); SpeechHue = Utility.RandomDyedHue(); - Hue = Race.Human.RandomSkinHue(); if (Female = Utility.RandomBool()) diff --git a/Projects/UOContent/Mobiles/Townfolk/Samurai.cs b/Projects/UOContent/Mobiles/Townfolk/Samurai.cs index 3f4022367..14e9f1072 100644 --- a/Projects/UOContent/Mobiles/Townfolk/Samurai.cs +++ b/Projects/UOContent/Mobiles/Townfolk/Samurai.cs @@ -16,8 +16,8 @@ namespace Server.Mobiles SetSkill(SkillName.Parry, 64.0, 80.0); SetSkill(SkillName.Swords, 64.0, 85.0); + SetSpeed(0.2, 0.4); SpeechHue = Utility.RandomDyedHue(); - Hue = Race.Human.RandomSkinHue(); if (Female = Utility.RandomBool()) diff --git a/Projects/UOContent/Mobiles/Townfolk/Sculptor.cs b/Projects/UOContent/Mobiles/Townfolk/Sculptor.cs index 2ce527740..15c126cdb 100644 --- a/Projects/UOContent/Mobiles/Townfolk/Sculptor.cs +++ b/Projects/UOContent/Mobiles/Townfolk/Sculptor.cs @@ -7,9 +7,9 @@ namespace Server.Mobiles [Constructible] public Sculptor() : base(AIType.AI_Animal, FightMode.None) { - SetSpeed(0.6, 1.2); InitStats(31, 41, 51); + SetSpeed(0.2, 0.4); SpeechHue = Utility.RandomDyedHue(); Title = "the sculptor"; Hue = Race.Human.RandomSkinHue(); diff --git a/Projects/UOContent/Mobiles/Townfolk/SeekerOfAdventure.cs b/Projects/UOContent/Mobiles/Townfolk/SeekerOfAdventure.cs index 59bd0b575..fd14c5a38 100644 --- a/Projects/UOContent/Mobiles/Townfolk/SeekerOfAdventure.cs +++ b/Projects/UOContent/Mobiles/Townfolk/SeekerOfAdventure.cs @@ -26,15 +26,7 @@ namespace Server.Mobiles public override bool ClickTitle => false; // Do not display 'the seeker of adventure' when single-clicking - public override string[] GetPossibleDestinations() - { - if (Core.ML) - { - return m_MLDestinations; - } - - return m_Dungeons; - } + public override string[] GetPossibleDestinations() => Core.ML ? m_MLDestinations : m_Dungeons; private static int GetRandomHue() { diff --git a/Projects/UOContent/Mobiles/Vendors/BaseVendor.cs b/Projects/UOContent/Mobiles/Vendors/BaseVendor.cs index ddd4a87e7..0266aa7b0 100644 --- a/Projects/UOContent/Mobiles/Vendors/BaseVendor.cs +++ b/Projects/UOContent/Mobiles/Vendors/BaseVendor.cs @@ -54,12 +54,11 @@ namespace Server.Mobiles public BaseVendor(string title = null) : base(AIType.AI_Vendor, FightMode.None, 2) { - SetSpeed(0.5, 2); LoadSBInfo(); - Title = title; InitBody(); InitOutfit(); + SetSpeed(0.5, 2.0); // these packs MUST exist, or the client will crash when the packets are sent Container pack = new Backpack { Layer = Layer.ShopBuy, Movable = false, Visible = false }; diff --git a/Projects/UOContent/Skills/AnimalTaming.cs b/Projects/UOContent/Skills/AnimalTaming.cs index 99b1293ef..b7a9ffed3 100644 --- a/Projects/UOContent/Skills/AnimalTaming.cs +++ b/Projects/UOContent/Skills/AnimalTaming.cs @@ -486,16 +486,13 @@ namespace Server.SkillHandlers if (m_Creature is GreaterDragon) { ScaleSkills(m_Creature, 0.72, 0.90); // 72% of original skills trainable to 90% - m_Creature.Skills.Magery.Base = - m_Creature.Skills.Magery - .Cap; // Greater dragons have a 90% cap reduction and 90% skill reduction on magery + // Greater dragons have a 90% cap reduction and 90% skill reduction on magery + m_Creature.Skills.Magery.Base = m_Creature.Skills.Magery.Cap; } else if (m_Paralyzed) { - ScaleSkills( - m_Creature, - 0.86 - ); // 86% of original skills if they were paralyzed during the taming + // 86% of original skills if they were paralyzed during the taming + ScaleSkills(m_Creature, 0.86); } else { diff --git a/Projects/UOContent/Spells/Ninjitsu/MirrorImage.cs b/Projects/UOContent/Spells/Ninjitsu/MirrorImage.cs index ed4712940..896d01456 100644 --- a/Projects/UOContent/Spells/Ninjitsu/MirrorImage.cs +++ b/Projects/UOContent/Spells/Ninjitsu/MirrorImage.cs @@ -130,7 +130,6 @@ namespace Server.Mobiles public Clone(Mobile caster) : base(AIType.AI_Melee, FightMode.None) { - SetSpeed(0.3, 1.0); m_Caster = caster; Body = caster.Body; diff --git a/Projects/UOContent/Spells/Spellweaving/Mobiles/ArcaneFey.cs b/Projects/UOContent/Spells/Spellweaving/Mobiles/ArcaneFey.cs index 243dffd13..3f1defbde 100644 --- a/Projects/UOContent/Spells/Spellweaving/Mobiles/ArcaneFey.cs +++ b/Projects/UOContent/Spells/Spellweaving/Mobiles/ArcaneFey.cs @@ -9,7 +9,6 @@ namespace Server.Mobiles Body = 128; BaseSoundID = 0x467; - SetSpeed(0.3, 1.0); SetStr(20); SetDex(150); SetInt(125); diff --git a/Projects/UOContent/Spells/Spellweaving/Mobiles/ArcaneFiend.cs b/Projects/UOContent/Spells/Spellweaving/Mobiles/ArcaneFiend.cs index 34300b5aa..6041979af 100644 --- a/Projects/UOContent/Spells/Spellweaving/Mobiles/ArcaneFiend.cs +++ b/Projects/UOContent/Spells/Spellweaving/Mobiles/ArcaneFiend.cs @@ -8,7 +8,6 @@ namespace Server.Mobiles Body = 74; BaseSoundID = 422; - SetSpeed(0.3, 1.0); SetStr(55); SetDex(40); SetInt(60); diff --git a/Projects/UOContent/Spells/Spellweaving/Mobiles/NatureFury.cs b/Projects/UOContent/Spells/Spellweaving/Mobiles/NatureFury.cs index 61bad44b1..d91aa4318 100644 --- a/Projects/UOContent/Spells/Spellweaving/Mobiles/NatureFury.cs +++ b/Projects/UOContent/Spells/Spellweaving/Mobiles/NatureFury.cs @@ -10,7 +10,6 @@ namespace Server.Mobiles Body = 0x33; Hue = 0x4001; - SetSpeed(0.3, 1.0); SetStr(150); SetDex(150); SetInt(100);