Core/Misc: Kill AnyPlayerInObjectRangeCheck (duplicate of AnyUnitInObjectRangeCheck)

Port From (https://github.com/TrinityCore/TrinityCore/commit/0f9a0accf17ba3a9f20d6a7575b51ed2cb09a73c)
This commit is contained in:
Hondacrx
2025-08-18 10:07:50 -04:00
parent b444c2f23c
commit 2bbd77bd94
5 changed files with 30 additions and 56 deletions
@@ -638,7 +638,7 @@ namespace Game.Entities
else else
{ {
// Environmental trap: Any player // Environmental trap: Any player
var check = new AnyPlayerInObjectRangeCheck(this, radius); var check = new AnyUnitInObjectRangeCheck(this, radius);
var searcher = new PlayerSearcher(this, check); var searcher = new PlayerSearcher(this, check);
Cell.VisitWorldObjects(this, searcher, radius); Cell.VisitWorldObjects(this, searcher, radius);
target = searcher.GetTarget(); target = searcher.GetTarget();
+8 -10
View File
@@ -3025,7 +3025,7 @@ namespace Game.Entities
public List<Player> GetPlayerListInGrid(float maxSearchRange, bool alive = true) public List<Player> GetPlayerListInGrid(float maxSearchRange, bool alive = true)
{ {
List<Player> playerList = new(); List<Player> playerList = new();
var checker = new AnyPlayerInObjectRangeCheck(this, maxSearchRange, alive); var checker = new AnyUnitInObjectRangeCheck(this, maxSearchRange, alive);
var searcher = new PlayerListSearcher(this, playerList, checker); var searcher = new PlayerListSearcher(this, playerList, checker);
Cell.VisitWorldObjects(this, searcher, maxSearchRange); Cell.VisitWorldObjects(this, searcher, maxSearchRange);
@@ -3116,26 +3116,24 @@ namespace Game.Entities
if (!IsInWorld) if (!IsInWorld)
return; return;
List<Player> targets = new(); void destroyer(Player player)
var check = new AnyPlayerInObjectRangeCheck(this, GetVisibilityRange(), false);
var searcher = new PlayerListSearcher(this, targets, check);
Cell.VisitWorldObjects(this, searcher, GetVisibilityRange());
foreach (Player player in targets)
{ {
if (player == this) if (player == this)
continue; return;
if (!player.HaveAtClient(this)) if (!player.HaveAtClient(this))
continue; return;
Unit unit = ToUnit(); Unit unit = ToUnit();
if (unit != null && unit.GetCharmerGUID() == player.GetGUID())// @todo this is for puppet if (unit != null && unit.GetCharmerGUID() == player.GetGUID())// @todo this is for puppet
continue; return;
DestroyForPlayer(player); DestroyForPlayer(player);
player.m_clientGUIDs.Remove(GetGUID()); player.m_clientGUIDs.Remove(GetGUID());
} }
PlayerDistWorker worker = new(this, GetVisibilityRange(), destroyer);
Cell.VisitWorldObjects(this, worker, GetVisibilityRange());
} }
public virtual void UpdateObjectVisibility(bool force = true) public virtual void UpdateObjectVisibility(bool force = true)
+9 -27
View File
@@ -920,13 +920,20 @@ namespace Game.Maps
{ {
WorldObject i_searcher; WorldObject i_searcher;
float i_dist; float i_dist;
IDoWork<Player> _do; Action<Player> _do;
public PlayerDistWorker(WorldObject searcher, float _dist, IDoWork<Player> @do) public PlayerDistWorker(WorldObject searcher, float _dist, IDoWork<Player> @do)
{ {
i_searcher = searcher; i_searcher = searcher;
i_dist = _dist; i_dist = _dist;
_do = @do; _do = @do.Invoke;
}
public PlayerDistWorker(WorldObject searcher, float _dist, Action<Player> destroyer)
{
i_searcher = searcher;
i_dist = _dist;
_do = destroyer;
} }
public override void Visit(IList<Player> objs) public override void Visit(IList<Player> objs)
@@ -2604,31 +2611,6 @@ namespace Game.Maps
} }
} }
public class AnyPlayerInObjectRangeCheck : ICheck<Player>
{
public AnyPlayerInObjectRangeCheck(WorldObject obj, float range, bool reqAlive = true)
{
_obj = obj;
_range = range;
_reqAlive = reqAlive;
}
public bool Invoke(Player pl)
{
if (_reqAlive && !pl.IsAlive())
return false;
if (!_obj.IsWithinDist(pl, _range))
return false;
return true;
}
WorldObject _obj;
float _range;
bool _reqAlive;
}
class AnyPlayerInPositionRangeCheck : ICheck<Player> class AnyPlayerInPositionRangeCheck : ICheck<Player>
{ {
public AnyPlayerInPositionRangeCheck(Position pos, float range, bool reqAlive = true) public AnyPlayerInPositionRangeCheck(Position pos, float range, bool reqAlive = true)
+7 -13
View File
@@ -51,21 +51,15 @@ namespace Scripts.Events.LoveIsInTheAir
bool foundSomeone = false; bool foundSomeone = false;
// For nearby players, check if they have the same aura. If so, cast Romantic Picnic (45123) // For nearby players, check if they have the same aura. If so, cast Romantic Picnic (45123)
// required by achievement and "hearts" visual // required by achievement and "hearts" visual
List<Player> playerList = new(); List<Player> playerList = target.GetPlayerListInGrid(SharedConst.InteractionDistance * 2);
AnyPlayerInObjectRangeCheck checker = new(target, SharedConst.InteractionDistance * 2); foreach (Player playerFound in playerList)
PlayerListSearcher searcher = new(target, playerList, checker);
Cell.VisitWorldObjects(target, searcher, SharedConst.InteractionDistance * 2);
foreach (var playerFound in playerList)
{ {
if (playerFound != null) if (target != playerFound && playerFound.HasAura(GetId()))
{ {
if (target != playerFound && playerFound.HasAura(GetId())) playerFound.CastSpell(playerFound, SpellRomanticPicnicAchiev, true);
{ target.CastSpell(target, SpellRomanticPicnicAchiev, true);
playerFound.CastSpell(playerFound, SpellRomanticPicnicAchiev, true); foundSomeone = true;
target.CastSpell(target, SpellRomanticPicnicAchiev, true); break;
foundSomeone = true;
break;
}
} }
} }
+5 -5
View File
@@ -648,16 +648,16 @@ namespace Scripts.Spells.Azerite
{ {
Unit caster = GetCaster(); Unit caster = GetCaster();
// Check for player that is in 65 y range // Check for player that is in 65 y range
List<Player> playerList = new(); List<Player> playerList = caster.GetPlayerListInGrid(65.0f);
AnyPlayerInObjectRangeCheck checker = new(caster, 65.0f);
PlayerListSearcher searcher = new(caster, playerList, checker);
Cell.VisitWorldObjects(caster, searcher, 65.0f);
foreach (var player in playerList) foreach (var player in playerList)
{
// Check if found player target is on fly mount or using flying form // Check if found player target is on fly mount or using flying form
if (player.HasAuraType(AuraType.Fly) || player.HasAuraType(AuraType.ModIncreaseMountedFlightSpeed)) if (player.HasAuraType(AuraType.Fly) || player.HasAuraType(AuraType.ModIncreaseMountedFlightSpeed))
{
// Summom Fel Cannon (bunny version) at found player // Summom Fel Cannon (bunny version) at found player
caster.SummonCreature(NpcFelCannon2, player.GetPositionX(), player.GetPositionY(), player.GetPositionZ()); caster.SummonCreature(NpcFelCannon2, player.GetPositionX(), player.GetPositionY(), player.GetPositionZ());
}
}
} }
public override void Register() public override void Register()