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();
|
Creature creature = obj.ToCreature();
|
||||||
if (creature)
|
if (creature)
|
||||||
{
|
if (TempSummon.IsPersonalSummonOfAnotherPlayer(creature, GetGUID()))
|
||||||
TempSummon tempSummon = creature.ToTempSummon();
|
return false;
|
||||||
if (tempSummon)
|
|
||||||
if (tempSummon.IsVisibleBySummonerOnly() && GetGUID() != tempSummon.GetSummonerGUID())
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GameObject go = obj.ToGameObject();
|
GameObject go = obj.ToGameObject();
|
||||||
|
|||||||
@@ -43,6 +43,16 @@ namespace Game.Entities
|
|||||||
return !m_summonerGUID.IsEmpty() ? ObjectAccessor.GetCreature(this, m_summonerGUID) : null;
|
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)
|
public override void Update(uint diff)
|
||||||
{
|
{
|
||||||
base.Update(diff);
|
base.Update(diff);
|
||||||
|
|||||||
@@ -2300,7 +2300,7 @@ namespace Game.Maps
|
|||||||
|
|
||||||
public bool Invoke(Creature u)
|
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
|
i_range = i_obj.GetDistance(u); // use found unit range as new range limit for next check
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
Reference in New Issue
Block a user