diff options
| author | Treeston <treeston.mmoc@gmail.com> | 2017-07-01 20:18:02 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2020-08-13 22:46:44 +0200 |
| commit | 8be23fcbbdf26e8169defd761e61765f301bebe0 (patch) | |
| tree | 6309b79f7dd617a8ddc801624dbbd4ed7ac22174 /src/server/scripts/Kalimdor | |
| parent | 2c99678118798279372f17d4bb5f5a88ac95c413 (diff) | |
[3.3.5] Combat/Threat rewrite - prep & refactor (#19966)
* Combat/Threat rewrite (PR #19930) prep work. Mostly refactors, and a compatibility layer on ThreatManager/HostileReference that allows scripts to be changed already.
(cherry picked from commit e2a1ccd118d129b96e09ff1a15ed0adb1d4a3897)
Diffstat (limited to 'src/server/scripts/Kalimdor')
26 files changed, 60 insertions, 73 deletions
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp index 7ce1e6551c0..7c76809be90 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp @@ -105,7 +105,7 @@ public: { Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_JAINAPROUDMOORE)); if (target && target->IsAlive()) - me->AddThreat(target, 0.0f); + AddThreat(target, 0.0f); } } diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp index 67eba358627..a9617d570e2 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp @@ -108,7 +108,7 @@ public: { Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_THRALL)); if (target && target->IsAlive()) - me->AddThreat(target, 0.0f); + AddThreat(target, 0.0f); } } diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp index a4c3efbe9e5..32c6b841416 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp @@ -103,7 +103,7 @@ public: { Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_THRALL)); if (target && target->IsAlive()) - me->AddThreat(target, 0.0f); + AddThreat(target, 0.0f); } } diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_rage_winterchill.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_rage_winterchill.cpp index 8ec092bde11..c51bbccd6b3 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_rage_winterchill.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_rage_winterchill.cpp @@ -98,7 +98,7 @@ public: { Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_JAINAPROUDMOORE)); if (target && target->IsAlive()) - me->AddThreat(target, 0.0f); + AddThreat(target, 0.0f); } } diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp index 39a1cbd7dde..218760cf7cd 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp @@ -421,7 +421,7 @@ void hyjalAI::EnterEvadeMode(EvadeReason /*why*/) { if (me->GetEntry() != JAINA) me->RemoveAllAuras(); - me->DeleteThreatList(); + me->GetThreatManager().ClearAllThreat(); me->CombatStop(true); me->LoadCreaturesAddon(); diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp index 4e280a1ca18..f51bb032b6c 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp @@ -451,7 +451,7 @@ public: { Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_THRALL)); if (target && target->IsAlive()) - me->AddThreat(target, 0.0f); + AddThreat(target, 0.0f); } } } @@ -487,7 +487,7 @@ public: { Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_THRALL)); if (target && target->IsAlive()) - me->AddThreat(target, 0.0f); + AddThreat(target, 0.0f); } else if (instance->GetData(DATA_ALLIANCE_RETREAT) && instance->GetData(DATA_HORDE_RETREAT)){ //do overrun } @@ -564,13 +564,13 @@ public: { Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_THRALL)); if (target && target->IsAlive()) - me->AddThreat(target, 0.0f); + AddThreat(target, 0.0f); } else { Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_JAINAPROUDMOORE)); if (target && target->IsAlive()) - me->AddThreat(target, 0.0f); + AddThreat(target, 0.0f); } } if (waypointId == LastOverronPos && IsOverrun) @@ -662,13 +662,13 @@ public: { Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_THRALL)); if (target && target->IsAlive()) - me->AddThreat(target, 0.0f); + AddThreat(target, 0.0f); } else { Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_JAINAPROUDMOORE)); if (target && target->IsAlive()) - me->AddThreat(target, 0.0f); + AddThreat(target, 0.0f); } } if (waypointId == LastOverronPos && IsOverrun) @@ -772,13 +772,13 @@ public: { Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_THRALL)); if (target && target->IsAlive()) - me->AddThreat(target, 0.0f); + AddThreat(target, 0.0f); } else { Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_JAINAPROUDMOORE)); if (target && target->IsAlive()) - me->AddThreat(target, 0.0f); + AddThreat(target, 0.0f); } } } @@ -885,13 +885,13 @@ public: { Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_THRALL)); if (target && target->IsAlive()) - me->AddThreat(target, 0.0f); + AddThreat(target, 0.0f); } else { Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_JAINAPROUDMOORE)); if (target && target->IsAlive()) - me->AddThreat(target, 0.0f); + AddThreat(target, 0.0f); } } } @@ -981,13 +981,13 @@ public: { Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_THRALL)); if (target && target->IsAlive()) - me->AddThreat(target, 0.0f); + AddThreat(target, 0.0f); } else { Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_JAINAPROUDMOORE)); if (target && target->IsAlive()) - me->AddThreat(target, 0.0f); + AddThreat(target, 0.0f); } } } @@ -1067,13 +1067,13 @@ public: { Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_THRALL)); if (target && target->IsAlive()) - me->AddThreat(target, 0.0f); + AddThreat(target, 0.0f); } else { Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_JAINAPROUDMOORE)); if (target && target->IsAlive()) - me->AddThreat(target, 0.0f); + AddThreat(target, 0.0f); } } } @@ -1160,7 +1160,7 @@ public: Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_THRALL)); if (target && target->IsAlive()) { - me->AddThreat(target, 0.0f); + AddThreat(target, 0.0f); DoCast(target, SPELL_FROST_BREATH, true); } } @@ -1281,7 +1281,7 @@ public: Unit* target = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_THRALL)); if (target && target->IsAlive()) { - me->AddThreat(target, 0.0f); + AddThreat(target, 0.0f); DoCast(target, SPELL_GARGOYLE_STRIKE, true); } } diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp index 1f6414dddee..7c19b4f3494 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp @@ -304,10 +304,10 @@ public: if (Creature* boss = SummonedPortalBoss(temp)) { if (boss->GetEntry() == NPC_AEONUS) - boss->AddThreat(medivh, 0.0f); + boss->GetThreatManager().AddThreat(medivh, 0.0f); else { - boss->AddThreat(temp, 0.0f); + boss->GetThreatManager().AddThreat(temp, 0.0f); temp->CastSpell(boss, SPELL_RIFT_CHANNEL, false); } } diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp index 0e7f81426c5..094d9ebdc5e 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp @@ -311,7 +311,7 @@ public: if (Unit* Summon = DoSummon(creature_entry, pos, 30000, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT)) if (Unit* temp = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_MEDIVH))) - Summon->AddThreat(temp, 0.0f); + AddThreat(temp, 0.0f, Summon); } void DoSelectSummon() diff --git a/src/server/scripts/Kalimdor/Firelands/boss_alysrazor.cpp b/src/server/scripts/Kalimdor/Firelands/boss_alysrazor.cpp index 1bb7bae6842..5d18fd3ead0 100644 --- a/src/server/scripts/Kalimdor/Firelands/boss_alysrazor.cpp +++ b/src/server/scripts/Kalimdor/Firelands/boss_alysrazor.cpp @@ -227,7 +227,7 @@ class npc_harbinger_of_flame : public CreatureScript switch (eventId) { case EVENT_FIEROBLAST: - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, false, -SPELL_RIDE_MONSTROSITY)) + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, false, true, -SPELL_RIDE_MONSTROSITY)) DoCast(target, SPELL_FIEROBLAST_TRASH); _events.RescheduleEvent(EVENT_FIEROBLAST, 500); // cast time is longer, but thanks to UNIT_STATE_CASTING check it won't trigger more often (need this because this creature gets a stacking haste aura) break; @@ -330,7 +330,7 @@ class npc_blazing_monstrosity : public CreatureScript switch (eventId) { case EVENT_START_SPITTING: - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, false, -SPELL_RIDE_MONSTROSITY)) + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, false, true, -SPELL_RIDE_MONSTROSITY)) DoCast(target, SPELL_MOLTEN_BARRAGE); break; case EVENT_CONTINUE_SPITTING: @@ -635,8 +635,8 @@ class spell_alysrazor_aggro_closest : public SpellScriptLoader void HandleEffect(SpellEffIndex effIndex) { PreventHitDefaultEffect(effIndex); - float curThreat = GetCaster()->getThreatManager().getThreat(GetHitUnit(), true); - GetCaster()->getThreatManager().addThreat(GetHitUnit(), -curThreat + 50000.0f / std::min(1.0f, GetCaster()->GetDistance(GetHitUnit()))); + float curThreat = GetCaster()->GetThreatManager().getThreat(GetHitUnit(), true); + GetCaster()->GetThreatManager().AddThreat(GetHitUnit(), -curThreat + 50000.0f / std::min(1.0f, GetCaster()->GetDistance(GetHitUnit()))); } void UpdateThreat() diff --git a/src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp b/src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp index 0dfe70efd5f..240acf77813 100644 --- a/src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp +++ b/src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp @@ -464,11 +464,7 @@ class spell_baleroc_countdown_aoe_dummy : public SpellScript void FilterTargets(std::list<WorldObject*>& targets) { - Creature* caster = GetCaster()->ToCreature(); - if (!caster) - return; - - if (WorldObject* tank = caster->AI()->SelectTarget(SELECT_TARGET_TOPAGGRO)) + if (WorldObject* tank = GetCaster()->GetVictim()) targets.remove(tank); if (targets.size() < 2) @@ -583,11 +579,8 @@ class spell_baleroc_shards_of_torment_target_search : public SpellScript return; } - Creature* caster = GetCaster()->ToCreature(); - if (!caster || !caster->IsAIEnabled) - return; - - if (WorldObject* tank = caster->AI()->SelectTarget(SELECT_TARGET_TOPAGGRO)) + Unit* caster = GetCaster(); + if (WorldObject* tank = caster->GetVictim()) targets.remove(tank); std::list<WorldObject*> melee, ranged; diff --git a/src/server/scripts/Kalimdor/Firelands/firelands.cpp b/src/server/scripts/Kalimdor/Firelands/firelands.cpp index 7b14d5bcd7a..1c91dd28dda 100644 --- a/src/server/scripts/Kalimdor/Firelands/firelands.cpp +++ b/src/server/scripts/Kalimdor/Firelands/firelands.cpp @@ -232,7 +232,7 @@ struct npc_firelands_magmakin : public ScriptedAI if (!target) return; - me->AddThreat(target, 50000000.0f); + AddThreat(target, 50000000.0f); me->TauntApply(target); } diff --git a/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp b/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp index 2deec5fa15e..6e785b66f4e 100644 --- a/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp +++ b/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp @@ -237,7 +237,7 @@ public: // tank selection based on phase one. If tank is not there i take nearest one if (Unit* tank = ObjectAccessor::GetUnit(*me, tankGUID)) me->GetMotionMaster()->MoveChase(tank); - else if (Unit* newtarget = SelectTarget(SELECT_TARGET_NEAREST, 0)) + else if (Unit* newtarget = SelectTarget(SELECT_TARGET_MINDISTANCE, 0)) me->GetMotionMaster()->MoveChase(newtarget); events.ScheduleEvent(EVENT_BELLOWING_ROAR, 5000); events.ScheduleEvent(EVENT_FLAME_BREATH, urand(10000, 20000)); diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp index c8fa4cd05e3..71ffb168471 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp @@ -169,7 +169,7 @@ class boss_ayamiss : public CreatureScript Position VictimPos = me->EnsureVictim()->GetPosition(); me->GetMotionMaster()->MovePoint(POINT_GROUND, VictimPos); } - DoResetThreat(); + ResetThreatList(); events.ScheduleEvent(EVENT_LASH, urand(5000, 8000)); events.ScheduleEvent(EVENT_TRASH, urand(3000, 6000)); events.CancelEvent(EVENT_POISON_STINGER); diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp index acb48912169..387fa0b1323 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp @@ -122,7 +122,7 @@ class boss_buru : public CreatureScript if (Unit* victim = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true)) { - DoResetThreat(); + ResetThreatList(); AttackStart(victim); Talk(EMOTE_TARGET, victim); } diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_moam.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_moam.cpp index 253464288cd..e6b496f5868 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_moam.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_moam.cpp @@ -148,10 +148,9 @@ class boss_moam : public CreatureScript { std::list<Unit*> targetList; { - const std::list<HostileReference*>& threatlist = me->getThreatManager().getThreatList(); - for (std::list<HostileReference*>::const_iterator itr = threatlist.begin(); itr != threatlist.end(); ++itr) - if ((*itr)->getTarget()->GetTypeId() == TYPEID_PLAYER && (*itr)->getTarget()->GetPowerType() == POWER_MANA) - targetList.push_back((*itr)->getTarget()); + for (ThreatReference* ref : me->GetThreatManager().GetUnsortedThreatList()) + if (ref->GetVictim()->GetTypeId() == TYPEID_PLAYER && ref->GetVictim()->GetPowerType() == POWER_MANA) + targetList.push_back(ref->GetVictim()); } Trinity::Containers::RandomResize(targetList, 5); diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp index c10bde34faf..066f7142766 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp @@ -219,8 +219,8 @@ public: if (KnockBack_Timer <= diff) { DoCastVictim(SPELL_KNOCKBACK); - if (DoGetThreat(me->GetVictim())) - DoModifyThreatPercent(me->GetVictim(), -80); + if (GetThreat(me->GetVictim())) + ModifyThreatByPercent(me->GetVictim(), -80); KnockBack_Timer = urand(15000, 25000); } else KnockBack_Timer -= diff; @@ -307,7 +307,7 @@ public: if (Fear_Timer <= diff) { DoCastVictim(SPELL_FEAR); - DoResetThreat(); + ResetThreatList(); Fear_Timer = 20000; } else Fear_Timer -= diff; diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp index 59d33f235f4..dc99457b866 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp @@ -649,8 +649,8 @@ public: //Place all units in threat list on outside of stomach Stomach_Map.clear(); - for (std::list<HostileReference*>::const_iterator i = me->getThreatManager().getThreatList().begin(); i != me->getThreatManager().getThreatList().end(); ++i) - Stomach_Map[(*i)->getUnitGuid()] = false; //Outside stomach + for (ThreatReference* ref : me->GetThreatManager().GetUnsortedThreatList()) + Stomach_Map[ref->GetVictim()->GetGUID()] = false; //Outside stomach //Spawn 2 flesh tentacles FleshTentaclesKilled = 0; diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp index ff4d69510d1..05df5362b39 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp @@ -150,8 +150,8 @@ public: { DoCast(target, SPELL_ROOT); - if (DoGetThreat(target)) - DoModifyThreatPercent(target, -100); + if (GetThreat(target)) + ModifyThreatByPercent(target, -100); Creature* Hatchling = nullptr; switch (urand(0, 2)) diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp index e346c1fd4d8..ee38b0516d5 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp @@ -118,8 +118,7 @@ public: //Attack random Gamers if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 100.0f, true)) { - me->AddThreat(target, 1.0f); - me->TauntApply(target); + AddThreat(target, 1.0f); AttackStart(target); } WhirlWindRandom_Timer = urand(3000, 7000); @@ -146,8 +145,7 @@ public: //Attack random Gamers if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 100.0f, true)) { - me->AddThreat(target, 1.0f); - me->TauntApply(target); + AddThreat(target, 1.0f); AttackStart(target); } AggroReset = true; @@ -261,8 +259,7 @@ public: //Attack random Gamers if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 100.0f, true)) { - me->AddThreat(target, 1.0f); - me->TauntApply(target); + AddThreat(target, 1.0f); AttackStart(target); } @@ -282,8 +279,7 @@ public: //Attack random Gamers if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 100.0f, true)) { - me->AddThreat(target, 1.0f); - me->TauntApply(target); + AddThreat(target, 1.0f); AttackStart(target); } diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp index ec86b2c192b..9a385210578 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp @@ -165,7 +165,7 @@ class boss_skeram : public CreatureScript break; case EVENT_BLINK: DoCast(me, BlinkSpells[urand(0, 2)]); - DoResetThreat(); + ResetThreatList(); me->SetVisible(true); events.ScheduleEvent(EVENT_BLINK, urand(10000, 30000)); break; diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp index b27a339ed7b..f48bf7ffc7d 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp @@ -239,7 +239,7 @@ struct boss_twinemperorsAI : public ScriptedAI { me->InterruptNonMeleeSpells(false); DoStopAttack(); - DoResetThreat(); + ResetThreatList(); DoCast(me, SPELL_TWIN_TELEPORT_VISUAL); me->AddUnitState(UNIT_STATE_STUNNED); AfterTeleport = true; @@ -268,7 +268,7 @@ struct boss_twinemperorsAI : public ScriptedAI { //DoYell(nearu->GetName(), LANG_UNIVERSAL, 0); AttackStart(nearu); - me->AddThreat(nearu, 10000); + AddThreat(nearu, 10000); } return true; } @@ -428,7 +428,7 @@ public: void CastSpellOnBug(Creature* target) override { target->SetFaction(FACTION_MONSTER); - target->AI()->AttackStart(me->getThreatManager().getHostilTarget()); + target->AI()->AttackStart(me->GetThreatManager().GetCurrentVictim()); target->AddAura(SPELL_MUTATE_BUG, target); target->SetFullHealth(); } @@ -559,7 +559,7 @@ public: if (ArcaneBurst_Timer <= diff) { - if (Unit* mvic = SelectTarget(SELECT_TARGET_NEAREST, 0, NOMINAL_MELEE_RANGE, true)) + if (Unit* mvic = SelectTarget(SELECT_TARGET_MINDISTANCE, 0, NOMINAL_MELEE_RANGE, true)) { DoCast(mvic, SPELL_ARCANEBURST); ArcaneBurst_Timer = 5000; @@ -594,7 +594,7 @@ public: if (me->Attack(who, false)) { me->GetMotionMaster()->MoveChase(who, VEKLOR_DIST, 0); - me->AddThreat(who, 0.0f); + AddThreat(who, 0.0f); } } } diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp index 2646851851a..e7bb0ffd66f 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp @@ -213,7 +213,7 @@ class boss_viscidus : public CreatureScript if (_phase == PHASE_GLOB && summons.empty()) { - DoResetThreat(); + ResetThreatList(); me->NearTeleportTo(ViscidusCoord.GetPositionX(), ViscidusCoord.GetPositionY(), ViscidusCoord.GetPositionZ(), diff --git a/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp b/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp index adfc20062a6..a7cabc1631b 100644 --- a/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp +++ b/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp @@ -662,7 +662,7 @@ public: if (!target) target = me; - target->AddThreat(sironas, 0.001f); + AddThreat(sironas, 0.001f, target); sironas->Attack(target, true); sironas->GetMotionMaster()->MoveChase(target); } diff --git a/src/server/scripts/Kalimdor/zone_desolace.cpp b/src/server/scripts/Kalimdor/zone_desolace.cpp index 4f79ed6a510..3c55e2a5845 100644 --- a/src/server/scripts/Kalimdor/zone_desolace.cpp +++ b/src/server/scripts/Kalimdor/zone_desolace.cpp @@ -86,7 +86,7 @@ public: me->UpdateEntry(NPC_TAMED_KODO); me->CombatStop(); - me->DeleteThreatList(); + me->GetThreatManager().ClearAllThreat(); me->SetSpeedRate(MOVE_RUN, 0.6f); me->GetMotionMaster()->MoveFollow(caster, PET_FOLLOW_DIST, me->GetFollowAngle()); me->setActive(true); diff --git a/src/server/scripts/Kalimdor/zone_silithus.cpp b/src/server/scripts/Kalimdor/zone_silithus.cpp index 23e2275b444..0278070f546 100644 --- a/src/server/scripts/Kalimdor/zone_silithus.cpp +++ b/src/server/scripts/Kalimdor/zone_silithus.cpp @@ -1234,8 +1234,7 @@ class go_wind_stone : public GameObjectScript break; } summons->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE); - summons->SendMeleeAttackStart(player); - summons->CombatStart(player); + summons->EngageWithTarget(player); } public: diff --git a/src/server/scripts/Kalimdor/zone_the_barrens.cpp b/src/server/scripts/Kalimdor/zone_the_barrens.cpp index 734f14e65f4..e139fc8a746 100644 --- a/src/server/scripts/Kalimdor/zone_the_barrens.cpp +++ b/src/server/scripts/Kalimdor/zone_the_barrens.cpp @@ -214,7 +214,7 @@ public: void DoFriend() { me->RemoveAllAuras(); - me->DeleteThreatList(); + me->GetThreatManager().ClearAllThreat(); me->CombatStop(true); me->StopMoving(); |
