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:
hondacrx
2021-02-18 12:53:42 -05:00
parent 6a40a6bf7a
commit 250d7fb83b
3 changed files with 13 additions and 7 deletions
+2 -6
View File
@@ -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();
+10
View File
@@ -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);
+1 -1
View File
@@ -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;