Hondacrx
2025-08-31 13:23:49 -04:00
parent 59c983d3ff
commit c5cccdec10
31 changed files with 1045 additions and 1807 deletions
+1 -2
View File
@@ -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
+4 -4
View File
@@ -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()
+8 -10
View File
@@ -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)]