Core/Objects: Unify Searcher classes into one common implementation
Port From (https://github.com/TrinityCore/TrinityCore/commit/261eb201bf107cef441d9b075e8f23bf0edfbaf0) Port From (https://github.com/TrinityCore/TrinityCore/commit/526b16fea41fb69a302fdebe8a727e175949f04b) Port From (https://github.com/TrinityCore/TrinityCore/commit/8b7dce6521323e788ebf28297ec941a6f9bf876f) Port From (https://github.com/TrinityCore/TrinityCore/commit/5334467f493eb16141f4ad0bce956bc3e19244a0) Port From (https://github.com/TrinityCore/TrinityCore/commit/1e7725c15b149baaf96731231239769e482ec2ed) Port From (https://github.com/TrinityCore/TrinityCore/commit/21712f475383f6f3fae107706f5de5195f75b760)
This commit is contained in:
@@ -2860,8 +2860,7 @@ namespace Game.Spells
|
||||
if (containerTypeMask != 0)
|
||||
{
|
||||
WorldObjectSpellAreaTargetCheck check = new(radius, unitOwner, refe, unitOwner, GetSpellInfo(), selectionType, condList, SpellTargetObjectTypes.Unit);
|
||||
UnitListSearcher searcher = new(unitOwner, units, check);
|
||||
searcher.i_phaseShift = PhasingHandler.GetAlwaysVisiblePhaseShift();
|
||||
UnitListSearcher searcher = new(PhasingHandler.GetAlwaysVisiblePhaseShift(), units, check);
|
||||
Spell.SearchTargets(searcher, containerTypeMask, unitOwner, unitOwner, radius + extraSearchRadius);
|
||||
|
||||
// by design WorldObjectSpellAreaTargetCheck allows not-in-world units (for spells) but for auras it is not acceptable
|
||||
|
||||
@@ -1747,9 +1747,9 @@ namespace Game.Spells
|
||||
return null;
|
||||
|
||||
var check = new WorldObjectSpellNearbyTargetCheck(range, m_caster, m_spellInfo, selectionType, condList, objectType);
|
||||
var searcher = new WorldObjectLastSearcher(m_caster, check, containerTypeMask);
|
||||
var searcher = new WorldObjectLastSearcher(PhasingHandler.GetAlwaysVisiblePhaseShift(), check, containerTypeMask);
|
||||
SearchTargets(searcher, containerTypeMask, m_caster, m_caster.GetPosition(), range);
|
||||
return searcher.GetTarget();
|
||||
return searcher.GetResult();
|
||||
}
|
||||
|
||||
void SearchAreaTargets(List<WorldObject> targets, SpellEffectInfo spellEffectInfo, float range, Position position, WorldObject referer,
|
||||
@@ -1761,7 +1761,7 @@ namespace Game.Spells
|
||||
|
||||
float extraSearchRadius = range > 0.0f ? SharedConst.ExtraCellSearchRadius : 0.0f;
|
||||
var check = new WorldObjectSpellAreaTargetCheck(range, position, m_caster, referer, m_spellInfo, selectionType, condList, objectType, searchReason);
|
||||
var searcher = new WorldObjectListSearcher(m_caster, targets, check, containerTypeMask);
|
||||
var searcher = new WorldObjectListSearcher(PhasingHandler.GetAlwaysVisiblePhaseShift(), targets, check, containerTypeMask);
|
||||
SearchTargets(searcher, containerTypeMask, m_caster, position, range + extraSearchRadius);
|
||||
}
|
||||
|
||||
@@ -1870,7 +1870,7 @@ namespace Game.Spells
|
||||
var check = new GameObjectFocusCheck(m_caster, m_spellInfo.RequiresSpellFocus);
|
||||
var searcher = new GameObjectSearcher(m_caster, check);
|
||||
SearchTargets(searcher, GridMapTypeMask.GameObject, m_caster, m_caster, m_caster.GetVisibilityRange());
|
||||
return searcher.GetTarget();
|
||||
return searcher.GetResult();
|
||||
}
|
||||
|
||||
void PrepareDataForTriggerSystem()
|
||||
|
||||
@@ -5239,17 +5239,15 @@ namespace Game.Spells
|
||||
if (unitTarget == null)
|
||||
return;
|
||||
|
||||
List<WorldObject> objs = new();
|
||||
ObjectEntryAndPrivateOwnerIfExistsCheck check = new(unitTarget.GetGUID(), (uint)effectInfo.MiscValue);
|
||||
WorldObjectListSearcher checker = new(unitTarget, objs, check, GridMapTypeMask.Conversation);
|
||||
Cell.VisitGridObjects(unitTarget, checker, 100.0f);
|
||||
|
||||
foreach (WorldObject obj in objs)
|
||||
var check = new ObjectEntryAndPrivateOwnerIfExistsCheck(unitTarget.GetGUID(), (uint)effectInfo.MiscValue);
|
||||
IDoWork<Conversation> work = conversation =>
|
||||
{
|
||||
Conversation convo = obj.ToConversation();
|
||||
if (convo != null)
|
||||
convo.Remove();
|
||||
}
|
||||
if (check.Invoke(conversation))
|
||||
conversation.Remove();
|
||||
};
|
||||
|
||||
ConversationWorker worker = new(unitTarget, work);
|
||||
Cell.VisitGridObjects(unitTarget, worker, 100.0f);
|
||||
}
|
||||
|
||||
[SpellEffectHandler(SpellEffectName.AddGarrisonFollower)]
|
||||
|
||||
Reference in New Issue
Block a user