modernuo/Distribution/Data/npc-speeds.json
Kamron Batman 3332fabc39
fix: Reverts to RunUO speeds, fixes direction glitching, adds movement speed interpolation (#1695)
> [!IMPORTANT]  
> Please read through these changes, as they changed certain expectations for how the internal AI thinking/movement work.
> Note that some mobs still don't have smooth movement on ClassicUO due to how the client handles animations/movement.

### Summary
- **Important Change**: Mobs will now move at a more regular pace. If the OnThink results in a move, but the cooldown would otherwise prevent the move, then the movement is scheduled on another timer.
- Added a 400ms delay to mobs turning to face a player to attack in order to avoid glitching between moving and turning.
- Reverted AI thinking speeds back to RunUO specific speeds.
- Reverted the AI thinking to moving conversion delays back to RunUO.
- For thinking speeds that are not exactly the predefined speeds from RunUO, there is a new calculation to determine the correct conversion to movement speed. This stops speeds like `0.35` from being faster than `0.3`

> [!NOTE]  
> **Developer Note**
> BaseAI.CheckMove() no longer contains the check for whether or not a mob is on movement cooldown. This function can now be overwritten without causing issues to figuring out that cooldown.
2024-03-18 14:13:41 -07:00

154 lines
6.1 KiB
JSON

[
{
"level": "VerySlow",
"active": 0.4,
"passive": 0.8,
"types": []
},
{
"level": "Slow",
"active": 0.3,
"passive": 0.6,
"types": [
"AntLion", "ArcticOgreLord", "BogThing",
"Bogle", "BoneKnight", "EarthElemental",
"Ettin", "FrostOoze", "FrostTroll",
"GazerLarva", "Ghoul", "Golem",
"HeadlessOne", "Jwilson", "Mummy",
"Ogre", "OgreLord", "PlagueBeast",
"Quagmire", "Rat", "RottingCorpse",
"SewerRat", "Skeleton", "Slime",
"Zombie", "Walrus", "RestlessSoul",
"CrystalElemental", "DarknightCreeper", "MoundOfMaggots",
"Juggernaut", "Yamandon", "Serado",
"GreaterDragon", "PlagueBeastLord"
]
},
{
"level": "Medium",
"active": 0.25,
"passive": 0.5,
"types": [
"AcidElemental", "AgapiteElemental", "Alligator",
"AncientLich", "Betrayer", "Bird",
"BlackBear", "BlackSolenInfiltratorQueen", "BlackSolenInfiltratorWarrior",
"BlackSolenQueen", "BlackSolenWarrior", "BlackSolenWorker",
"BloodElemental", "Boar", "Bogling",
"BoneMagi", "Brigand", "BronzeElemental",
"BrownBear", "Bull", "BullFrog",
"Cat", "Centaur", "ChaosDaemon",
"Chicken", "GolemController", "CopperElemental",
"CopperElemental", "Cougar", "Cow",
"Cyclops", "Daemon", "DeepSeaSerpent",
"DesertOstard", "DireWolf", "Dog",
"Dolphin", "Dragon", "Drake",
"DullCopperElemental", "Eagle", "ElderGazer",
"EvilMage", "EvilMageLord", "Executioner",
"Savage", "FireElemental", "FireGargoyle",
"FireSteed", "ForestOstard", "FrenziedOstard",
"FrostSpider", "Gargoyle", "Gazer",
"IceSerpent", "GiantRat", "GiantSerpent",
"GiantSpider", "GiantToad", "Goat",
"GoldenElemental", "Gorilla", "GreatHart",
"GreyWolf", "GrizzlyBear", "Guardian",
"Harpy", "Harrower", "HellHound",
"Hind", "HordeMinion", "Horse",
"Horse", "IceElemental", "IceFiend",
"IceSnake", "Imp", "JackRabbit",
"Kirin", "Kraken", "PredatorHellCat",
"LavaLizard", "LavaSerpent", "LavaSnake",
"Lizardman", "Llama", "Mongbat",
"StrongMongbat", "MountainGoat", "Orc",
"OrcBomber", "OrcBrute", "OrcCaptain",
"OrcishLord", "OrcishMage", "PackHorse",
"PackLlama", "Panther", "Pig",
"PlagueSpawn", "PolarBear", "Rabbit",
"Ratman", "RatmanArcher", "RatmanMage",
"RedSolenInfiltratorQueen", "RedSolenInfiltratorWarrior", "RedSolenQueen",
"RedSolenWarrior", "RedSolenWorker", "RidableLlama",
"Ridgeback", "Scorpion", "SeaSerpent",
"SerpentineDragon", "Shade", "ShadowIronElemental",
"ShadowWisp", "ShadowWyrm", "Sheep",
"SilverSteed", "SkeletalDragon", "SkeletalMage",
"SkeletalMount", "HellCat", "Snake",
"SnowLeopard", "SpectralArmour", "Spectre",
"StoneGargoyle", "StoneHarpy", "SwampDragon",
"ScaledSwampDragon", "SwampTentacle", "TerathanAvenger",
"TerathanDrone", "TerathanMatriarch", "TerathanWarrior",
"TimberWolf", "Titan", "Troll",
"Unicorn", "ValoriteElemental", "VeriteElemental",
"CoMWarHorse", "MinaxWarHorse", "SLWarHorse",
"TBWarHorse", "WaterElemental", "WhippingVine",
"WhiteWolf", "Wraith", "Wyvern",
"KhaldunZealot", "KhaldunSummoner", "SavageRidgeback",
"LichLord", "SkeletalKnight", "SummonedDaemon",
"SummonedEarthElemental", "SummonedWaterElemental", "SummonedFireElemental",
"MeerWarrior", "MeerEternal", "MeerMage",
"MeerCaptain", "JukaLord", "JukaMage",
"JukaWarrior", "AbysmalHorror", "BoneDemon",
"Devourer", "FleshGolem", "Gibberling",
"GoreFiend", "Impaler", "PatchworkSkeleton",
"Ravager", "ShadowKnight", "SkitteringHopper",
"Treefellow", "VampireBat", "WailingBanshee",
"WandererOfTheVoid", "Cursed", "GrimmochDrummel",
"LysanderGathenwale", "MorgBergen", "ShadowFiend",
"SpectralArmour", "TavaraSewel", "ArcaneDaemon",
"Doppleganger", "EnslavedGargoyle", "ExodusMinion",
"ExodusOverseer", "GargoyleDestroyer", "GargoyleEnforcer",
"Moloch", "BakeKitsune", "DeathwatchBeetleHatchling",
"Kappa", "KazeKemono", "DeathwatchBeetle",
"TsukiWolf", "YomotsuElder", "YomotsuPriest",
"YomotsuWarrior", "RevenantLion", "Oni",
"Gaman", "Crane", "Beetle",
"Parrot", "ElfBrigand", "GreaterMongbat",
"AnimatedWeapon", "Reaper", "Corpser"
]
},
{
"level": "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"
]
},
{
"level": "VeryFast",
"active": 0.125,
"passive": 0.30,
"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"
]
}
]