Combat/Threat rewrite - prep & refactor
Port From (https://github.com/TrinityCore/TrinityCore/commit/8be23fcbbdf26e8169defd761e61765f301bebe0)
This commit is contained in:
@@ -587,7 +587,7 @@ namespace Scripts.Northrend.IcecrownCitadel
|
||||
if (!me.IsAlive() || !me.IsInCombat())
|
||||
return;
|
||||
|
||||
me.DeleteThreatList();
|
||||
me.GetThreatManager().ClearAllThreat();
|
||||
me.CombatStop(true);
|
||||
me.GetMotionMaster().MoveTargetedHome();
|
||||
}
|
||||
@@ -733,11 +733,10 @@ namespace Scripts.Northrend.IcecrownCitadel
|
||||
foreach (var stalker in creatures)
|
||||
{
|
||||
stalker.RemoveAllAuras();
|
||||
stalker.DeleteThreatList();
|
||||
stalker.GetThreatManager().ClearAllThreat();
|
||||
stalker.CombatStop(true);
|
||||
}
|
||||
|
||||
|
||||
uint explosionSpell = isVictory ? GunshipSpells.ExplosionVictory : GunshipSpells.ExplosionWipe;
|
||||
creatures.Clear();
|
||||
me.GetCreatureListWithEntryInGrid(creatures, CreatureIds.GunshipHull, 200.0f);
|
||||
@@ -872,7 +871,7 @@ namespace Scripts.Northrend.IcecrownCitadel
|
||||
if (!me.IsAlive())
|
||||
return;
|
||||
|
||||
me.DeleteThreatList();
|
||||
me.GetThreatManager().ClearAllThreat();
|
||||
me.CombatStop(true);
|
||||
me.GetMotionMaster().MoveTargetedHome();
|
||||
|
||||
@@ -1132,7 +1131,7 @@ namespace Scripts.Northrend.IcecrownCitadel
|
||||
if (!me.IsAlive())
|
||||
return;
|
||||
|
||||
me.DeleteThreatList();
|
||||
me.GetThreatManager().ClearAllThreat();
|
||||
me.CombatStop(true);
|
||||
me.GetMotionMaster().MoveTargetedHome();
|
||||
|
||||
@@ -1442,7 +1441,7 @@ namespace Scripts.Northrend.IcecrownCitadel
|
||||
{
|
||||
players.Sort(new ObjectDistanceOrderPred(me));
|
||||
foreach (var pl in players)
|
||||
me.AddThreat(pl, 1.0f);
|
||||
AddThreat(pl, 1.0f);
|
||||
|
||||
AttackStart(players.First());
|
||||
}
|
||||
|
||||
@@ -646,7 +646,7 @@ namespace Scripts.Northrend.IcecrownCitadel
|
||||
Talk(Texts.SaySvalnaAggro);
|
||||
break;
|
||||
case EventTypes.ImpalingSpear:
|
||||
Unit target = SelectTarget(SelectAggroTarget.Random, 1, 0.0f, true, -(int)InstanceSpells.ImpalingSpear);
|
||||
Unit target = SelectTarget(SelectAggroTarget.Random, 1, 0.0f, true, true, -(int)InstanceSpells.ImpalingSpear);
|
||||
if (target)
|
||||
{
|
||||
DoCast(me, InstanceSpells.AetherShield);
|
||||
|
||||
@@ -1509,7 +1509,7 @@ namespace Scripts.Northrend.IcecrownCitadel
|
||||
if (warden)
|
||||
{
|
||||
terenas.GetAI().AttackStart(warden);
|
||||
warden.AddThreat(terenas, 300000.0f);
|
||||
warden.GetThreatManager().AddThreat(terenas, 300000.0f);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -313,7 +313,7 @@ namespace Scripts.Northrend.IcecrownCitadel
|
||||
Talk(TextIds.SayDominateMind);
|
||||
for (byte i = 0; i < _dominateMindCount; i++)
|
||||
{
|
||||
Unit target = SelectTarget(SelectAggroTarget.Random, 1, 0.0f, true, -(int)SpellIds.DominateMind);
|
||||
Unit target = SelectTarget(SelectAggroTarget.Random, 1, 0.0f, true, false, -(int)SpellIds.DominateMind);
|
||||
if (target != null)
|
||||
DoCast(target, SpellIds.DominateMind);
|
||||
}
|
||||
@@ -423,7 +423,7 @@ namespace Scripts.Northrend.IcecrownCitadel
|
||||
Talk(TextIds.SayPhase2);
|
||||
Talk(TextIds.EmotePhase2);
|
||||
DoStartMovement(me.GetVictim());
|
||||
DoResetThreat();
|
||||
ResetThreatList();
|
||||
|
||||
damage -= (uint)me.GetPower(PowerType.Mana);
|
||||
me.SetPower(PowerType.Mana, 0);
|
||||
|
||||
@@ -470,8 +470,8 @@ namespace Scripts.Northrend.IcecrownCitadel
|
||||
void SelectTarget(List<WorldObject> targets)
|
||||
{
|
||||
targets.Clear();
|
||||
// select any unit but not the tank (by owners threatlist)
|
||||
Unit target = GetCaster().GetAI().SelectTarget(SelectAggroTarget.Random, 1, -GetCaster().GetCombatReach(), true, -(int)Spells.Impaled);
|
||||
// select any unit but not the tank
|
||||
Unit target = GetCaster().GetAI().SelectTarget(SelectAggroTarget.Random, 1, -GetCaster().GetCombatReach(), true, false, -(int)Spells.Impaled);
|
||||
if (!target)
|
||||
target = GetCaster().GetAI().SelectTarget(SelectAggroTarget.Random, 0, 0.0f, true); // or the tank if its solo
|
||||
if (!target)
|
||||
@@ -565,7 +565,7 @@ namespace Scripts.Northrend.IcecrownCitadel
|
||||
CreatureAI marrowgarAI = marrowgar.GetAI();
|
||||
byte boneSpikeCount = (byte)(Convert.ToBoolean((int)GetCaster().GetMap().GetDifficultyID() & 1) ? 3 : 1);
|
||||
|
||||
List<Unit> targets = marrowgarAI.SelectTargetList(new BoneSpikeTargetSelector(marrowgarAI), boneSpikeCount, SelectAggroTarget.Random);
|
||||
List<Unit> targets = marrowgarAI.SelectTargetList(boneSpikeCount, SelectAggroTarget.Random, 1, new BoneSpikeTargetSelector(marrowgarAI));
|
||||
if (targets.Empty())
|
||||
return;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user