Core/Conditions: CONDITION_NEAR_CREATURE will exclude personal spawns that aren't the target's owner
Port From (https://github.com/TrinityCore/TrinityCore/commit/d2641c4924022369d4af595925bf04d034db5d72)
This commit is contained in:
@@ -1139,12 +1139,8 @@ namespace Game.Entities
|
||||
|
||||
Creature creature = obj.ToCreature();
|
||||
if (creature)
|
||||
{
|
||||
TempSummon tempSummon = creature.ToTempSummon();
|
||||
if (tempSummon)
|
||||
if (tempSummon.IsVisibleBySummonerOnly() && GetGUID() != tempSummon.GetSummonerGUID())
|
||||
return false;
|
||||
}
|
||||
if (TempSummon.IsPersonalSummonOfAnotherPlayer(creature, GetGUID()))
|
||||
return false;
|
||||
}
|
||||
|
||||
GameObject go = obj.ToGameObject();
|
||||
|
||||
@@ -43,6 +43,16 @@ namespace Game.Entities
|
||||
return !m_summonerGUID.IsEmpty() ? ObjectAccessor.GetCreature(this, m_summonerGUID) : null;
|
||||
}
|
||||
|
||||
public static bool IsPersonalSummonOfAnotherPlayer(Creature summon, ObjectGuid playerToCheck)
|
||||
{
|
||||
TempSummon tempSummon = summon.ToTempSummon();
|
||||
if (tempSummon != null)
|
||||
if (tempSummon.IsVisibleBySummonerOnly() && playerToCheck != tempSummon.GetSummonerGUID())
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public override void Update(uint diff)
|
||||
{
|
||||
base.Update(diff);
|
||||
|
||||
@@ -2300,7 +2300,7 @@ namespace Game.Maps
|
||||
|
||||
public bool Invoke(Creature u)
|
||||
{
|
||||
if (u.GetDeathState() != DeathState.Dead && u.GetEntry() == i_entry && u.IsAlive() == i_alive && i_obj.IsWithinDistInMap(u, i_range))
|
||||
if (u.GetDeathState() != DeathState.Dead && u.GetEntry() == i_entry && u.IsAlive() == i_alive && i_obj.IsWithinDistInMap(u, i_range) && !TempSummon.IsPersonalSummonOfAnotherPlayer(u, i_obj.GetGUID()))
|
||||
{
|
||||
i_range = i_obj.GetDistance(u); // use found unit range as new range limit for next check
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user