diff --git a/Source/Game/BattleFields/BattleField.cs b/Source/Game/BattleFields/BattleField.cs index 3818b2dff..d71b249d0 100644 --- a/Source/Game/BattleFields/BattleField.cs +++ b/Source/Game/BattleFields/BattleField.cs @@ -1143,12 +1143,12 @@ namespace Game.BattleFields } } - List players = new List(); + List players = new List(); var checker = new AnyPlayerInObjectRangeCheck(capturePoint, radius); var searcher = new PlayerListSearcher(capturePoint, players, checker); Cell.VisitWorldObjects(capturePoint, searcher, radius); - foreach (var player in players) + foreach (Player player in players) { if (player.IsOutdoorPvPActive()) { diff --git a/Source/Game/Entities/AreaTrigger/AreaTrigger.cs b/Source/Game/Entities/AreaTrigger/AreaTrigger.cs index 98e32c2db..866d3cd37 100644 --- a/Source/Game/Entities/AreaTrigger/AreaTrigger.cs +++ b/Source/Game/Entities/AreaTrigger/AreaTrigger.cs @@ -347,6 +347,21 @@ namespace Game.Entities HandleUnitEnterExit(targetList); } + void SearchUnits(List targetList, float radius, bool check3D) + { + var check = new AnyUnitInObjectRangeCheck(this, radius, check3D); + if (IsServerSide()) + { + var searcher = new PlayerListSearcher(this, targetList, check); + Cell.VisitWorldObjects(this, searcher, GetTemplate().MaxSearchRadius); + } + else + { + var searcher = new UnitListSearcher(this, targetList, check); + Cell.VisitAllObjects(this, searcher, GetTemplate().MaxSearchRadius); + } + } + void SearchUnitInSphere(List targetList) { float radius = GetTemplate().SphereDatas.Radius; @@ -358,9 +373,7 @@ namespace Game.Entities } } - var check = new AnyUnitInObjectRangeCheck(this, radius); - var searcher = new UnitListSearcher(this, targetList, check); - Cell.VisitAllObjects(this, searcher, GetTemplate().MaxSearchRadius); + SearchUnits(targetList, radius, true); } void SearchUnitInBox(List targetList) @@ -374,9 +387,7 @@ namespace Game.Entities extentsZ = GetTemplate().BoxDatas.Extents[2]; } - var check = new AnyUnitInObjectRangeCheck(this, GetTemplate().MaxSearchRadius, false); - var searcher = new UnitListSearcher(this, targetList, check); - Cell.VisitAllObjects(this, searcher, GetTemplate().MaxSearchRadius); + SearchUnits(targetList, GetTemplate().MaxSearchRadius, false); float halfExtentsX = extentsX / 2.0f; float halfExtentsY = extentsY / 2.0f; @@ -398,30 +409,24 @@ namespace Game.Entities void SearchUnitInPolygon(List targetList) { - var check = new AnyUnitInObjectRangeCheck(this, GetTemplate().MaxSearchRadius, false); - var searcher = new UnitListSearcher(this, targetList, check); - Cell.VisitAllObjects(this, searcher, GetTemplate().MaxSearchRadius); + SearchUnits(targetList, GetTemplate().MaxSearchRadius, false); float height = GetTemplate().PolygonDatas.Height; float minZ = GetPositionZ() - height; float maxZ = GetPositionZ() + height; - targetList.RemoveAll(unit => - !CheckIsInPolygon2D(unit) || unit.GetPositionZ() < minZ || unit.GetPositionZ() > maxZ); + targetList.RemoveAll(unit => !CheckIsInPolygon2D(unit) || unit.GetPositionZ() < minZ || unit.GetPositionZ() > maxZ); } void SearchUnitInCylinder(List targetList) { - var check = new AnyUnitInObjectRangeCheck(this, GetTemplate().MaxSearchRadius, false); - var searcher = new UnitListSearcher(this, targetList, check); - Cell.VisitAllObjects(this, searcher, GetTemplate().MaxSearchRadius); + SearchUnits(targetList, GetTemplate().MaxSearchRadius, false); float height = GetTemplate().CylinderDatas.Height; float minZ = GetPositionZ() - height; float maxZ = GetPositionZ() + height; - targetList.RemoveAll(unit => unit.GetPositionZ() < minZ - || unit.GetPositionZ() > maxZ); + targetList.RemoveAll(unit => unit.GetPositionZ() < minZ || unit.GetPositionZ() > maxZ); } void HandleUnitEnterExit(List newTargetList) diff --git a/Source/Game/Entities/Creature/Creature.cs b/Source/Game/Entities/Creature/Creature.cs index 53f5151fc..10ecf1781 100644 --- a/Source/Game/Entities/Creature/Creature.cs +++ b/Source/Game/Entities/Creature/Creature.cs @@ -2899,8 +2899,8 @@ namespace Game.Entities if (spellInfo.GetSpellVisual() != 0 && (focusSpell.GetCastTime() == 0 || // if the spell is instant cast spellInfo.HasAttribute(SpellAttr5.DontTurnDuringCast))) // client gets confused if we attempt to turn at the regularly scheduled update packet { - List playersNearby = GetPlayerListInGrid(GetVisibilityRange()); - foreach (var player in playersNearby) + List playersNearby = GetPlayerListInGrid(GetVisibilityRange()); + foreach (Player player in playersNearby) { // only update players that are known to the client (have already been created) if (player.HaveAtClient(this)) diff --git a/Source/Game/Entities/Object/WorldObject.cs b/Source/Game/Entities/Object/WorldObject.cs index f573e796b..8a13ca941 100644 --- a/Source/Game/Entities/Object/WorldObject.cs +++ b/Source/Game/Entities/Object/WorldObject.cs @@ -1578,9 +1578,9 @@ namespace Game.Entities Cell.VisitGridObjects(this, searcher, maxSearchRange); } - public List GetPlayerListInGrid(float maxSearchRange) + public List GetPlayerListInGrid(float maxSearchRange) { - List playerList = new List(); + List playerList = new List(); var checker = new AnyPlayerInObjectRangeCheck(this, maxSearchRange); var searcher = new PlayerListSearcher(this, playerList, checker); @@ -1633,12 +1633,13 @@ namespace Game.Entities { if (!IsInWorld) return; - List targets = new List(); + + List targets = new List(); var check = new AnyPlayerInObjectRangeCheck(this, GetVisibilityRange(), false); var searcher = new PlayerListSearcher(this, targets, check); Cell.VisitWorldObjects(this, searcher, GetVisibilityRange()); - foreach (var player in targets) + foreach (Player player in targets) { if (player == this) continue; diff --git a/Source/Game/Maps/GridNotifiers.cs b/Source/Game/Maps/GridNotifiers.cs index cdc37b18d..ab1c995c6 100644 --- a/Source/Game/Maps/GridNotifiers.cs +++ b/Source/Game/Maps/GridNotifiers.cs @@ -1760,7 +1760,7 @@ namespace Game.Maps } public class PlayerListSearcher : Notifier { - public PlayerListSearcher(WorldObject searcher, List objects, ICheck check) + public PlayerListSearcher(WorldObject searcher, List objects, ICheck check) { _searcher = searcher; i_objects = objects; @@ -1779,7 +1779,7 @@ namespace Game.Maps } WorldObject _searcher; - List i_objects; + List i_objects; ICheck i_check; } diff --git a/Source/Game/OutdoorPVP/OutdoorPvP.cs b/Source/Game/OutdoorPVP/OutdoorPvP.cs index b0677068f..9c2e72728 100644 --- a/Source/Game/OutdoorPVP/OutdoorPvP.cs +++ b/Source/Game/OutdoorPVP/OutdoorPvP.cs @@ -521,12 +521,12 @@ namespace Game.PvP } } - List players = new List(); + List players = new List(); var checker = new AnyPlayerInObjectRangeCheck(m_capturePoint, radius); var searcher = new PlayerListSearcher(m_capturePoint, players, checker); Cell.VisitWorldObjects(m_capturePoint, searcher, radius); - foreach (var player in players) + foreach (Player player in players) { if (player.IsOutdoorPvPActive()) { diff --git a/Source/Scripts/Spells/Holiday.cs b/Source/Scripts/Spells/Holiday.cs index 92023ec11..be01acd64 100644 --- a/Source/Scripts/Spells/Holiday.cs +++ b/Source/Scripts/Spells/Holiday.cs @@ -189,11 +189,11 @@ namespace Scripts.Spells.Holiday bool foundSomeone = false; // For nearby players, check if they have the same aura. If so, cast Romantic Picnic (45123) // required by achievement and "hearts" visual - List playerList = new List(); + List playerList = new List(); AnyPlayerInObjectRangeCheck checker = new AnyPlayerInObjectRangeCheck(target, SharedConst.InteractionDistance * 2); var searcher = new PlayerListSearcher(target, playerList, checker); Cell.VisitWorldObjects(target, searcher, SharedConst.InteractionDistance * 2); - foreach (var player in playerList) + foreach (Player player in playerList) { if (player != target && player.HasAura(GetId())) // && player.GetStandState() == UNIT_STAND_STATE_SIT) { diff --git a/Source/Scripts/Spells/Quest.cs b/Source/Scripts/Spells/Quest.cs index c76cdd425..c4ed707b4 100644 --- a/Source/Scripts/Spells/Quest.cs +++ b/Source/Scripts/Spells/Quest.cs @@ -1240,11 +1240,11 @@ namespace Scripts.Spells.Quest { Unit caster = GetCaster(); // Check for player that is in 65 y range - List playerList = new List(); + List playerList = new List(); AnyPlayerInObjectRangeCheck checker = new AnyPlayerInObjectRangeCheck(caster, 65.0f); PlayerListSearcher searcher = new PlayerListSearcher(caster, playerList, checker); Cell.VisitWorldObjects(caster, searcher, 65.0f); - foreach (var player in playerList) + foreach (Player player in playerList) { // Check if found player target is on fly mount or using flying form if (player.HasAuraType(AuraType.Fly) || player.HasAuraType(AuraType.ModIncreaseMountedFlightSpeed)) diff --git a/Source/Scripts/World/NpcSpecial.cs b/Source/Scripts/World/NpcSpecial.cs index 5b945ada2..130f5d307 100644 --- a/Source/Scripts/World/NpcSpecial.cs +++ b/Source/Scripts/World/NpcSpecial.cs @@ -818,7 +818,7 @@ namespace Scripts.World.NpcSpecial bool checkNearbyPlayers() { // Returns true if no nearby player has aura "Test Ribbon Pole Channel". - List players = new List(); + List players = new List(); var check = new UnitAuraCheck(true, SpellIds.RibbonDanceCosmetic); var searcher = new PlayerListSearcher(me, players, check); Cell.VisitWorldObjects(me, searcher, 10.0f);