Core/Spells: Implemented personal summons

This commit is contained in:
hondacrx
2018-04-08 18:50:05 -04:00
parent 7c8f9d5d15
commit c69c715cc0
10 changed files with 81 additions and 18 deletions
+18 -1
View File
@@ -56,11 +56,28 @@ namespace Game.Combat
public void doAddThreat(Unit victim, float threat)
{
uint redirectThreadPct = victim.GetRedirectThreatPercent();
Unit redirectTarget = victim.GetRedirectThreatTarget();
// If victim is personnal spawn, redirect all aggro to summoner
TempSummon tempSummonVictim = victim.ToTempSummon();
if (tempSummonVictim)
{
if (tempSummonVictim.IsVisibleBySummonerOnly())
{
// Personnal Spawns from same summoner can aggro each other
if (!GetOwner().ToTempSummon() ||
!GetOwner().ToTempSummon().IsVisibleBySummonerOnly() ||
tempSummonVictim.GetSummonerGUID() != GetOwner().ToTempSummon().GetSummonerGUID())
{
redirectThreadPct = 100;
redirectTarget = tempSummonVictim.GetSummoner();
}
}
}
// must check > 0.0f, otherwise dead loop
if (threat > 0.0f && redirectThreadPct != 0)
{
Unit redirectTarget = victim.GetRedirectThreatTarget();
if (redirectTarget != null)
{
float redirectThreat = MathFunctions.CalculatePct(threat, redirectThreadPct);