diff options
author | Shauren <shauren.trinity@gmail.com> | 2024-01-08 22:23:12 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2024-01-08 22:23:12 +0100 |
commit | 605e5f94c0d71cad8e83fa5a07eaec4e6bed9cc3 (patch) | |
tree | 5cad677458a22ef0dd187fa86d1cd574282384dd /src/server/scripts/Northrend | |
parent | eeb4407f077bf567361becdbe5083c2790f00313 (diff) |
Core/Creatures: Moved autoattack handling from scripts to game
Diffstat (limited to 'src/server/scripts/Northrend')
123 files changed, 115 insertions, 675 deletions
diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp index 03214e40768..717c0cec560 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_amanitar.cpp @@ -189,8 +189,6 @@ struct boss_amanitar : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp index 5085bfd36cd..41f83de88ac 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp @@ -167,8 +167,6 @@ struct boss_elder_nadox : public BossAI DoCastSelf(SPELL_SUMMON_SWARM_GUARD); _guardianSummoned = true; } - - DoMeleeAttackIfReady(); } private: @@ -206,8 +204,6 @@ struct npc_ahnkahar_nerubian : public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp index b2157756451..0812891367b 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp @@ -354,10 +354,7 @@ struct boss_volazj : public BossAI me->RemoveAurasDueToSpell(INSANITY_VISUAL); } - scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + scheduler.Update(diff); } void JustDied(Unit* killer) override @@ -733,10 +730,7 @@ struct npc_twisted_visage : public ScriptedAI if (!UpdateVictim()) return; - _scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + _scheduler.Update(diff); } private: diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_jedoga_shadowseeker.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_jedoga_shadowseeker.cpp index 386a7622c49..c6bd4787e05 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_jedoga_shadowseeker.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_jedoga_shadowseeker.cpp @@ -390,8 +390,6 @@ struct boss_jedoga_shadowseeker : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp index 296cb50e0e4..5694682b7bd 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp @@ -216,8 +216,6 @@ struct boss_prince_taldaram : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } void DamageTaken(Unit* /*doneBy*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp index 7d35ecef46f..048c06f122c 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp @@ -280,8 +280,6 @@ struct boss_anub_arak : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } void JustDied(Unit* /*killer*/) override @@ -501,10 +499,7 @@ struct npc_anubarak_anub_ar_assassin : public npc_anubarak_pet_template if (!UpdateVictim()) return; - _scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + _scheduler.Update(diff); } void MovementInform(uint32 /*type*/, uint32 id) override @@ -543,10 +538,7 @@ struct npc_anubarak_anub_ar_guardian : public npc_anubarak_pet_template if (!UpdateVictim()) return; - _scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + _scheduler.Update(diff); } private: @@ -576,10 +568,7 @@ struct npc_anubarak_anub_ar_venomancer : public npc_anubarak_pet_template if (!UpdateVictim()) return; - _scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + _scheduler.Update(diff); } private: diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp index d9bd21691f2..9a295622a7b 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp @@ -348,8 +348,6 @@ struct boss_hadronox : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } // Safeguard to prevent Hadronox dying to NPCs @@ -474,8 +472,6 @@ struct npc_hadronox_crusherPackAI : public ScriptedAI while (uint32 eventId = _events.ExecuteEvent()) DoEvent(eventId); - - DoMeleeAttackIfReady(); } protected: @@ -745,8 +741,6 @@ struct npc_hadronox_foeAI : public ScriptedAI while (uint32 eventId = _events.ExecuteEvent()) DoEvent(eventId); - - DoMeleeAttackIfReady(); } protected: diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp index a7358a52b90..11b2e61efea 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp @@ -285,8 +285,6 @@ struct boss_krik_thir : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override @@ -452,8 +450,6 @@ struct npc_watcher_gashra : public npc_gatewatcher_petAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: @@ -519,8 +515,6 @@ struct npc_watcher_narjil : public npc_gatewatcher_petAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: @@ -586,8 +580,6 @@ struct npc_watcher_silthik : public npc_gatewatcher_petAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: @@ -638,8 +630,6 @@ struct npc_anub_ar_warrior : public npc_gatewatcher_petAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; @@ -689,8 +679,6 @@ struct npc_anub_ar_skirmisher : public npc_gatewatcher_petAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override @@ -749,8 +737,6 @@ struct npc_anub_ar_shadowcaster : public npc_gatewatcher_petAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp index 69911185eed..164645a0ddd 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp @@ -493,8 +493,6 @@ struct boss_sartharion : public BossAI { _isSoftEnraged = true; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp index f52c2bb1625..421b0715091 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp @@ -451,8 +451,6 @@ struct npc_tenebron : public dummy_dragonAI break; } } - - DoMeleeAttackIfReady(); } }; @@ -519,8 +517,6 @@ struct npc_shadron : public dummy_dragonAI break; } } - - DoMeleeAttackIfReady(); } }; @@ -574,8 +570,6 @@ struct npc_vesperon : public dummy_dragonAI break; } } - - DoMeleeAttackIfReady(); } }; @@ -637,14 +631,6 @@ struct npc_acolyte_of_shadron : public ScriptedAI debuffTarget->RemoveAurasDueToSpell(SPELL_GIFT_OF_TWILIGTH_SHA); } - void UpdateAI(uint32 /*diff*/) override - { - if (!UpdateVictim()) - return; - - DoMeleeAttackIfReady(); - } - private: InstanceScript* instance; }; @@ -701,14 +687,6 @@ struct npc_acolyte_of_vesperon : public ScriptedAI instance->DoRemoveAurasDueToSpellOnPlayers(58835, true, true); // Components of spell Twilight Torment } - void UpdateAI(uint32 /*diff*/) override - { - if (!UpdateVictim()) - return; - - DoMeleeAttackIfReady(); - } - private: InstanceScript* instance; }; @@ -902,8 +880,6 @@ struct npc_twilight_whelp : public ScriptedAI DoCastVictim(SPELL_FADE_ARMOR); events.ScheduleEvent(EVENT_FADE_ARMOR, 5s, 10s); } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp index 9a13a69a664..2a4bf0460fd 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp @@ -218,8 +218,6 @@ struct boss_baltharus_the_warborn : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: @@ -298,8 +296,6 @@ struct npc_baltharus_the_warborn_clone : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp index a2f3e083402..ff40d8e0790 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_general_zarithrian.cpp @@ -161,8 +161,6 @@ struct boss_general_zarithrian : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; @@ -242,8 +240,6 @@ struct npc_onyx_flamecaller : public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } private: EventMap _events; diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp index b633761d1cd..7cbace920a0 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp @@ -374,8 +374,6 @@ class boss_halion : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } void SetData(uint32 index, uint32 value) override @@ -545,8 +543,6 @@ class boss_twilight_halion : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp index fe7be970774..d6fe5c2a011 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp @@ -191,8 +191,6 @@ struct boss_saviana_ragefire : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp index fd83e5064c1..17c1eaca2cc 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_argent_challenge.cpp @@ -249,8 +249,6 @@ public: uiRadianceTimer = 16000; } else uiRadianceTimer -= uiDiff; - - DoMeleeAttackIfReady(); } }; @@ -406,8 +404,6 @@ public: bHealth = true; } - - DoMeleeAttackIfReady(); } void JustSummoned(Creature* summon) override @@ -480,8 +476,6 @@ public: } uiShadowPastTimer = 5000; }else uiShadowPastTimer -= uiDiff; - - DoMeleeAttackIfReady(); } void JustDied(Unit* /*killer*/) override @@ -590,16 +584,6 @@ public: uiWaypoint = uiType; } - void UpdateAI(uint32 uiDiff) override - { - EscortAI::UpdateAI(uiDiff); - - if (!UpdateVictim()) - return; - - DoMeleeAttackIfReady(); - } - void JustDied(Unit* /*killer*/) override { instance->SetData(DATA_ARGENT_SOLDIER_DEFEATED, instance->GetData(DATA_ARGENT_SOLDIER_DEFEATED) + 1); diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp index 6b308410f64..a42e87a1335 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp @@ -137,6 +137,7 @@ public: summons.DespawnAll(); me->SetDisplayId(me->GetNativeDisplayId()); me->ClearUnitState(UNIT_STATE_ROOT | UNIT_STATE_STUNNED); + me->SetCanMelee(true); Initialize(); } @@ -168,6 +169,7 @@ public: uiResurrectTimer = 4000; bEventInProgress = false; me->ClearUnitState(UNIT_STATE_ROOT | UNIT_STATE_STUNNED); + me->SetCanMelee(true); } else uiResurrectTimer -= uiDiff; } @@ -262,9 +264,6 @@ public: break; } } - - if (!me->HasUnitState(UNIT_STATE_ROOT) && !me->HealthBelowPct(1)) - DoMeleeAttackIfReady(); } void DamageTaken(Unit* /*pDoneBy*/, uint32& uiDamage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override @@ -274,6 +273,7 @@ public: uiDamage = 0; me->SetHealth(0); me->AddUnitState(UNIT_STATE_ROOT | UNIT_STATE_STUNNED); + me->SetCanMelee(false); summons.DespawnAll(); switch (uiPhase) { @@ -340,8 +340,6 @@ public: } uiAttackTimer = 3500; } else uiAttackTimer -= uiDiff; - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp index abec7d1e932..bf35bcda21e 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp @@ -296,8 +296,6 @@ public: } uiShieldBreakerTimer = 7000; }else uiShieldBreakerTimer -= uiDiff; - - DoMeleeAttackIfReady(); } }; @@ -429,8 +427,6 @@ public: DoCastVictim(SPELL_MORTAL_STRIKE); uiMortalStrikeTimer = urand(8000, 12000); } else uiMortalStrikeTimer -= uiDiff; - - DoMeleeAttackIfReady(); } void JustDied(Unit* /*killer*/) override @@ -573,8 +569,6 @@ public: DoCast(me, SPELL_HASTE); uiHasteTimer = 22000; } else uiHasteTimer -= uiDiff; - - DoMeleeAttackIfReady(); } void JustDied(Unit* /*killer*/) override @@ -725,8 +719,6 @@ public: uiHexMendingTimer = urand(20000, 25000); } else uiHexMendingTimer -= uiDiff; - - DoMeleeAttackIfReady(); } void JustDied(Unit* /*killer*/) override @@ -886,8 +878,6 @@ public: } bShoot = false; } else uiMultiShotTimer -= uiDiff; - - DoMeleeAttackIfReady(); } void JustDied(Unit* /*killer*/) override @@ -1012,8 +1002,6 @@ public: DoCast(target, SPELL_POISON_BOTTLE); uiPosionBottleTimer = 19000; } else uiPosionBottleTimer -= uiDiff; - - DoMeleeAttackIfReady(); } void JustDied(Unit* /*killer*/) override diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp index 17c36044f66..08c75cc716a 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp @@ -190,6 +190,7 @@ struct boss_anubarak_trial : public BossAI Initialize(); me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE); me->SetUninteractible(false); + me->SetCanMelee(true); // clean up spawned Frost Spheres std::list<Creature*> FrostSphereList; me->GetCreatureListWithEntryInGrid(FrostSphereList, NPC_FROST_SPHERE, 150.0f); @@ -335,6 +336,7 @@ struct boss_anubarak_trial : public BossAI DoCast(me, SPELL_CLEAR_ALL_DEBUFFS); me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE); me->SetUninteractible(true); + me->SetCanMelee(false); Talk(EMOTE_BURROWER); events.SetPhase(PHASE_SUBMERGED); events.ScheduleEvent(EVENT_PURSUING_SPIKE, 2s, 0, PHASE_SUBMERGED); @@ -372,6 +374,7 @@ struct boss_anubarak_trial : public BossAI me->RemoveAurasDueToSpell(SPELL_SUBMERGE_ANUBARAK); me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE); me->SetUninteractible(false); + me->SetCanMelee(true); DoCast(me, SPELL_EMERGE_ANUBARAK); Talk(EMOTE_EMERGE); events.SetPhase(PHASE_MELEE); @@ -422,9 +425,6 @@ struct boss_anubarak_trial : public BossAI Talk(EMOTE_LEECHING_SWARM); Talk(SAY_LEECHING_SWARM); } - - if (events.IsInPhase(PHASE_MELEE)) - DoMeleeAttackIfReady(); } private: @@ -493,8 +493,6 @@ struct npc_swarm_scarab : public ScriptedAI } else _determinationTimer -= diff; - - DoMeleeAttackIfReady(); } private: @@ -575,8 +573,6 @@ struct npc_nerubian_burrower : public ScriptedAI } else _submergeTimer -= diff; - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp index eafc61b849a..b4198fc8fa0 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp @@ -724,9 +724,6 @@ struct boss_faction_championsAI : public BossAI return; } } - - if (_aiType == AI_MELEE || _aiType == AI_PET) - DoMeleeAttackIfReady(); } private: @@ -1322,7 +1319,10 @@ struct npc_toc_mage : public boss_faction_championsAI struct npc_toc_hunter : public boss_faction_championsAI { - npc_toc_hunter(Creature* creature) : boss_faction_championsAI(creature, AI_RANGED) { } + npc_toc_hunter(Creature* creature) : boss_faction_championsAI(creature, AI_RANGED) + { + me->SetCanMelee(false); // DoSpellAttackIfReady + } void Reset() override { diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp index 240bf370bd6..5512f5b4460 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp @@ -281,8 +281,6 @@ struct boss_jaraxxus : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; @@ -363,10 +361,7 @@ struct npc_fel_infernal : public ScriptedAI if (!UpdateVictim()) return; - _scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + _scheduler.Update(diff); } private: @@ -456,8 +451,6 @@ struct npc_mistress_of_pain : public ScriptedAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp index 837872c398d..b61a3633ef7 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp @@ -320,8 +320,6 @@ struct boss_northrend_beastsAI : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; @@ -443,6 +441,7 @@ struct npc_snobold_vassal : public ScriptedAI break; case ACTION_ACTIVE_SNOBOLD: _mountedOnPlayer = true; + me->SetCanMelee(true); break; default: break; @@ -468,6 +467,7 @@ struct npc_snobold_vassal : public ScriptedAI if (gormok && gormok->IsAlive()) { me->AttackStop(); + me->SetCanMelee(false); _targetGUID.Clear(); _mountedOnPlayer = false; _events.CancelEvent(EVENT_BATTER); @@ -490,6 +490,7 @@ struct npc_snobold_vassal : public ScriptedAI _events.CancelEvent(EVENT_CHECK_MOUNT); _events.CancelEvent(EVENT_FIRE_BOMB); me->AttackStop(); + me->SetCanMelee(true); SetCombatMovement(true); _gormokDead = true; if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true)) @@ -550,10 +551,6 @@ struct npc_snobold_vassal : public ScriptedAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - // do melee attack only if is in player back or if gormok is dead. - if (_mountedOnPlayer || _gormokDead) - DoMeleeAttackIfReady(); } private: @@ -668,6 +665,7 @@ struct boss_jormungarAI : public boss_northrend_beastsAI { Initialize(); boss_northrend_beastsAI::Reset(); + me->SetCanMelee(true); } void JustSummoned(Creature* summoned) override @@ -759,6 +757,7 @@ struct boss_jormungarAI : public boss_northrend_beastsAI me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE); me->SetUninteractible(true); + me->SetCanMelee(false); me->GetMotionMaster()->MovePoint(0, ToCCommonLoc[1].GetPositionX() + frand(-40.0f, 40.0f), ToCCommonLoc[1].GetPositionY() + frand(-40.0f, 40.0f), ToCCommonLoc[1].GetPositionZ() + me->GetCollisionHeight()); } @@ -781,6 +780,7 @@ struct boss_jormungarAI : public boss_northrend_beastsAI { me->SetControlled(true, UNIT_STATE_ROOT); me->SetDisplayId(modelStationary); + me->SetCanMelee(false); DoCastSelf(SPELL_GROUND_VISUAL_1, true); events.SetPhase(PHASE_STATIONARY); } @@ -789,6 +789,7 @@ struct boss_jormungarAI : public boss_northrend_beastsAI if (Unit* target = me->GetVictim()) me->GetMotionMaster()->MoveChase(target); me->SetDisplayId(modelMobile); + me->SetCanMelee(true); events.SetPhase(PHASE_MOBILE); } wasMobile = !wasMobile; @@ -804,6 +805,7 @@ struct boss_jormungarAI : public boss_northrend_beastsAI { instance->DoCloseDoorOrButton(instance->GetGuidData(DATA_MAIN_GATE)); me->SetImmuneToPC(false); + me->SetCanMelee(true); events.SetPhase(PHASE_MOBILE); me->SetReactState(REACT_AGGRESSIVE); DoZoneInCombat(); @@ -867,9 +869,7 @@ struct boss_jormungarAI : public boss_northrend_beastsAI return; } - if (events.IsInPhase(PHASE_MOBILE)) - DoMeleeAttackIfReady(); - else + if (!events.IsInPhase(PHASE_MOBILE)) DoCastVictim(spitSpell); } diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp index dca2b5d81c3..0a6ca5742d2 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp @@ -358,8 +358,6 @@ struct boss_twin_baseAI : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } protected: diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_king_dred.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_king_dred.cpp index b10edbf31c9..bb3b2e22e30 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/boss_king_dred.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/boss_king_dred.cpp @@ -152,8 +152,6 @@ struct boss_king_dred : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: @@ -194,8 +192,6 @@ struct npc_drakkari_gutripper : public ScriptedAI } else GutRipTimer -= diff; - - DoMeleeAttackIfReady(); } void JustDied(Unit* /*killer*/) override @@ -239,8 +235,6 @@ struct npc_drakkari_scytheclaw : public ScriptedAI } else uiRendTimer -= diff; - - DoMeleeAttackIfReady(); } void JustDied(Unit* /*killer*/) override diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp index 05fd38c38e5..ae4dd0aab77 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp @@ -190,8 +190,6 @@ struct boss_tharon_ja : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp index 397ae7597a1..f38e1dcf690 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp @@ -153,8 +153,6 @@ struct boss_trollgore : public BossAI if (ConsumeAura && ConsumeAura->GetStackAmount() > 9) _consumptionJunction = false; } - - DoMeleeAttackIfReady(); } void JustDied(Unit* /*killer*/) override diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp index 49bd36ced27..8a0d8b761e8 100644 --- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp @@ -82,6 +82,7 @@ struct boss_bronjahm : public BossAI events.ScheduleEvent(EVENT_SHADOW_BOLT, 2s); events.ScheduleEvent(EVENT_MAGIC_BANE, 8s, 20s); events.ScheduleEvent(EVENT_CORRUPT_SOUL, 25s, 35s, 0, PHASE_1); + me->SetCanMelee(true); } void JustReachedHome() override @@ -117,6 +118,7 @@ struct boss_bronjahm : public BossAI DoCast(me, SPELL_TELEPORT); events.ScheduleEvent(EVENT_FEAR, 12s, 16s, 0, PHASE_2); events.ScheduleEvent(EVENT_SOULSTORM, 100ms, 0, PHASE_2); + me->SetCanMelee(false); } } @@ -203,9 +205,6 @@ struct boss_bronjahm : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - if (!events.IsInPhase(PHASE_2)) - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp index 6ac0a779725..1f9ca84e3b8 100644 --- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_devourer_of_souls.cpp @@ -326,8 +326,6 @@ struct boss_devourer_of_souls : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp index 49987063278..22adfdc8b92 100644 --- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/forge_of_souls.cpp @@ -158,7 +158,6 @@ struct npc_sylvanas_fos : public ScriptedAI return; events.Update(diff); - DoMeleeAttackIfReady(); } }; @@ -255,8 +254,6 @@ struct npc_jaina_fos: public ScriptedAI return; events.Update(diff); - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp index 02c441d8b86..c936c03df2f 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp @@ -140,8 +140,6 @@ class boss_falric : public CreatureScript default: break; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp index fb933ba1a6a..0660da6176a 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp @@ -121,8 +121,6 @@ class boss_marwyn : public CreatureScript default: break; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp index b2db3a91b4a..377fc98af1d 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp @@ -1160,8 +1160,6 @@ class npc_jaina_or_sylvanas_escape_hor : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } private: @@ -1348,8 +1346,6 @@ class npc_the_lich_king_escape_hor : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } private: @@ -1558,8 +1554,6 @@ class npc_ghostly_priest : public CreatureScript default: break; } - - DoMeleeAttackIfReady(); } }; @@ -1633,8 +1627,6 @@ class npc_phantom_mage : public CreatureScript default: break; } - - DoMeleeAttackIfReady(); } }; @@ -1726,8 +1718,6 @@ class npc_shadowy_mercenary : public CreatureScript default: break; } - - DoMeleeAttackIfReady(); } }; @@ -1780,8 +1770,6 @@ class npc_spectral_footman : public CreatureScript default: break; } - - DoMeleeAttackIfReady(); } }; @@ -1842,8 +1830,6 @@ class npc_tortured_rifleman : public CreatureScript default: break; } - - DoMeleeAttackIfReady(); } }; @@ -1942,7 +1928,6 @@ class npc_frostsworn_general : public CreatureScript break; } } - DoMeleeAttackIfReady(); } void SummonClones() @@ -2016,8 +2001,6 @@ class npc_spiritual_reflection : public CreatureScript default: break; } - - DoMeleeAttackIfReady(); } private: @@ -2248,8 +2231,6 @@ class npc_raging_ghoul : public CreatureScript default: break; } - - DoMeleeAttackIfReady(); } }; @@ -2318,8 +2299,6 @@ class npc_risen_witch_doctor : public CreatureScript default: break; } - - DoMeleeAttackIfReady(); } }; @@ -2370,8 +2349,6 @@ class npc_lumbering_abomination : public CreatureScript default: break; } - - DoMeleeAttackIfReady(); } }; @@ -2711,8 +2688,6 @@ class npc_quel_delar_sword : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } } diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp index d07bd4f55fc..8d7cc069edc 100644 --- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp @@ -239,8 +239,6 @@ struct boss_garfrost : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp index e645e2310cc..531f88a88e4 100644 --- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp @@ -284,8 +284,6 @@ struct boss_ick : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp index 1383bc1a827..85fd943cf7d 100644 --- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp @@ -275,8 +275,6 @@ struct boss_tyrannus : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp index 2e14fdef1e9..c0ca2d4a7bf 100644 --- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/pit_of_saron.cpp @@ -100,8 +100,6 @@ struct npc_ymirjar_flamebearer: public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } private: @@ -143,8 +141,6 @@ struct npc_iceborn_protodrake: public ScriptedAI } else _frostBreathCooldown -= diff; - - DoMeleeAttackIfReady(); } private: @@ -191,8 +187,6 @@ struct npc_geist_ambusher: public ScriptedAI } else _leapingFaceMaulCooldown -= diff; - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp b/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp index 12b9ac830dc..a2a1ad294ea 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp @@ -216,9 +216,6 @@ struct boss_drakkari_colossus : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - if (me->GetReactState() == REACT_AGGRESSIVE) - DoMeleeAttackIfReady(); } void JustSummoned(Creature* summon) override @@ -283,8 +280,6 @@ struct boss_drakkari_elemental : public ScriptedAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } void DoAction(int32 action) override @@ -439,10 +434,7 @@ struct npc_living_mojo : public ScriptedAI if (!UpdateVictim()) return; - _scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + _scheduler.Update(diff); } private: diff --git a/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp b/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp index 79a6d240d04..007e9ed11c2 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp @@ -176,8 +176,6 @@ struct boss_moorabi : public BossAI if(me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp b/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp index fcc36315e6a..d274c9d1162 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp @@ -133,10 +133,7 @@ struct boss_slad_ran : public BossAI if (!UpdateVictim()) return; - scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + scheduler.Update(diff); } void DamageTaken(Unit* /*attacker*/, uint32& /*damage*/, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp index 51527f3e9b9..17ae3a3dd64 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp @@ -611,7 +611,10 @@ protected: struct boss_prince_keleseth_icc : public BloodPrincesBossAI { - boss_prince_keleseth_icc(Creature* creature) : BloodPrincesBossAI(creature, DATA_PRINCE_KELESETH) { } + boss_prince_keleseth_icc(Creature* creature) : BloodPrincesBossAI(creature, DATA_PRINCE_KELESETH) + { + me->SetCanMelee(false); + } void ScheduleEvents() override { @@ -671,8 +674,6 @@ struct boss_prince_keleseth_icc : public BloodPrincesBossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - // does not melee } }; @@ -745,8 +746,6 @@ struct boss_prince_taldaram_icc : public BloodPrincesBossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; @@ -841,8 +840,6 @@ struct boss_prince_valanar_icc : public BloodPrincesBossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp index 6aedfefafae..48d42b6aa44 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp @@ -409,8 +409,6 @@ struct boss_blood_queen_lana_thel : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } bool WasVampire(ObjectGuid guid) const diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp index 3357f25086f..b21e77530e0 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp @@ -534,8 +534,6 @@ struct boss_deathbringer_saurfang : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } uint32 GetData(uint32 type) const override diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp index e6bdd11aa7f..f7e8cdcbc31 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp @@ -255,8 +255,6 @@ struct boss_festergut : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } void SetData(uint32 type, uint32 data) override @@ -331,8 +329,6 @@ struct npc_stinky_icc : public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } void JustDied(Unit* /*killer*/) override diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp index 1d27d897b48..98580bde1cb 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp @@ -1076,12 +1076,13 @@ struct npc_high_overlord_saurfang_igb : public ScriptedAI } } - if (me->IsWithinMeleeRange(me->GetVictim())) - DoMeleeAttackIfReady(); - else if (me->isAttackReady()) + if (!me->IsWithinMeleeRange(me->GetVictim())) { - DoCastVictim(SPELL_RENDING_THROW); - me->resetAttackTimer(); + if (me->isAttackReady()) + { + DoCastVictim(SPELL_RENDING_THROW); + me->resetAttackTimer(); + } } } @@ -1336,12 +1337,13 @@ struct npc_muradin_bronzebeard_igb : public ScriptedAI } } - if (me->IsWithinMeleeRange(me->GetVictim())) - DoMeleeAttackIfReady(); - else if (me->isAttackReady()) + if (!me->IsWithinMeleeRange(me->GetVictim())) { - DoCastVictim(SPELL_RENDING_THROW); - me->resetAttackTimer(); + if (me->isAttackReady()) + { + DoCastVictim(SPELL_RENDING_THROW); + me->resetAttackTimer(); + } } } @@ -1484,8 +1486,6 @@ struct npc_gunship_boarding_addAI : public gunship_npc_AI if (!HasAttackablePlayerNearby()) TriggerBurningPitch(); - - DoMeleeAttackIfReady(); } bool CanAIAttack(Unit const* target) const override @@ -1563,8 +1563,6 @@ struct npc_gunship_boarding_leader : public npc_gunship_boarding_addAI break; } } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp index e34aee8b3a9..4337cc59996 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp @@ -417,6 +417,7 @@ struct boss_lady_deathwhisper : public BossAI damage -= me->GetPower(POWER_MANA); me->SetPower(POWER_MANA, 0); me->RemoveAurasDueToSpell(SPELL_MANA_BARRIER); + me->SetCanMelee(true); scheduler.CancelGroup(GROUP_ONE); scheduler @@ -495,12 +496,7 @@ struct boss_lady_deathwhisper : public BossAI if (!UpdateVictim() && _phase != PHASE_INTRO) return; - scheduler.Update(diff, [this] - { - // We should not melee attack when barrier is up - if (!me->HasAura(SPELL_MANA_BARRIER)) - DoMeleeAttackIfReady(); - }); + scheduler.Update(diff); } // summoning function for first phase @@ -668,10 +664,7 @@ struct npc_cult_fanatic : public ScriptedAI if (!UpdateVictim() && !me->HasAura(SPELL_PERMANENT_FEIGN_DEATH)) return; - _scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + _scheduler.Update(diff); } protected: @@ -811,10 +804,7 @@ struct npc_vengeful_shade : public ScriptedAI void UpdateAI(uint32 diff) override { - _scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + _scheduler.Update(diff); } private: @@ -933,8 +923,6 @@ struct npc_darnavan : public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp index 08d0fa77a6f..b7236028725 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp @@ -275,8 +275,6 @@ struct boss_lord_marrowgar : public BossAI // 10 seconds since encounter start Bone Slice replaces melee attacks if (_boneSlice && !me->GetCurrentSpell(CURRENT_MELEE_SPELL)) DoCastVictim(SPELL_BONE_SLICE); - - DoMeleeAttackIfReady(); } void MovementInform(uint32 type, uint32 id) override diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp index ed08f59b1c3..25dc005fd52 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp @@ -697,8 +697,6 @@ struct boss_professor_putricide : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: @@ -754,8 +752,6 @@ class npc_putricide_oozeAI : public ScriptedAI if (!_newTargetSelectTimer && !me->IsNonMeleeSpellCast(false, false, true, false, true)) _newTargetSelectTimer = 1000; - DoMeleeAttackIfReady(); - if (!_newTargetSelectTimer) return; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp index 623b1b929b6..081cfce1ce4 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp @@ -229,8 +229,6 @@ struct boss_rotface : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: @@ -271,8 +269,6 @@ struct npc_little_ooze : public ScriptedAI DoCastVictim(SPELL_STICKY_OOZE); events.ScheduleEvent(EVENT_STICKY_OOZE, 15s); } - - DoMeleeAttackIfReady(); } private: @@ -328,9 +324,6 @@ struct npc_big_ooze : public ScriptedAI break; } } - - if (me->IsVisible()) - DoMeleeAttackIfReady(); } private: @@ -403,8 +396,6 @@ struct npc_precious_icc : public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } private: @@ -695,6 +686,7 @@ class spell_rotface_unstable_ooze_explosion_suicide : public AuraScript target->RemoveAllAuras(); target->SetVisible(false); + target->ToCreature()->SetCanMelee(false); target->ToCreature()->DespawnOrUnsummon(60s); } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp index 86c9ee09c49..e57abfc67b8 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp @@ -564,8 +564,6 @@ struct boss_sindragosa : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: @@ -751,8 +749,6 @@ struct npc_spinestalker : public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } private: @@ -904,8 +900,6 @@ struct npc_rimefang_icc : public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } private: @@ -1003,8 +997,6 @@ struct npc_sindragosa_trash : public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sister_svalna.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sister_svalna.cpp index 1d2aa997cf2..2d7cfc810f1 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sister_svalna.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sister_svalna.cpp @@ -505,8 +505,6 @@ struct boss_sister_svalna : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: @@ -778,8 +776,6 @@ struct npc_crok_scourgebane : public EscortAI break; } } - - DoMeleeAttackIfReady(); } bool CanAIAttack(Unit const* target) const override @@ -985,8 +981,6 @@ struct npc_captain_arnath : public npc_argent_captainAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: @@ -1055,8 +1049,6 @@ struct npc_captain_brandon : public npc_argent_captainAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; @@ -1114,8 +1106,6 @@ struct npc_captain_grondel : public npc_argent_captainAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; @@ -1169,8 +1159,6 @@ struct npc_captain_rupert : public npc_argent_captainAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; @@ -1366,8 +1354,6 @@ struct npc_frostwing_ymirjar_vrykul : public ScriptedAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp index ba5dcb80c28..92b885d6d55 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp @@ -1129,8 +1129,6 @@ struct boss_the_lich_king : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING) && !(events.IsInPhase(PHASE_TRANSITION) || events.IsInPhase(PHASE_OUTRO) || events.IsInPhase(PHASE_FROSTMOURNE))) return; } - - DoMeleeAttackIfReady(); } private: @@ -1261,8 +1259,6 @@ struct npc_tirion_fordring_tft : public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } private: @@ -1321,8 +1317,6 @@ struct npc_shambling_horror_icc : public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } void OnSpellFailed(SpellInfo const* spell) override @@ -1412,8 +1406,6 @@ struct npc_raging_spirit : public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } private: @@ -1556,8 +1548,6 @@ struct npc_valkyr_shadowguard : public ScriptedAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - // no melee attacks } private: @@ -1792,10 +1782,6 @@ struct npc_terenas_menethil : public ScriptedAI break; } } - - // fighting Spirit Warden - if (me->IsInCombat()) - DoMeleeAttackIfReady(); } private: @@ -1839,8 +1825,6 @@ struct npc_spirit_warden : public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } private: @@ -1936,8 +1920,6 @@ struct npc_broken_frostmourne : public CreatureAI break; } } - - // no melee attacks } private: diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp index b8c9fca9d61..3b9e0f2b8de 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp @@ -731,8 +731,6 @@ struct npc_risen_archmage : public ScriptedAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: @@ -782,8 +780,6 @@ struct npc_blazing_skeleton : public ScriptedAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: @@ -838,8 +834,6 @@ struct npc_suppresser : public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } private: @@ -855,14 +849,6 @@ struct npc_blistering_zombie : public ScriptedAI { DoCastSelf(SPELL_ACID_BURST, true); } - - void UpdateAI(uint32 /*diff*/) override - { - if (!UpdateVictim()) - return; - - DoMeleeAttackIfReady(); - } }; struct npc_gluttonous_abomination : public ScriptedAI @@ -905,8 +891,6 @@ struct npc_gluttonous_abomination : public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp index b7b45af37b0..527afb2c3c3 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp @@ -499,8 +499,6 @@ struct npc_rotting_frost_giant : public ScriptedAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: @@ -848,8 +846,6 @@ struct DarkFallenAI : public ScriptedAI if (AttackSpellId) DoSpellAttackIfReady(AttackSpellId); - else - DoMeleeAttackIfReady(); } protected: @@ -884,7 +880,10 @@ struct npc_darkfallen_blood_knight : public DarkFallenAI struct npc_darkfallen_noble : public DarkFallenAI { - npc_darkfallen_noble(Creature* creature) : DarkFallenAI(creature) { } + npc_darkfallen_noble(Creature* creature) : DarkFallenAI(creature) + { + me->SetCanMelee(false); // DoSpellAttackIfReady + } void ScheduleSpells() override { @@ -934,8 +933,6 @@ struct npc_vampiric_fiend : public ScriptedAI return; _scheduler.Update(diff); - - DoMeleeAttackIfReady(); } private: @@ -944,7 +941,10 @@ private: struct npc_darkfallen_archmage : public DarkFallenAI { - npc_darkfallen_archmage(Creature* creature) : DarkFallenAI(creature) { } + npc_darkfallen_archmage(Creature* creature) : DarkFallenAI(creature) + { + me->SetCanMelee(false); // DoSpellAttackIfReady + } void ScheduleSpells() override { @@ -1103,8 +1103,6 @@ struct npc_icc_nerubar_broodkeeper : public ScriptedAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/IsleOfConquest/boss_ioc_horde_alliance.cpp b/src/server/scripts/Northrend/IsleOfConquest/boss_ioc_horde_alliance.cpp index e3d89c1fc22..77f5e53207e 100644 --- a/src/server/scripts/Northrend/IsleOfConquest/boss_ioc_horde_alliance.cpp +++ b/src/server/scripts/Northrend/IsleOfConquest/boss_ioc_horde_alliance.cpp @@ -111,8 +111,6 @@ struct boss_ioc_horde_alliance : public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp b/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp index 7340eb5c698..8babac81a40 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp @@ -51,13 +51,14 @@ enum Events enum Spells { - SPELL_IMPALE = 28783, // 25-man: 56090 - SPELL_LOCUST_SWARM = 28785, // 25-man: 54021 SPELL_SUMMON_CORPSE_SCARABS_PLR = 29105, // This spawns 5 corpse scarabs on top of player SPELL_SUMMON_CORPSE_SCARABS_MOB = 28864, // This spawns 10 corpse scarabs on top of dead guards SPELL_BERSERK = 27680 }; +#define SPELL_IMPALE RAID_MODE(28783, 56090) +#define SPELL_LOCUST_SWARM RAID_MODE(28785, 54021) + enum SpawnGroups { GROUP_INITIAL_25M = 1, @@ -98,6 +99,7 @@ struct boss_anubrekhan : public BossAI { _Reset(); guardCorpses.clear(); + me->SetCanMelee(true); } void JustReachedHome() override @@ -203,6 +205,7 @@ struct boss_anubrekhan : public BossAI Talk(EMOTE_LOCUST); events.SetPhase(PHASE_SWARM); DoCast(me, SPELL_LOCUST_SWARM); + me->SetCanMelee(false); events.ScheduleEvent(EVENT_SPAWN_GUARD, 3s); events.ScheduleEvent(EVENT_LOCUST_ENDS, RAID_MODE(Seconds(19), Seconds(23))); @@ -210,6 +213,7 @@ struct boss_anubrekhan : public BossAI break; case EVENT_LOCUST_ENDS: events.SetPhase(PHASE_NORMAL); + me->SetCanMelee(true); events.ScheduleEvent(EVENT_IMPALE, randtime(Seconds(10), Seconds(20)), 0, PHASE_NORMAL); events.ScheduleEvent(EVENT_SCARABS, randtime(Seconds(20), Seconds(30)), 0, PHASE_NORMAL); break; @@ -222,9 +226,6 @@ struct boss_anubrekhan : public BossAI break; } } - - if (events.IsInPhase(PHASE_NORMAL)) - DoMeleeAttackIfReady(); } private: GuidSet guardCorpses; diff --git a/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp b/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp index aeb36c4fa10..a406d3e13aa 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp @@ -180,8 +180,6 @@ struct boss_faerlina : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: @@ -224,7 +222,6 @@ struct npc_faerlina_add : public ScriptedAI return; DoCastVictim(SPELL_ADD_FIREBALL); - DoMeleeAttackIfReady(); // this will only happen if the fireball cast fails for some reason } private: diff --git a/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp b/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp index 0f57dfbfae6..2905d24ea24 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp @@ -433,10 +433,6 @@ struct boss_four_horsemen_baron : public boss_four_horsemen_baseAI break; } } - - if (me->HasUnitState(UNIT_STATE_CASTING)) - return; - DoMeleeAttackIfReady(); } void SpellHitTarget(WorldObject* /*target*/, SpellInfo const* spellInfo) override @@ -498,10 +494,6 @@ struct boss_four_horsemen_thane : public boss_four_horsemen_baseAI break; } } - - if (me->HasUnitState(UNIT_STATE_CASTING)) - return; - DoMeleeAttackIfReady(); } void SpellHitTarget(WorldObject* /*target*/, SpellInfo const* spellInfo) override @@ -519,7 +511,11 @@ struct boss_four_horsemen_thane : public boss_four_horsemen_baseAI struct boss_four_horsemen_lady : public boss_four_horsemen_baseAI { - boss_four_horsemen_lady(Creature* creature) : boss_four_horsemen_baseAI(creature, LADY, ladyPath) { } + boss_four_horsemen_lady(Creature* creature) : boss_four_horsemen_baseAI(creature, LADY, ladyPath) + { + me->SetCanMelee(false); + } + void BeginFighting() override { events.ScheduleEvent(EVENT_BERSERK, 10min); @@ -578,7 +574,11 @@ struct boss_four_horsemen_lady : public boss_four_horsemen_baseAI struct boss_four_horsemen_sir : public boss_four_horsemen_baseAI { - boss_four_horsemen_sir(Creature* creature) : boss_four_horsemen_baseAI(creature, SIR, sirPath), _shouldSay(true) { } + boss_four_horsemen_sir(Creature* creature) : boss_four_horsemen_baseAI(creature, SIR, sirPath), _shouldSay(true) + { + me->SetCanMelee(false); + } + void BeginFighting() override { events.ScheduleEvent(EVENT_BERSERK, 10min); diff --git a/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp b/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp index f4653cb2972..a5fe4abab32 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_gluth.cpp @@ -254,8 +254,6 @@ struct boss_gluth : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } void MovementInform(uint32 /*type*/, uint32 id) override @@ -381,8 +379,6 @@ struct npc_zombie_chow : public ScriptedAI me->StopMoving(); } } - else if (state == STATE_ZOMBIE_NORMAL) - DoMeleeAttackIfReady(); } void SetData(uint32 id, uint32 value) override @@ -394,6 +390,7 @@ struct npc_zombie_chow : public ScriptedAI { me->SetReactState(ReactStates::REACT_PASSIVE); me->AttackStop(); + me->SetCanMelee(false); me->SetTarget(ObjectGuid::Empty); // at this point, the zombie should be non attacking and non moving. @@ -410,6 +407,7 @@ struct npc_zombie_chow : public ScriptedAI // and loose aggro behavior me->SetReactState(ReactStates::REACT_PASSIVE); me->AttackStop(); + me->SetCanMelee(false); me->SetTarget(ObjectGuid::Empty); me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_GRIP, true); // not sure if this is blizz-like but this is very convenient diff --git a/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp b/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp index 454d6ba4674..4aa91542934 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp @@ -637,7 +637,6 @@ struct npc_gothik_minion_livingtrainee : public npc_gothik_minion_baseAI DoCastAOE(SPELL_DEATH_PLAGUE); _deathPlagueTimer = urandms(5, 20); } - DoMeleeAttackIfReady(); } uint32 _deathPlagueTimer; }; @@ -655,7 +654,6 @@ struct npc_gothik_minion_livingknight : public npc_gothik_minion_baseAI DoCastAOE(SPELL_SHADOW_MARK); _whirlwindTimer = urandms(15, 20); } - DoMeleeAttackIfReady(); } uint32 _whirlwindTimer; }; @@ -685,8 +683,6 @@ struct npc_gothik_minion_livingrider : public npc_gothik_minion_baseAI DoCastAOE(SPELL_SHADOW_BOLT_VOLLEY); _boltVolleyTimer = urandms(10, 15); } - if (!me->HasUnitState(UNIT_STATE_CASTING)) - DoMeleeAttackIfReady(); npc_gothik_minion_baseAI::_UpdateAI(diff); } @@ -706,7 +702,6 @@ struct npc_gothik_minion_spectraltrainee : public npc_gothik_minion_baseAI DoCastAOE(SPELL_ARCANE_EXPLOSION); _explosionTimer = 2 * IN_MILLISECONDS; } - DoMeleeAttackIfReady(); } uint32 _explosionTimer; }; @@ -724,7 +719,6 @@ struct npc_gothik_minion_spectralknight : public npc_gothik_minion_baseAI DoCastAOE(SPELL_WHIRLWIND); _whirlwindTimer = urandms(20, 25); } - DoMeleeAttackIfReady(); } uint32 _whirlwindTimer; }; @@ -789,9 +783,6 @@ struct npc_gothik_minion_spectralrider : public npc_gothik_minion_baseAI _drainTimer = urandms(10,15); } - if (!me->HasUnitState(UNIT_STATE_CASTING)) - DoMeleeAttackIfReady(); - npc_gothik_minion_baseAI::_UpdateAI(diff); } uint32 _frenzyTimer, _drainTimer; @@ -810,7 +801,6 @@ struct npc_gothik_minion_spectralhorse : public npc_gothik_minion_baseAI DoCastAOE(SPELL_STOMP); _stompTimer = urandms(14, 18); } - DoMeleeAttackIfReady(); } uint32 _stompTimer; }; diff --git a/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp b/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp index ad815472a61..d40c0033d28 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_grobbulus.cpp @@ -121,8 +121,6 @@ struct boss_grobbulus : public BossAI break; } } - - DoMeleeAttackIfReady(); } }; @@ -176,8 +174,6 @@ struct npc_fallout_slime : public ScriptedAI if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp b/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp index 645acf28775..7d4d6a8dafe 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_heigan.cpp @@ -198,8 +198,6 @@ struct boss_heigan : public BossAI break; } } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp index 85572114efc..33207c6048d 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp @@ -508,8 +508,6 @@ struct boss_kelthuzad : public BossAI DoCastVictim(SPELL_FROSTBOLT_SINGLE); _frostboltCooldown = 3 * IN_MILLISECONDS; } - else - DoMeleeAttackIfReady(); } uint32 GetData(uint32 data) const override @@ -691,8 +689,6 @@ struct npc_kelthuzad_skeleton : public npc_kelthuzad_minionAI if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); } }; @@ -706,8 +702,6 @@ struct npc_kelthuzad_banshee : public npc_kelthuzad_minionAI if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); } }; @@ -729,8 +723,6 @@ struct npc_kelthuzad_abomination : public npc_kelthuzad_minionAI } else _woundTimer -= diff; - - DoMeleeAttackIfReady(); } void JustDied(Unit* killer) override @@ -817,8 +809,6 @@ struct npc_kelthuzad_guardian : public ScriptedAI } else _bloodTapTimer -= diff; - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/Naxxramas/boss_loatheb.cpp b/src/server/scripts/Northrend/Naxxramas/boss_loatheb.cpp index 7a83239a2c1..edb25e54339 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_loatheb.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_loatheb.cpp @@ -131,8 +131,6 @@ struct boss_loatheb : public BossAI break; } } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp b/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp index 2b22b31fff5..7a2b208929b 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp @@ -173,8 +173,6 @@ struct boss_maexxna : public BossAI break; } } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp index 98de9a42912..956a901e12f 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp @@ -310,8 +310,6 @@ struct boss_noth : public BossAI me->GetMotionMaster()->MoveChase(me->EnsureVictim()); justBlinked = false; } - else - DoMeleeAttackIfReady(); } } diff --git a/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp b/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp index 79c5b4cf561..2f0afd640d3 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp @@ -171,8 +171,6 @@ struct boss_patchwerk : public BossAI Talk(EMOTE_FRENZY); _enraged = true; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp b/src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp index 19bb9649717..af68b202029 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp @@ -150,8 +150,6 @@ struct boss_razuvious : public BossAI return; } } - - DoMeleeAttackIfReady(); } void Reset() override @@ -195,8 +193,6 @@ struct npc_dk_understudy : public ScriptedAI else DoCastVictim(SPELL_UNDERSTUDY_BLOOD_STRIKE); } - - DoMeleeAttackIfReady(); } void OnCharmed(bool isNew) override diff --git a/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp b/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp index 214b8a94918..5de5f9af313 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_sapphiron.cpp @@ -222,6 +222,7 @@ struct boss_sapphiron : public BossAI void EnterPhaseGround(bool initial) { + me->SetCanMelee(true); me->SetReactState(REACT_AGGRESSIVE); events.ScheduleEvent(EVENT_CLEAVE, randtime(Seconds(5), Seconds(15)), 0, PHASE_GROUND); events.ScheduleEvent(EVENT_TAIL, randtime(Seconds(7), Seconds(10)), 0, PHASE_GROUND); @@ -313,6 +314,7 @@ struct boss_sapphiron : public BossAI events.SetPhase(PHASE_FLIGHT); me->SetReactState(REACT_PASSIVE); me->AttackStop(); + me->SetCanMelee(false); float x, y, z, o; me->GetHomePosition(x, y, z, o); me->GetMotionMaster()->MovePoint(1, x, y, z); @@ -321,8 +323,6 @@ struct boss_sapphiron : public BossAI break; } } - - DoMeleeAttackIfReady(); } else { diff --git a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp index a4a20fb900c..0cb07689954 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp @@ -437,10 +437,7 @@ public: if (events.IsInPhase(PHASE_THADDIUS) && !me->HasUnitState(UNIT_STATE_CASTING) && me->isAttackReady()) { if (me->IsWithinMeleeRange(me->GetVictim())) - { ballLightningEnabled = false; - DoMeleeAttackIfReady(); - } else if (ballLightningUnlocked) if (Unit* target = SelectTarget(SelectTargetMethod::Random)) DoCast(target, SPELL_BALL_LIGHTNING); @@ -640,9 +637,6 @@ public: } else powerSurgeTimer -= uiDiff; - - if (!isFeignDeath) - DoMeleeAttackIfReady(); } private: @@ -882,8 +876,6 @@ public: staticFieldTimer = 6 * IN_MILLISECONDS; } else staticFieldTimer -= uiDiff; - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp index 4e0985c330b..37794e1ae26 100644 --- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp +++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp @@ -522,6 +522,7 @@ struct boss_malygos : public BossAI events.Reset(); events.SetPhase(phase); _phase = phase; + me->SetCanMelee(phase != PHASE_THREE); if (setEvents) SetPhaseEvents(); } @@ -963,9 +964,6 @@ struct boss_malygos : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING) && _phase != PHASE_NOT_STARTED) return; } - - if (_phase != PHASE_THREE) - DoMeleeAttackIfReady(); } void JustDied(Unit* /*killer*/) override @@ -1290,8 +1288,6 @@ struct npc_nexus_lord : public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } void JustDied(Unit* /*killer*/) override diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp index 1665f76be82..ce20fd86968 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp @@ -179,8 +179,6 @@ struct boss_anomalus : public ScriptedAI } else uiSparkTimer -= diff; - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp index e86c687b159..6711c9fdab9 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp @@ -195,8 +195,6 @@ struct boss_keristrasza : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp index 9715348d5b3..d7d0d482cf6 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp @@ -310,8 +310,6 @@ struct boss_magus_telestra : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp index 9cb218167d8..807a64a1af2 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp @@ -166,8 +166,6 @@ struct boss_ormorok : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp index 4e766d77811..9c2b2669158 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp @@ -131,8 +131,6 @@ struct boss_drakos : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp index 95eaa59cf8f..1d3edeac2ff 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp @@ -233,8 +233,6 @@ struct boss_eregos : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } void JustDied(Unit* /*killer*/) override diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp index 13b869a4d5e..1c3c8aba52e 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_urom.cpp @@ -273,8 +273,6 @@ struct boss_urom : public BossAI break; } } - - DoMeleeAttackIfReady(); } void JustDied(Unit* /*killer*/) override diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp index 2e6357a0794..f5800dfd2da 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp @@ -148,8 +148,6 @@ struct boss_varos : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } void JustDied(Unit* /*killer*/) override @@ -196,14 +194,6 @@ struct npc_azure_ring_captain : public ScriptedAI } } - void UpdateAI(uint32 /*diff*/) override - { - if (!UpdateVictim()) - return; - - DoMeleeAttackIfReady(); - } - void MovementInform(uint32 type, uint32 id) override { if (type != POINT_MOTION_TYPE || diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_general_bjarngrim.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_general_bjarngrim.cpp index 05211042a1f..5d84e2d8f88 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_general_bjarngrim.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_general_bjarngrim.cpp @@ -308,8 +308,6 @@ struct boss_general_bjarngrim : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: @@ -367,8 +365,6 @@ struct npc_bjarngrim_stormforged_lieutenant : public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } private: EventMap _events; diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp index 85f73a09536..9d12dfc627a 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp @@ -264,8 +264,6 @@ struct boss_ionar : public BossAI DoCast(me, SPELL_DISPERSE, false); } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp index 099bd3a86a3..3073080d109 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp @@ -167,8 +167,6 @@ struct boss_loken : public BossAI break; } } - - DoMeleeAttackIfReady(); } void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp index 53fcdb94f43..edc671e4ff5 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp @@ -283,8 +283,6 @@ struct boss_volkhan : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: @@ -366,8 +364,6 @@ struct npc_volkhan_molten_golem : public ScriptedAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp index 25b0dd77579..f73b3457789 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_krystallus.cpp @@ -114,8 +114,6 @@ struct boss_krystallus : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } void JustDied(Unit* /*killer*/) override diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp index d8bdf29bfc8..1bd410c272d 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp @@ -128,8 +128,6 @@ struct boss_maiden_of_grief : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp index 7d575f0d16a..f58c5c988c3 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp @@ -247,8 +247,6 @@ struct boss_sjonnir : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: @@ -385,10 +383,7 @@ struct npc_iron_sludge : public ScriptedAI if (!UpdateVictim()) return; - _scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + _scheduler.Update(diff); } private: diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp index 6641c7bd186..5615eed4932 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp @@ -672,8 +672,6 @@ struct npc_brann_hos : public EscortAI if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); } bool OnGossipSelect(Player* player, uint32 /*menuId*/, uint32 gossipListId) override diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp index f823561a2ea..94920a013ff 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp @@ -679,8 +679,6 @@ struct boss_algalon_the_observer : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING) && !events.IsInPhase(PHASE_ROLE_PLAY)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp index 0db4f8b942f..dd63139d377 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp @@ -269,8 +269,6 @@ class boss_steelbreaker : public CreatureScript if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; @@ -437,8 +435,6 @@ class boss_runemaster_molgeim : public CreatureScript if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; @@ -652,8 +648,6 @@ class boss_stormcaller_brundir : public CreatureScript if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp index e0e64ffbdbb..f3f6d252769 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp @@ -266,8 +266,6 @@ struct boss_auriaya : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: @@ -333,8 +331,6 @@ struct npc_sanctum_sentry : public ScriptedAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: @@ -436,8 +432,6 @@ struct npc_feral_defender : public ScriptedAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } void DamageTaken(Unit* /*done_by*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override @@ -495,8 +489,6 @@ struct npc_swarming_guardian : public ScriptedAI _scheduler.Update(diff); if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp index 61e0854c319..72f768cae53 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp @@ -226,6 +226,7 @@ class boss_flame_leviathan : public CreatureScript boss_flame_leviathanAI(Creature* creature) : BossAI(creature, DATA_FLAME_LEVIATHAN) { Initialize(); + me->SetCanMelee(false); // DoSpellAttackIfReady } void Initialize() @@ -947,14 +948,6 @@ class npc_colossus : public CreatureScript if (me->GetHomePosition().IsInDist(&Center, 50.f)) instance->SetData(DATA_COLOSSUS, instance->GetData(DATA_COLOSSUS)+1); } - - void UpdateAI(uint32 /*diff*/) override - { - if (!UpdateVictim()) - return; - - DoMeleeAttackIfReady(); - } }; CreatureAI* GetAI(Creature* creature) const override @@ -1189,8 +1182,6 @@ class npc_freya_ward_summon : public CreatureScript } else lashTimer -= diff; - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp index eb09f2085fc..496e57f9518 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp @@ -534,8 +534,6 @@ class boss_freya : public CreatureScript } } } - - DoMeleeAttackIfReady(); } // Check if all Trio NPCs are dead - achievement check @@ -807,8 +805,6 @@ class boss_elder_brightleaf : public CreatureScript if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } void DoAction(int32 action) override @@ -916,8 +912,6 @@ class boss_elder_stonebark : public CreatureScript if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } void DoAction(int32 action) override @@ -1010,8 +1004,6 @@ class boss_elder_ironbranch : public CreatureScript if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } void DoAction(int32 action) override @@ -1081,8 +1073,6 @@ class npc_detonating_lasher : public CreatureScript } else changeTargetTimer -= diff; - - DoMeleeAttackIfReady(); } private: @@ -1139,8 +1129,6 @@ class npc_ancient_water_spirit : public CreatureScript } else tidalWaveTimer -= diff; - - DoMeleeAttackIfReady(); } void JustDied(Unit* /*killer*/) override @@ -1213,8 +1201,6 @@ class npc_storm_lasher : public CreatureScript } else stormboltTimer -= diff; - - DoMeleeAttackIfReady(); } void JustDied(Unit* /*killer*/) override @@ -1262,8 +1248,6 @@ class npc_snaplasher : public CreatureScript if (!me->HasAura(SPELL_BARK_AURA)) DoCast(SPELL_HARDENED_BARK); - - DoMeleeAttackIfReady(); } void JustDied(Unit* /*killer*/) override @@ -1348,8 +1332,6 @@ class npc_ancient_conservator : public CreatureScript } else natureFuryTimer -= diff; - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp index 9b9d91c7574..c65f7113b7b 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_general_vezax.cpp @@ -216,8 +216,6 @@ class boss_general_vezax : public CreatureScript if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override @@ -364,8 +362,6 @@ class boss_saronite_animus : public CreatureScript if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp index 4d2b9895876..1f8ffc6da9f 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp @@ -507,8 +507,6 @@ class boss_hodir : public CreatureScript } else gettingColdInHereTimer -= diff; - - DoMeleeAttackIfReady(); } void DoAction(int32 action) override @@ -663,6 +661,7 @@ class npc_hodir_priest : public CreatureScript npc_hodir_priestAI(Creature* creature) : ScriptedAI(creature) { instance = me->GetInstanceScript(); + me->SetCanMelee(false); // DoSpellAttackIfReady } void Reset() override @@ -720,10 +719,10 @@ class npc_hodir_priest : public CreatureScript } void JustDied(Unit* /*killer*/) override - { + { if (Creature* hodir = instance->GetCreature(DATA_HODIR)) hodir->AI()->DoAction(ACTION_I_HAVE_THE_COOLEST_FRIENDS); - } + } private: InstanceScript* instance; @@ -746,6 +745,7 @@ class npc_hodir_shaman : public CreatureScript npc_hodir_shamanAI(Creature* creature) : ScriptedAI(creature) { instance = me->GetInstanceScript(); + me->SetCanMelee(false); // DoSpellAttackIfReady } void Reset() override @@ -811,6 +811,7 @@ class npc_hodir_druid : public CreatureScript npc_hodir_druidAI(Creature* creature) : ScriptedAI(creature) { instance = me->GetInstanceScript(); + me->SetCanMelee(false); // DoSpellAttackIfReady } void Reset() override @@ -875,6 +876,7 @@ class npc_hodir_mage : public CreatureScript npc_hodir_mageAI(Creature* creature) : ScriptedAI(creature), summons(me) { instance = me->GetInstanceScript(); + me->SetCanMelee(false); // DoSpellAttackIfReady } void Reset() override @@ -932,10 +934,10 @@ class npc_hodir_mage : public CreatureScript } void JustDied(Unit* /*killer*/) override - { + { if (Creature* hodir = instance->GetCreature(DATA_HODIR)) hodir->AI()->DoAction(ACTION_I_HAVE_THE_COOLEST_FRIENDS); - } + } private: InstanceScript* instance; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp index b005d402bb6..b1653004e02 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp @@ -283,8 +283,6 @@ class boss_ignis : public CreatureScript if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: @@ -358,8 +356,6 @@ class npc_iron_construct : public CreatureScript me->RemoveAura(SPELL_MOLTEN); _brittled = true; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp index 933bf45563c..db6bfa7b2fd 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp @@ -315,8 +315,6 @@ class boss_kologarn : public CreatureScript if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp index 06b0f21465d..294e3cf86b1 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp @@ -917,7 +917,6 @@ class boss_leviathan_mk_ii : public CreatureScript if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - DoMeleeAttackIfReady(); } private: @@ -1337,8 +1336,6 @@ class npc_mimiron_assault_bot : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp index 619eddadea5..5406bb8bb07 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp @@ -654,9 +654,6 @@ struct boss_razorscale : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - if (events.IsInPhase(PHASE_PERMA_GROUND)) - DoMeleeAttackIfReady(); } private: @@ -1300,8 +1297,6 @@ struct npc_darkrune_watcher : public ScriptedAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: @@ -1367,8 +1362,6 @@ struct npc_darkrune_guardian : public ScriptedAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: @@ -1434,8 +1427,6 @@ struct npc_darkrune_sentinel : public ScriptedAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp index 38145e95a6a..8ead673fc51 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp @@ -798,8 +798,6 @@ class boss_thorim : public CreatureScript if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } void DoAction(int32 action) override @@ -952,6 +950,8 @@ struct npc_thorim_trashAI : public ScriptedAI _info = &StaticThorimTrashInfo[i]; ASSERT(_info); + if (_info->Type == DARK_RUNE_ACOLYTE) + me->SetCanMelee(false); // DoSpellAttackIfReady } struct AIHelper @@ -1101,8 +1101,6 @@ struct npc_thorim_trashAI : public ScriptedAI if (_info->Type == DARK_RUNE_ACOLYTE) DoSpellAttackIfReady(SPELL_HOLY_SMITE); - else - DoMeleeAttackIfReady(); } virtual void ExecuteEvent(uint32 eventId) = 0; @@ -1470,8 +1468,6 @@ class npc_runic_colossus : public CreatureScript if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); } private: @@ -1555,8 +1551,6 @@ class npc_ancient_rune_giant : public CreatureScript if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp index 6fc929c95c4..fb38edf3c97 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp @@ -385,9 +385,6 @@ struct boss_xt002 : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - if (events.IsInPhase(PHASE_1)) - DoMeleeAttackIfReady(); } void WaypointReached(uint32 waypointId, uint32 pathId) override @@ -567,10 +564,7 @@ struct npc_pummeller : public ScriptedAI if (!UpdateVictim()) return; - _scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + _scheduler.Update(diff); } private: @@ -667,10 +661,7 @@ struct npc_life_spark : public ScriptedAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; - _scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + _scheduler.Update(diff); } private: diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp index c73d7132a92..fbe017d44ed 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp @@ -1218,8 +1218,6 @@ class npc_guardian_of_yogg_saron : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } void IsSummonedBy(WorldObject* summoner) override @@ -1392,8 +1390,6 @@ class npc_crusher_tentacle : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } private: @@ -1517,8 +1513,6 @@ class npc_immortal_guardian : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp index df36779cace..677248c5ae7 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp @@ -259,9 +259,6 @@ struct boss_ingvar_the_plunderer : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - if (!events.IsInPhase(PHASE_EVENT)) - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp index 871499ca53e..b58c1b74988 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_keleseth.cpp @@ -207,8 +207,6 @@ struct boss_keleseth : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } void SummonSkeletons() @@ -244,6 +242,7 @@ struct npc_vrykul_skeleton : public ScriptedAI { // from sniffs me->SetUninteractible(true); + me->SetCanMelee(false); me->SetStandState(UNIT_STAND_STATE_DEAD); events.Reset(); @@ -285,6 +284,7 @@ struct npc_vrykul_skeleton : public ScriptedAI DoCast(me, SPELL_SHADOW_FISSURE, true); DoCastAOE(SPELL_BONE_ARMOR, true); me->SetUninteractible(false); + me->SetCanMelee(true); me->SetStandState(UNIT_STAND_STATE_STAND); me->GetMotionMaster()->MoveChase(me->GetVictim()); events.ScheduleEvent(EVENT_DECREPIFY, 4s, 6s); @@ -296,9 +296,6 @@ struct npc_vrykul_skeleton : public ScriptedAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - if (!me->IsUninteractible()) - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp index 3e6103542a4..d0f969089e0 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp @@ -78,8 +78,6 @@ struct npc_dragonflayer_forge_master : public ScriptedAI if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); } private: @@ -249,8 +247,6 @@ struct npc_enslaved_proto_drake : public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp index 93562e43267..26280c7d9b2 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp @@ -306,8 +306,6 @@ struct boss_skadi : public BossAI { if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); } } @@ -498,10 +496,7 @@ struct npc_skadi_trashAI : public ScriptedAI { UpdateVictim(); - _scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + _scheduler.Update(diff); } virtual void ScheduleTasks() = 0; diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp index 00b32535e3e..fc22bd8f9bb 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp @@ -154,11 +154,15 @@ struct boss_svala : public BossAI _Reset(); if (_introCompleted) + { events.SetPhase(NORMAL); + me->SetCanMelee(true); + } else { events.SetPhase(IDLE); me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE); + me->SetCanMelee(false); } me->SetDisableGravity(false); @@ -190,6 +194,7 @@ struct boss_svala : public BossAI { events.SetPhase(INTRO); me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE); + me->SetCanMelee(false); if (GameObject* mirror = instance->GetGameObject(DATA_UTGARDE_MIRROR)) mirror->SetGoState(GO_STATE_READY); @@ -234,11 +239,9 @@ struct boss_svala : public BossAI _sacrificed = true; events.SetPhase(SACRIFICING); events.ScheduleEvent(EVENT_RITUAL_PREPARATION, 0s, 0, SACRIFICING); + me->SetCanMelee(false); } - if (events.IsInPhase(NORMAL)) - DoMeleeAttackIfReady(); - while (uint32 eventId = events.ExecuteEvent()) { switch (eventId) @@ -329,6 +332,7 @@ struct boss_svala : public BossAI arthas->DespawnOrUnsummon(); _arthasGUID.Clear(); events.SetPhase(NORMAL); + me->SetCanMelee(true); _introCompleted = true; if (Unit* target = me->SelectNearestPlayer(100.0f)) AttackStart(target); @@ -373,6 +377,7 @@ struct boss_svala : public BossAI case EVENT_FINISH_RITUAL: me->SetDisableGravity(false); me->SetReactState(REACT_AGGRESSIVE); + me->SetCanMelee(true); events.SetPhase(NORMAL); events.ScheduleEvent(EVENT_SINISTER_STRIKE, 7s, 0, NORMAL); events.ScheduleEvent(EVENT_CALL_FLAMES, 10s, 20s, 0, NORMAL); @@ -534,8 +539,6 @@ struct npc_scourge_hulk : public ScriptedAI } else volatileInfection -= diff; - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp index 8373f5faefa..5fbb08c2901 100644 --- a/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp +++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_archavon.cpp @@ -109,8 +109,6 @@ struct boss_archavon : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp index 1eef9198b57..f328d8e1696 100644 --- a/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp +++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp @@ -153,8 +153,6 @@ struct boss_emalon : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; @@ -239,8 +237,6 @@ struct npc_tempest_minion : public ScriptedAI DoCastVictim(SPELL_SHOCK); _events.ScheduleEvent(EVENT_SHOCK, 20s); } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp index 851700b1b39..91d7d824184 100644 --- a/src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp +++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp @@ -94,8 +94,6 @@ struct boss_koralon : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp index 4c14f24e3e1..b090bce918a 100644 --- a/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp +++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp @@ -96,8 +96,6 @@ struct boss_toravon : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp b/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp index 1ae2ca29064..58b119ffbad 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp @@ -72,10 +72,7 @@ struct boss_cyanigosa : public BossAI if (!UpdateVictim()) return; - scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + scheduler.Update(diff); } void ScheduleTasks() override diff --git a/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp b/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp index 59a18ef1f67..8bc988e8560 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp @@ -172,8 +172,6 @@ struct boss_erekem : public BossAI { if (_phase == 1) DoSpellAttackIfReady(SPELL_STORMSTRIKE); - else - DoMeleeAttackIfReady(); }); } @@ -265,10 +263,7 @@ struct npc_erekem_guard : public ScriptedAI if (!UpdateVictim()) return; - scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + scheduler.Update(diff); } void ScheduledTasks() diff --git a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp index faa9c08fbc3..4b86e483a03 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp @@ -193,10 +193,7 @@ struct boss_ichoron : public BossAI _isFrenzy = true; } - scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + scheduler.Update(diff); } void ScheduleTasks() override diff --git a/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp b/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp index aa3c2a49329..8e2af4c38db 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp @@ -53,10 +53,7 @@ struct boss_lavanthor : public BossAI if (!UpdateVictim()) return; - scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + scheduler.Update(diff); } void ScheduleTasks() override diff --git a/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp b/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp index 974360cda3a..016b7a8e570 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp @@ -61,10 +61,7 @@ struct boss_moragg : public BossAI if (!UpdateVictim()) return; - scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + scheduler.Update(diff); } void ScheduleTasks() override diff --git a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp index 727f5a33072..b5c8bf15927 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp @@ -128,10 +128,7 @@ struct boss_xevozz : public BossAI if (!UpdateVictim()) return; - scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + scheduler.Update(diff); } void ScheduleTasks() override diff --git a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp index cd5f79f0861..c98b520d5b6 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp @@ -116,10 +116,7 @@ struct boss_zuramat : public BossAI if (!UpdateVictim()) return; - scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + scheduler.Update(diff); } void ScheduleTasks() override diff --git a/src/server/scripts/Northrend/VioletHold/violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/violet_hold.cpp index 16553c78709..91b087f1ef6 100644 --- a/src/server/scripts/Northrend/VioletHold/violet_hold.cpp +++ b/src/server/scripts/Northrend/VioletHold/violet_hold.cpp @@ -432,8 +432,6 @@ struct npc_sinclari_vh : public ScriptedAI if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); } void ScheduleIntro() @@ -920,10 +918,7 @@ struct violet_hold_trashAI : public EscortAI if (!UpdateVictim()) return; - _scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + _scheduler.Update(diff); } virtual void ScheduledTasks() { } diff --git a/src/server/scripts/Northrend/zone_borean_tundra.cpp b/src/server/scripts/Northrend/zone_borean_tundra.cpp index ef6846d7882..1bdff8f8adf 100644 --- a/src/server/scripts/Northrend/zone_borean_tundra.cpp +++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp @@ -114,8 +114,6 @@ struct npc_beryl_sorcerer : public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } private: EventMap _events; @@ -638,8 +636,6 @@ struct npc_hidden_cultist : public ScriptedAI if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); } bool OnGossipHello(Player* player) override @@ -1083,8 +1079,6 @@ struct npc_thassarian : public ScriptedAI if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); } void JustDied(Unit* /*killer*/) override @@ -1227,7 +1221,6 @@ struct npc_counselor_talbot : public ScriptedAI } } } - DoMeleeAttackIfReady(); } void JustDied(Unit* /*killer*/) override @@ -1312,10 +1305,7 @@ struct npc_bloodmage_laurith : public ScriptedAI void UpdateAI(uint32 diff) override { if (UpdateVictim()) - { - DoMeleeAttackIfReady(); return; - } _events.Update(diff); diff --git a/src/server/scripts/Northrend/zone_dragonblight.cpp b/src/server/scripts/Northrend/zone_dragonblight.cpp index d66b74dfb1e..fd99ee345f2 100644 --- a/src/server/scripts/Northrend/zone_dragonblight.cpp +++ b/src/server/scripts/Northrend/zone_dragonblight.cpp @@ -341,7 +341,6 @@ struct npc_commander_eligor_dawnbringer : public ScriptedAI break; } } - DoMeleeAttackIfReady(); } private: EventMap _events; diff --git a/src/server/scripts/Northrend/zone_grizzly_hills.cpp b/src/server/scripts/Northrend/zone_grizzly_hills.cpp index 2b22cf699c3..74f88fb2e12 100644 --- a/src/server/scripts/Northrend/zone_grizzly_hills.cpp +++ b/src/server/scripts/Northrend/zone_grizzly_hills.cpp @@ -342,7 +342,6 @@ struct npc_tallhorn_stag : public ScriptedAI } if (!UpdateVictim()) return; - DoMeleeAttackIfReady(); } private: uint8 _phase; @@ -459,14 +458,6 @@ struct npc_wounded_skirmisher : public ScriptedAI } } } - - void UpdateAI(uint32 /*diff*/) override - { - if (!UpdateVictim()) - return; - - DoMeleeAttackIfReady(); - } private: Milliseconds _despawnTimer; }; @@ -550,7 +541,6 @@ struct npc_venture_co_straggler : public ScriptedAI if (!UpdateVictim()) return; - DoMeleeAttackIfReady(); } void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override diff --git a/src/server/scripts/Northrend/zone_howling_fjord.cpp b/src/server/scripts/Northrend/zone_howling_fjord.cpp index 89ebec5526c..2bfb9902ba3 100644 --- a/src/server/scripts/Northrend/zone_howling_fjord.cpp +++ b/src/server/scripts/Northrend/zone_howling_fjord.cpp @@ -100,8 +100,6 @@ struct npc_daegarn : public ScriptedAI if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); } void JustSummoned(Creature* summon) override diff --git a/src/server/scripts/Northrend/zone_icecrown.cpp b/src/server/scripts/Northrend/zone_icecrown.cpp index e59c7dd5ed8..a043f399dda 100644 --- a/src/server/scripts/Northrend/zone_icecrown.cpp +++ b/src/server/scripts/Northrend/zone_icecrown.cpp @@ -98,8 +98,6 @@ struct npc_argent_valiant : public ScriptedAI DoCastVictim(SPELL_SHIELD_BREAKER); uiShieldBreakerTimer = 10000; } else uiShieldBreakerTimer -= uiDiff; - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Northrend/zone_storm_peaks.cpp b/src/server/scripts/Northrend/zone_storm_peaks.cpp index f271d5161cf..f8f8238e1ab 100644 --- a/src/server/scripts/Northrend/zone_storm_peaks.cpp +++ b/src/server/scripts/Northrend/zone_storm_peaks.cpp @@ -526,6 +526,7 @@ struct npc_wild_wyrm : public VehicleAI InitSpellsForPhase(); me->SetImmuneToPC(false); + me->SetCanMelee(true); } void DoAction(int32 action) override @@ -565,6 +566,7 @@ struct npc_wild_wyrm : public VehicleAI _playerGuid = caster->GetGUID(); DoCastAOE(SPELL_FULL_HEAL_MANA, true); me->SetImmuneToPC(true); + me->SetCanMelee(false); me->GetMotionMaster()->MovePoint(POINT_START_FIGHT, *caster); } @@ -697,8 +699,7 @@ struct npc_wild_wyrm : public VehicleAI { if (!_playerGuid) { - if (UpdateVictim()) - DoMeleeAttackIfReady(); + UpdateVictim(); return; } diff --git a/src/server/scripts/Northrend/zone_wintergrasp.cpp b/src/server/scripts/Northrend/zone_wintergrasp.cpp index 5bcdcd4c8c1..1a8cb65d783 100644 --- a/src/server/scripts/Northrend/zone_wintergrasp.cpp +++ b/src/server/scripts/Northrend/zone_wintergrasp.cpp @@ -254,8 +254,6 @@ struct npc_wg_queue : public ScriptedAI FrostArmor_Timer = 180000; } else FrostArmor_Timer -= diff; - - DoMeleeAttackIfReady(); } bool OnGossipHello(Player* player) override |