Core/Unit: Acquire GetControllingPlayer. Use to fix duel bugs.
Port From (https://github.com/TrinityCore/TrinityCore/commit/070bbb6707028d8c445c8e408d391f80df011d53)
This commit is contained in:
@@ -1892,8 +1892,24 @@ namespace Game.Entities
|
|||||||
|
|
||||||
public override ObjectGuid GetCharmerOrOwnerGUID()
|
public override ObjectGuid GetCharmerOrOwnerGUID()
|
||||||
{
|
{
|
||||||
return !GetCharmerGUID().IsEmpty() ? GetCharmerGUID() : GetOwnerGUID();
|
return IsCharmed() ? GetCharmerGUID() : GetOwnerGUID();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Player GetControllingPlayer()
|
||||||
|
{
|
||||||
|
ObjectGuid guid = GetCharmerOrOwnerGUID();
|
||||||
|
if (!guid.IsEmpty())
|
||||||
|
{
|
||||||
|
Unit master = Global.ObjAccessor.GetUnit(this, guid);
|
||||||
|
if (master != null)
|
||||||
|
return master.GetControllingPlayer();
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return ToPlayer();
|
||||||
|
}
|
||||||
|
|
||||||
public Unit GetCharmer()
|
public Unit GetCharmer()
|
||||||
{
|
{
|
||||||
ObjectGuid charmerid = GetCharmerGUID();
|
ObjectGuid charmerid = GetCharmerGUID();
|
||||||
@@ -1901,6 +1917,7 @@ namespace Game.Entities
|
|||||||
return Global.ObjAccessor.GetUnit(this, charmerid);
|
return Global.ObjAccessor.GetUnit(this, charmerid);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Unit GetCharmerOrOwner()
|
public override Unit GetCharmerOrOwner()
|
||||||
{
|
{
|
||||||
return !GetCharmerGUID().IsEmpty() ? GetCharmer() : GetOwner();
|
return !GetCharmerGUID().IsEmpty() ? GetCharmer() : GetOwner();
|
||||||
@@ -2423,7 +2440,7 @@ namespace Game.Entities
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
// prevent kill only if killed in duel and killed by opponent or opponent controlled creature
|
// prevent kill only if killed in duel and killed by opponent or opponent controlled creature
|
||||||
if (victim.ToPlayer().duel.opponent == attacker || victim.ToPlayer().duel.opponent.GetGUID() == attacker.GetOwnerGUID())
|
if (victim.ToPlayer().duel.opponent == attacker.GetControllingPlayer())
|
||||||
damage = health - 1;
|
damage = health - 1;
|
||||||
|
|
||||||
duel_hasEnded = true;
|
duel_hasEnded = true;
|
||||||
@@ -2437,7 +2454,7 @@ namespace Game.Entities
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
// prevent kill only if killed in duel and killed by opponent or opponent controlled creature
|
// prevent kill only if killed in duel and killed by opponent or opponent controlled creature
|
||||||
if (victimRider.duel.opponent == attacker || victimRider.duel.opponent.GetGUID() == attacker.GetCharmerGUID())
|
if (victimRider.duel.opponent == attacker.GetControllingPlayer())
|
||||||
damage = health - 1;
|
damage = health - 1;
|
||||||
|
|
||||||
duel_wasMounted = true;
|
duel_wasMounted = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user