diff --git a/Projects/Server/Mobiles/Mobile.cs b/Projects/Server/Mobiles/Mobile.cs index f217b0fe1..48ef9a59c 100644 --- a/Projects/Server/Mobiles/Mobile.cs +++ b/Projects/Server/Mobiles/Mobile.cs @@ -3723,38 +3723,6 @@ public partial class Mobile : IHued, IComparable, ISpawnable, IObjectPro { } - public double GetDistanceToSqrt(Point3D p) - { - var xDelta = m_Location.m_X - p.m_X; - var yDelta = m_Location.m_Y - p.m_Y; - - return Math.Sqrt(xDelta * xDelta + yDelta * yDelta); - } - - public double GetDistanceToSqrt(Mobile m) - { - var xDelta = m_Location.m_X - m.m_Location.m_X; - var yDelta = m_Location.m_Y - m.m_Location.m_Y; - - return Math.Sqrt(xDelta * xDelta + yDelta * yDelta); - } - - public double GetDistanceToSqrt(Point2D p) - { - var xDelta = m_Location.m_X - p.X; - var yDelta = m_Location.m_Y - p.Y; - - return Math.Sqrt(xDelta * xDelta + yDelta * yDelta); - } - - public double GetDistanceToSqrt(IPoint2D p) - { - var xDelta = m_Location.m_X - p.X; - var yDelta = m_Location.m_Y - p.Y; - - return Math.Sqrt(xDelta * xDelta + yDelta * yDelta); - } - public virtual void AggressiveAction(Mobile aggressor) => AggressiveAction(aggressor, false); public virtual void AggressiveAction(Mobile aggressor, bool criminal) diff --git a/Projects/Server/Utilities/Utility.cs b/Projects/Server/Utilities/Utility.cs index 448e9adf1..d405fabe8 100644 --- a/Projects/Server/Utilities/Utility.cs +++ b/Projects/Server/Utilities/Utility.cs @@ -1524,4 +1524,53 @@ public static partial class Utility return sb.ToString(); } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double GetDistanceToSqrt(this IEntity entity, Point2D p) => GetDistanceToSqrt(entity.Location, p); + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double GetDistanceToSqrt(this IEntity entity, Point3D p) => GetDistanceToSqrt(entity.Location, p); + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static double GetDistanceToSqrt(this IEntity from, IEntity to) => GetDistanceToSqrt(from.Location, to.Location); + + public static double GetDistanceToSqrt(this IEntity entity, IPoint2D p) + { + var xDelta = entity.X - p.X; + var yDelta = entity.Y - p.Y; + + return Math.Sqrt(xDelta * xDelta + yDelta * yDelta); + } + + public static double GetDistanceToSqrt(this Point2D from, Point2D to) + { + var xDelta = from.m_X - to.m_X; + var yDelta = from.m_Y - to.m_Y; + + return Math.Sqrt(xDelta * xDelta + yDelta * yDelta); + } + + public static double GetDistanceToSqrt(this Point2D from, Point3D to) + { + var xDelta = from.m_X - to.m_X; + var yDelta = from.m_Y - to.m_Y; + + return Math.Sqrt(xDelta * xDelta + yDelta * yDelta); + } + + public static double GetDistanceToSqrt(this Point3D from, Point2D to) + { + var xDelta = from.m_X - to.m_X; + var yDelta = from.m_Y - to.m_Y; + + return Math.Sqrt(xDelta * xDelta + yDelta * yDelta); + } + + public static double GetDistanceToSqrt(this Point3D from, Point3D to) + { + var xDelta = from.m_X - to.m_X; + var yDelta = from.m_Y - to.m_Y; + + return Math.Sqrt(xDelta * xDelta + yDelta * yDelta); + } } diff --git a/Projects/UOContent/Engines/Quests/Dark Tides/Mobiles/SummonedPaladin.cs b/Projects/UOContent/Engines/Quests/Dark Tides/Mobiles/SummonedPaladin.cs index b0ac5d41c..6199f3046 100644 --- a/Projects/UOContent/Engines/Quests/Dark Tides/Mobiles/SummonedPaladin.cs +++ b/Projects/UOContent/Engines/Quests/Dark Tides/Mobiles/SummonedPaladin.cs @@ -86,7 +86,7 @@ public partial class SummonedPaladin : BaseCreature Timer.StartTimer(TimeSpan.FromSeconds(5.0), Delete); } - else if (_necromancer.Map != Map || GetDistanceToSqrt(_necromancer) > RangePerception + 1) + else if (_necromancer.Map != Map || this.GetDistanceToSqrt(_necromancer) > RangePerception + 1) { Effects.SendLocationParticles( EffectItem.Create(Location, Map, EffectItem.DefaultDuration), diff --git a/Projects/UOContent/Mobiles/BaseCreature.cs b/Projects/UOContent/Mobiles/BaseCreature.cs index 22c43ebc4..0957a8c22 100644 --- a/Projects/UOContent/Mobiles/BaseCreature.cs +++ b/Projects/UOContent/Mobiles/BaseCreature.cs @@ -2439,7 +2439,7 @@ namespace Server.Mobiles { FightMode.Strongest => m.Skills.Tactics.Value + m.Str, // returns strongest mobile FightMode.Weakest => -m.Hits, // returns weakest mobile - _ => -GetDistanceToSqrt(m) + _ => -this.GetDistanceToSqrt(m) }; } @@ -2461,7 +2461,7 @@ namespace Server.Mobiles public bool IsHurt() => Hits != HitsMax; - public double GetHomeDistance() => GetDistanceToSqrt(m_Home); + public double GetHomeDistance() => this.GetDistanceToSqrt(m_Home); public virtual int GetTeamSize(int iRange) { diff --git a/Projects/UOContent/Mobiles/Monsters/Humanoid/Magic/SavageShaman.cs b/Projects/UOContent/Mobiles/Monsters/Humanoid/Magic/SavageShaman.cs index d1994f82d..f25f03497 100644 --- a/Projects/UOContent/Mobiles/Monsters/Humanoid/Magic/SavageShaman.cs +++ b/Projects/UOContent/Mobiles/Monsters/Humanoid/Magic/SavageShaman.cs @@ -228,7 +228,7 @@ namespace Server.Mobiles var total = Skills.Magery.Value + Skills.Poisoning.Value; - var dist = GetDistanceToSqrt(m); + var dist = this.GetDistanceToSqrt(m); if (dist >= 3.0) { diff --git a/Projects/UOContent/Mobiles/Monsters/Misc/Melee/AnimatedWeapon.cs b/Projects/UOContent/Mobiles/Monsters/Misc/Melee/AnimatedWeapon.cs index 9f486c679..6edf6927b 100644 --- a/Projects/UOContent/Mobiles/Monsters/Misc/Melee/AnimatedWeapon.cs +++ b/Projects/UOContent/Mobiles/Monsters/Misc/Melee/AnimatedWeapon.cs @@ -86,7 +86,7 @@ namespace Server.Mobiles public override Poison PoisonImmune => Poison.Lethal; public override double GetFightModeRanking(Mobile m, FightMode acqType, bool bPlayerOnly) => - m.Str / Math.Max(GetDistanceToSqrt(m), 1.0); + m.Str / Math.Max(this.GetDistanceToSqrt(m), 1.0); public override int GetAngerSound() => 0x23A; diff --git a/Projects/UOContent/Mobiles/Monsters/Misc/Melee/BladeSpirits.cs b/Projects/UOContent/Mobiles/Monsters/Misc/Melee/BladeSpirits.cs index 100e115d7..a0966eaf4 100644 --- a/Projects/UOContent/Mobiles/Monsters/Misc/Melee/BladeSpirits.cs +++ b/Projects/UOContent/Mobiles/Monsters/Misc/Melee/BladeSpirits.cs @@ -58,7 +58,7 @@ namespace Server.Mobiles public override bool FollowsAcquireRules => Core.AOS || !Summoned || SummonMaster?.Player != true || Map != Map.Felucca; public override double GetFightModeRanking(Mobile m, FightMode acqType, bool bPlayerOnly) => - (m.Str + m.Skills.Tactics.Value) / Math.Max(GetDistanceToSqrt(m), 1.0); + (m.Str + m.Skills.Tactics.Value) / Math.Max(this.GetDistanceToSqrt(m), 1.0); public override int GetAngerSound() => 0x23A; diff --git a/Projects/UOContent/Mobiles/Monsters/Misc/Melee/EnergyVortex.cs b/Projects/UOContent/Mobiles/Monsters/Misc/Melee/EnergyVortex.cs index b94d2650c..3bb2e69fa 100644 --- a/Projects/UOContent/Mobiles/Monsters/Misc/Melee/EnergyVortex.cs +++ b/Projects/UOContent/Mobiles/Monsters/Misc/Melee/EnergyVortex.cs @@ -66,7 +66,7 @@ namespace Server.Mobiles public override bool FollowsAcquireRules => Core.AOS || !Summoned || SummonMaster?.Player != true || Map != Map.Felucca; public override double GetFightModeRanking(Mobile m, FightMode acqType, bool bPlayerOnly) => - (m.Int + m.Skills.Magery.Value) / Math.Max(GetDistanceToSqrt(m), 1.0); + (m.Int + m.Skills.Magery.Value) / Math.Max(this.GetDistanceToSqrt(m), 1.0); public override int GetAngerSound() => 0x15;