diff options
author | Shauren <shauren.trinity@gmail.com> | 2024-01-08 22:23:12 +0100 |
---|---|---|
committer | funjoker <funjoker109@gmail.com> | 2024-01-09 20:56:54 +0100 |
commit | d835d0fad04ba334560b7f4e0fb4b9138e1bca7f (patch) | |
tree | 1c2051acddd41ed6f1e18942bb6412c0757c58dc /src | |
parent | 4fe41bba8e7ffaa514856c51218df26784ecb0f6 (diff) |
Core/Creatures: Moved autoattack handling from scripts to game
(cherry picked from commit 605e5f94c0d71cad8e83fa5a07eaec4e6bed9cc3)
Diffstat (limited to 'src')
415 files changed, 300 insertions, 1768 deletions
diff --git a/src/server/game/AI/CoreAI/CombatAI.cpp b/src/server/game/AI/CoreAI/CombatAI.cpp index 16c161dbd7a..b20cf471b0c 100644 --- a/src/server/game/AI/CoreAI/CombatAI.cpp +++ b/src/server/game/AI/CoreAI/CombatAI.cpp @@ -43,10 +43,7 @@ int32 AggressorAI::Permissible(Creature const* creature) void AggressorAI::UpdateAI(uint32 /*diff*/) { - if (!UpdateVictim()) - return; - - DoMeleeAttackIfReady(); + UpdateVictim(); } ///////////////// @@ -107,8 +104,6 @@ void CombatAI::UpdateAI(uint32 diff) if (AISpellInfoType const* info = GetAISpellInfo(spellId, me->GetMap()->GetDifficultyID())) _events.ScheduleEvent(spellId, info->cooldown, info->cooldown * 2); } - else - DoMeleeAttackIfReady(); } void CombatAI::SpellInterrupted(uint32 spellId, uint32 unTimeMs) @@ -202,6 +197,7 @@ TurretAI::TurretAI(Creature* creature, uint32 scriptId) : CreatureAI(creature, s _minimumRange = spellInfo ? spellInfo->GetMinRange(false) : 0; creature->m_CombatDistance = spellInfo ? spellInfo->GetMaxRange(false) : 0; creature->m_SightDistance = creature->m_CombatDistance; + creature->SetCanMelee(false); } bool TurretAI::CanAIAttack(Unit const* who) const @@ -235,6 +231,7 @@ VehicleAI::VehicleAI(Creature* creature, uint32 scriptId) : CreatureAI(creature, LoadConditions(); _dismiss = false; _dismissTimer = VEHICLE_DISMISS_TIME; + me->SetCanMelee(false); } // NOTE: VehicleAI::UpdateAI runs even while the vehicle is mounted diff --git a/src/server/game/AI/CoreAI/GuardAI.cpp b/src/server/game/AI/CoreAI/GuardAI.cpp index 5d6b62e83a9..21511c1f2c0 100644 --- a/src/server/game/AI/CoreAI/GuardAI.cpp +++ b/src/server/game/AI/CoreAI/GuardAI.cpp @@ -31,10 +31,7 @@ int32 GuardAI::Permissible(Creature const* creature) void GuardAI::UpdateAI(uint32 /*diff*/) { - if (!UpdateVictim()) - return; - - DoMeleeAttackIfReady(); + UpdateVictim(); } bool GuardAI::CanSeeAlways(WorldObject const* obj) diff --git a/src/server/game/AI/CoreAI/PassiveAI.cpp b/src/server/game/AI/CoreAI/PassiveAI.cpp index 8bae96a6092..82904e5f52f 100644 --- a/src/server/game/AI/CoreAI/PassiveAI.cpp +++ b/src/server/game/AI/CoreAI/PassiveAI.cpp @@ -22,6 +22,7 @@ PassiveAI::PassiveAI(Creature* c, uint32 scriptId) : CreatureAI(c, scriptId) { me->SetReactState(REACT_PASSIVE); + me->SetCanMelee(false); } PossessedAI::PossessedAI(Creature* c, uint32 scriptId) : CreatureAI(c, scriptId) @@ -32,6 +33,7 @@ PossessedAI::PossessedAI(Creature* c, uint32 scriptId) : CreatureAI(c, scriptId) NullCreatureAI::NullCreatureAI(Creature* c, uint32 scriptId) : CreatureAI(c, scriptId) { me->SetReactState(REACT_PASSIVE); + me->SetCanMelee(false); } int32 NullCreatureAI::Permissible(Creature const* creature) @@ -62,8 +64,6 @@ void PossessedAI::UpdateAI(uint32 /*diff*/) { if (!me->IsValidAttackTarget(me->GetVictim())) me->AttackStop(); - else - DoMeleeAttackIfReady(); } } diff --git a/src/server/game/AI/CoreAI/PetAI.cpp b/src/server/game/AI/CoreAI/PetAI.cpp index 42666d2a1e2..16e9356f646 100644 --- a/src/server/game/AI/CoreAI/PetAI.cpp +++ b/src/server/game/AI/CoreAI/PetAI.cpp @@ -80,15 +80,6 @@ void PetAI::UpdateAI(uint32 diff) StopAttack(); return; } - - // Check before attacking to prevent pets from leaving stay position - if (me->GetCharmInfo()->HasCommandState(COMMAND_STAY)) - { - if (me->GetCharmInfo()->IsCommandAttack() || (me->GetCharmInfo()->IsAtStay() && me->IsWithinMeleeRange(me->GetVictim()))) - DoMeleeAttackIfReady(); - } - else - DoMeleeAttackIfReady(); } else { diff --git a/src/server/game/AI/CoreAI/ReactorAI.cpp b/src/server/game/AI/CoreAI/ReactorAI.cpp index 8b15bed1908..a22876a067b 100644 --- a/src/server/game/AI/CoreAI/ReactorAI.cpp +++ b/src/server/game/AI/CoreAI/ReactorAI.cpp @@ -28,8 +28,5 @@ int32 ReactorAI::Permissible(Creature const* creature) void ReactorAI::UpdateAI(uint32 /*diff*/) { - if (!UpdateVictim()) - return; - - DoMeleeAttackIfReady(); + UpdateVictim(); } diff --git a/src/server/game/AI/CoreAI/UnitAI.cpp b/src/server/game/AI/CoreAI/UnitAI.cpp index c8d2f61e77b..1470ca07bd9 100644 --- a/src/server/game/AI/CoreAI/UnitAI.cpp +++ b/src/server/game/AI/CoreAI/UnitAI.cpp @@ -58,41 +58,6 @@ void UnitAI::AttackStartCaster(Unit* victim, float dist) me->GetMotionMaster()->MoveChase(victim, dist); } -void UnitAI::DoMeleeAttackIfReady() -{ - if (me->IsCreature() && !me->ToCreature()->CanMelee()) - return; - - if (me->HasUnitState(UNIT_STATE_CASTING)) - { - Spell* channeledSpell = me->GetCurrentSpell(CURRENT_CHANNELED_SPELL); - if (!channeledSpell || !channeledSpell->GetSpellInfo()->HasAttribute(SPELL_ATTR5_ALLOW_ACTIONS_DURING_CHANNEL)) - return; - } - - Unit* victim = me->GetVictim(); - - if (!me->IsWithinMeleeRange(victim)) - return; - - // Check that the victim is in front of the unit - if (!me->HasInArc(2 * float(M_PI) / 3, victim)) - return; - - //Make sure our attack is ready and we aren't currently casting before checking distance - if (me->isAttackReady()) - { - me->AttackerStateUpdate(victim); - me->resetAttackTimer(); - } - - if (me->haveOffhandWeapon() && me->isAttackReady(OFF_ATTACK)) - { - me->AttackerStateUpdate(victim, OFF_ATTACK); - me->resetAttackTimer(OFF_ATTACK); - } -} - bool UnitAI::DoSpellAttackIfReady(uint32 spellId) { if (me->HasUnitState(UNIT_STATE_CASTING) || !me->isAttackReady()) diff --git a/src/server/game/AI/CoreAI/UnitAI.h b/src/server/game/AI/CoreAI/UnitAI.h index fed0cae7203..1ae52ff00a7 100644 --- a/src/server/game/AI/CoreAI/UnitAI.h +++ b/src/server/game/AI/CoreAI/UnitAI.h @@ -160,7 +160,6 @@ class TC_GAME_API UnitAI SpellCastResult DoCastVictim(uint32 spellId, CastSpellExtraArgs const& args = {}); SpellCastResult DoCastAOE(uint32 spellId, CastSpellExtraArgs const& args = {}) { return DoCast(nullptr, spellId, args); } - void DoMeleeAttackIfReady(); bool DoSpellAttackIfReady(uint32 spellId); static std::unordered_map<std::pair<uint32, Difficulty>, AISpellInfoType> AISpellInfo; diff --git a/src/server/game/AI/PlayerAI/PlayerAI.cpp b/src/server/game/AI/PlayerAI/PlayerAI.cpp index 2f104c40eac..bfa4ea84f96 100644 --- a/src/server/game/AI/PlayerAI/PlayerAI.cpp +++ b/src/server/game/AI/PlayerAI/PlayerAI.cpp @@ -591,8 +591,6 @@ void PlayerAI::DoAutoAttackIfReady() { if (IsRangedAttacker()) DoRangedAttackIfReady(); - else - DoMeleeAttackIfReady(); } void PlayerAI::CancelAllShapeshifts() diff --git a/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp b/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp index 1210a10a2c2..1228b072575 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp +++ b/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp @@ -149,10 +149,7 @@ void ScriptedAI::AttackStart(Unit* who) void ScriptedAI::UpdateAI(uint32 /*diff*/) { // Check if we have a current target - if (!UpdateVictim()) - return; - - DoMeleeAttackIfReady(); + UpdateVictim(); } void ScriptedAI::DoStartMovement(Unit* victim, float distance, float angle) @@ -629,8 +626,6 @@ void BossAI::UpdateAI(uint32 diff) if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } bool BossAI::CanAIAttack(Unit const* target) const @@ -716,6 +711,4 @@ void WorldBossAI::UpdateAI(uint32 diff) if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } diff --git a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp index ca6290d1379..19d11c4b957 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp +++ b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp @@ -248,10 +248,7 @@ void EscortAI::UpdateAI(uint32 diff) void EscortAI::UpdateEscortAI(uint32 /*diff*/) { - if (!UpdateVictim()) - return; - - DoMeleeAttackIfReady(); + UpdateVictim(); } void EscortAI::AddWaypoint(uint32 id, float x, float y, float z, bool run) diff --git a/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp b/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp index f12b7aaf9b6..c0a5aa3350a 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp +++ b/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp @@ -147,10 +147,7 @@ void FollowerAI::UpdateAI(uint32 uiDiff) void FollowerAI::UpdateFollowerAI(uint32 /*uiDiff*/) { - if (!UpdateVictim()) - return; - - DoMeleeAttackIfReady(); + UpdateVictim(); } void FollowerAI::StartFollow(Player* player, uint32 factionForFollower, uint32 quest) diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp index 370e2d1a9f8..9177443d57f 100644 --- a/src/server/game/AI/SmartScripts/SmartAI.cpp +++ b/src/server/game/AI/SmartScripts/SmartAI.cpp @@ -283,21 +283,13 @@ void SmartAI::UpdateAI(uint32 diff) CheckConditions(diff); - bool hasVictim = UpdateVictim(); + UpdateVictim(); GetScript()->OnUpdate(diff); UpdatePath(diff); UpdateFollow(diff); UpdateDespawn(diff); - - if (!IsAIControlled()) - return; - - if (!hasVictim) - return; - - DoMeleeAttackIfReady(); } bool SmartAI::IsEscortInvokerInRange() diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index b662a7826d2..3f287ea5d51 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -843,6 +843,8 @@ void Creature::Update(uint32 diff) Unit::AIUpdateTick(diff); + DoMeleeAttackIfReady(); + // creature can be dead after UpdateAI call // CORPSE/DEAD state will processed at next tick (in other case death timer will be updated unexpectedly) if (!IsAlive()) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 5641d4cfbea..aabde61d03d 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -232,8 +232,6 @@ Player::Player(WorldSession* session) : Unit(true), m_sceneMgr(this) m_deathTimer = 0; m_deathExpireTime = 0; - m_swingErrorMsg = 0; - for (uint8 j = 0; j < PLAYER_MAX_BATTLEGROUND_QUEUES; ++j) { m_bgBattlegroundQueueID[j].bgQueueTypeId = BATTLEGROUND_QUEUE_NONE; @@ -1003,78 +1001,7 @@ void Player::Update(uint32 p_time) m_achievementMgr->UpdateTimedCriteria(Milliseconds(p_time)); - if (HasUnitState(UNIT_STATE_MELEE_ATTACKING) && !HasUnitState(UNIT_STATE_CASTING | UNIT_STATE_CHARGING)) - { - if (Unit* victim = GetVictim()) - { - // default combat reach 10 - /// @todo add weapon, skill check - - if (isAttackReady(BASE_ATTACK)) - { - if (!IsWithinMeleeRange(victim)) - { - setAttackTimer(BASE_ATTACK, 100); - if (m_swingErrorMsg != 1) // send single time (client auto repeat) - { - SendAttackSwingNotInRange(); - m_swingErrorMsg = 1; - } - } - //120 degrees of radiant range, if player is not in boundary radius - else if (!IsWithinBoundaryRadius(victim) && !HasInArc(2 * float(M_PI) / 3, victim)) - { - setAttackTimer(BASE_ATTACK, 100); - if (m_swingErrorMsg != 2) // send single time (client auto repeat) - { - SendAttackSwingBadFacingAttack(); - m_swingErrorMsg = 2; - } - } - else - { - m_swingErrorMsg = 0; // reset swing error state - - // prevent base and off attack in same time, delay attack at 0.2 sec - if (haveOffhandWeapon()) - if (getAttackTimer(OFF_ATTACK) < ATTACK_DISPLAY_DELAY) - setAttackTimer(OFF_ATTACK, ATTACK_DISPLAY_DELAY); - - // do attack - AttackerStateUpdate(victim, BASE_ATTACK); - resetAttackTimer(BASE_ATTACK); - } - } - - if (!IsInFeralForm() && haveOffhandWeapon() && isAttackReady(OFF_ATTACK)) - { - if (!IsWithinMeleeRange(victim)) - setAttackTimer(OFF_ATTACK, 100); - else if (!IsWithinBoundaryRadius(victim) && !HasInArc(2 * float(M_PI) / 3, victim)) - { - setAttackTimer(BASE_ATTACK, 100); - } - else - { - // prevent base and off attack in same time, delay attack at 0.2 sec - if (getAttackTimer(BASE_ATTACK) < ATTACK_DISPLAY_DELAY) - setAttackTimer(BASE_ATTACK, ATTACK_DISPLAY_DELAY); - - // do attack - AttackerStateUpdate(victim, OFF_ATTACK); - resetAttackTimer(OFF_ATTACK); - } - } - - /*Unit* owner = victim->GetOwner(); - Unit* u = owner ? owner : victim; - if (u->IsPvP() && (!duel || duel->opponent != u)) - { - UpdatePvP(true); - RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags::PvPActive); - }*/ - } - } + DoMeleeAttackIfReady(); if (HasPlayerFlag(PLAYER_FLAGS_RESTING)) _restMgr->Update(now); @@ -20647,29 +20574,17 @@ void Player::SavePositionInDB(WorldLocation const& loc, uint16 zoneId, ObjectGui CharacterDatabase.ExecuteOrAppend(trans, stmt); } -void Player::SendAttackSwingCantAttack() const -{ - SendDirectMessage(WorldPackets::Combat::AttackSwingError(WorldPackets::Combat::AttackSwingError::CantAttack).Write()); -} - void Player::SendAttackSwingCancelAttack() const { SendDirectMessage(WorldPackets::Combat::CancelCombat().Write()); } -void Player::SendAttackSwingDeadTarget() const +void Player::SetAttackSwingError(Optional<AttackSwingErr> err) { - SendDirectMessage(WorldPackets::Combat::AttackSwingError(WorldPackets::Combat::AttackSwingError::DeadTarget).Write()); -} + if (err && err != m_swingErrorMsg) + SendDirectMessage(WorldPackets::Combat::AttackSwingError(*err).Write()); -void Player::SendAttackSwingNotInRange() const -{ - SendDirectMessage(WorldPackets::Combat::AttackSwingError(WorldPackets::Combat::AttackSwingError::NotInRange).Write()); -} - -void Player::SendAttackSwingBadFacingAttack() const -{ - SendDirectMessage(WorldPackets::Combat::AttackSwingError(WorldPackets::Combat::AttackSwingError::BadFacing).Write()); + m_swingErrorMsg = err; } void Player::SendAutoRepeatCancel(Unit* target) diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index f09b8d5c2c0..e4ba882e149 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2079,11 +2079,8 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> void DestroyForPlayer(Player* target) const override; // notifiers - void SendAttackSwingCantAttack() const; void SendAttackSwingCancelAttack() const; - void SendAttackSwingDeadTarget() const; - void SendAttackSwingNotInRange() const; - void SendAttackSwingBadFacingAttack() const; + void SetAttackSwingError(Optional<AttackSwingErr> err); void SendAutoRepeatCancel(Unit* target); void SendExplorationExperience(uint32 Area, uint32 Experience) const; @@ -3022,7 +3019,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> bool m_canBlock; bool m_canTitanGrip; uint32 m_titanGripPenaltySpellId; - uint8 m_swingErrorMsg; + Optional<AttackSwingErr> m_swingErrorMsg; // Social PlayerSocial* m_social; diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 4906939df39..db256630584 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -407,8 +407,8 @@ Unit::~Unit() ASSERT(m_appliedAuras.empty()); ASSERT(m_ownedAuras.empty()); ASSERT(m_removedAuras.empty()); - ASSERT(m_gameObj.empty()); ASSERT(m_dynObj.empty()); + ASSERT(m_gameObj.empty()); ASSERT(m_areaTrigger.empty()); ASSERT(!m_unitMovedByMe || (m_unitMovedByMe == this)); ASSERT(!m_playerMovingMe || (m_playerMovingMe == this)); @@ -456,10 +456,10 @@ void Unit::Update(uint32 p_time) { if (uint32 base_att = getAttackTimer(BASE_ATTACK)) setAttackTimer(BASE_ATTACK, (p_time >= base_att ? 0 : base_att - p_time)); - if (uint32 ranged_att = getAttackTimer(RANGED_ATTACK)) - setAttackTimer(RANGED_ATTACK, (p_time >= ranged_att ? 0 : ranged_att - p_time)); if (uint32 off_att = getAttackTimer(OFF_ATTACK)) setAttackTimer(OFF_ATTACK, (p_time >= off_att ? 0 : off_att - p_time)); + if (uint32 ranged_att = getAttackTimer(RANGED_ATTACK)) + setAttackTimer(RANGED_ATTACK, (p_time >= ranged_att ? 0 : ranged_att - p_time)); } // update abilities available only for fraction of time @@ -2081,12 +2081,15 @@ void Unit::HandleEmoteCommand(Emote emoteId, Player* target /*=nullptr*/, Trinit } } -void Unit::AttackerStateUpdate(Unit* victim, WeaponAttackType attType, bool extra) +void Unit::DoMeleeAttackIfReady() { - if (HasUnitFlag(UNIT_FLAG_PACIFIED)) + if (!HasUnitState(UNIT_STATE_MELEE_ATTACKING)) return; - if (HasUnitState(UNIT_STATE_CANNOT_AUTOATTACK) && !extra) + if (HasUnitState(UNIT_STATE_CHARGING)) + return; + + if (IsCreature() && !ToCreature()->CanMelee()) return; if (HasUnitState(UNIT_STATE_CASTING)) @@ -2096,6 +2099,69 @@ void Unit::AttackerStateUpdate(Unit* victim, WeaponAttackType attType, bool extr return; } + Unit* victim = GetVictim(); + if (!victim) + return; + + auto getAutoAttackError = [&]() -> Optional<AttackSwingErr> + { + if (!IsWithinMeleeRange(victim)) + return AttackSwingErr::NotInRange; + + //120 degrees of radiant range, if player is not in boundary radius + if (!IsWithinBoundaryRadius(victim) && !HasInArc(2 * float(M_PI) / 3, victim)) + return AttackSwingErr::BadFacing; + + return {}; + }; + + if (isAttackReady(BASE_ATTACK)) + { + Optional<AttackSwingErr> autoAttackError = getAutoAttackError(); + if (!autoAttackError) + { + // prevent base and off attack in same time, delay attack at 0.2 sec + if (haveOffhandWeapon()) + if (getAttackTimer(OFF_ATTACK) < ATTACK_DISPLAY_DELAY) + setAttackTimer(OFF_ATTACK, ATTACK_DISPLAY_DELAY); + + // do attack + AttackerStateUpdate(victim, BASE_ATTACK); + resetAttackTimer(BASE_ATTACK); + } + else + setAttackTimer(BASE_ATTACK, 100); + + if (Player* attackerPlayer = ToPlayer()) + attackerPlayer->SetAttackSwingError(autoAttackError); + } + + if (!IsInFeralForm() && haveOffhandWeapon() && isAttackReady(OFF_ATTACK)) + { + Optional<AttackSwingErr> autoAttackError = getAutoAttackError(); + if (!autoAttackError) + { + // prevent base and off attack in same time, delay attack at 0.2 sec + if (getAttackTimer(BASE_ATTACK) < ATTACK_DISPLAY_DELAY) + setAttackTimer(BASE_ATTACK, ATTACK_DISPLAY_DELAY); + + // do attack + AttackerStateUpdate(victim, OFF_ATTACK); + resetAttackTimer(OFF_ATTACK); + } + else + setAttackTimer(OFF_ATTACK, 100); + } +} + +void Unit::AttackerStateUpdate(Unit* victim, WeaponAttackType attType, bool extra) +{ + if (HasUnitFlag(UNIT_FLAG_PACIFIED)) + return; + + if (HasUnitState(UNIT_STATE_CANNOT_AUTOATTACK) && !extra) + return; + if (HasAuraType(SPELL_AURA_DISABLE_ATTACKING_EXCEPT_ABILITIES)) return; @@ -5064,7 +5130,7 @@ void Unit::_RegisterDynObject(DynamicObject* dynObj) void Unit::_UnregisterDynObject(DynamicObject* dynObj) { - m_dynObj.remove(dynObj); + std::erase(m_dynObj, dynObj); if (GetTypeId() == TYPEID_UNIT && IsAIEnabled()) ToCreature()->AI()->JustUnregisteredDynObject(dynObj); } @@ -5087,8 +5153,6 @@ std::vector<DynamicObject*> Unit::GetDynObjects(uint32 spellId) const void Unit::RemoveDynObject(uint32 spellId) { - if (m_dynObj.empty()) - return; for (DynObjectList::iterator i = m_dynObj.begin(); i != m_dynObj.end();) { DynamicObject* dynObj = *i; @@ -5105,7 +5169,7 @@ void Unit::RemoveDynObject(uint32 spellId) void Unit::RemoveAllDynObjects() { while (!m_dynObj.empty()) - m_dynObj.front()->Remove(); + m_dynObj.back()->Remove(); } GameObject* Unit::GetGameObject(uint32 spellId) const @@ -5592,14 +5656,8 @@ bool Unit::Attack(Unit* victim, bool meleeAttack) Creature* creature = ToCreature(); // creatures cannot attack while evading - if (creature) - { - if (creature->IsInEvadeMode()) - return false; - - if (!creature->CanMelee()) - meleeAttack = false; - } + if (creature && creature->IsInEvadeMode()) + return false; // nobody can attack GM in GM-mode if (victim->GetTypeId() == TYPEID_PLAYER) @@ -10979,7 +11037,6 @@ void Unit::SetControlled(bool apply, UnitState state) case UNIT_STATE_CONFUSED: if (!HasUnitState(UNIT_STATE_STUNNED)) { - ClearUnitState(UNIT_STATE_MELEE_ATTACKING); SendMeleeAttackStop(); // SendAutoRepeatCancel ? SetConfused(true); @@ -10988,7 +11045,6 @@ void Unit::SetControlled(bool apply, UnitState state) case UNIT_STATE_FLEEING: if (!HasUnitState(UNIT_STATE_STUNNED | UNIT_STATE_CONFUSED)) { - ClearUnitState(UNIT_STATE_MELEE_ATTACKING); SendMeleeAttackStop(); // SendAutoRepeatCancel ? SetFeared(true); diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 87670df2deb..7cc2bb27fdf 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1033,7 +1033,8 @@ class TC_GAME_API Unit : public WorldObject void TriggerAurasProcOnEvent(ProcEventInfo& eventInfo, AuraApplicationProcContainer& procAuras); void HandleEmoteCommand(Emote emoteId, Player* target = nullptr, Trinity::IteratorPair<int32 const*> spellVisualKitIds = {}, int32 sequenceVariation = 0); - void AttackerStateUpdate (Unit* victim, WeaponAttackType attType = BASE_ATTACK, bool extra = false); + void DoMeleeAttackIfReady(); + void AttackerStateUpdate(Unit* victim, WeaponAttackType attType = BASE_ATTACK, bool extra = false); void CalculateMeleeDamage(Unit* victim, CalcDamageInfo* damageInfo, WeaponAttackType attackType = BASE_ATTACK); void DealMeleeDamage(CalcDamageInfo* damageInfo, bool durabilityLoss); @@ -1922,7 +1923,7 @@ class TC_GAME_API Unit : public WorldObject int32 m_procDeep; // tracked for proc system correctness (what spells should proc what) int32 m_procChainLength; // tracked to protect against infinite proc loops (hard limit, will disallow procs even if they should happen) - typedef std::list<DynamicObject*> DynObjectList; + typedef std::vector<DynamicObject*> DynObjectList; DynObjectList m_dynObj; typedef std::list<GameObject*> GameObjectList; diff --git a/src/server/game/Entities/Unit/UnitDefines.h b/src/server/game/Entities/Unit/UnitDefines.h index e2509c038f2..98dde89d420 100644 --- a/src/server/game/Entities/Unit/UnitDefines.h +++ b/src/server/game/Entities/Unit/UnitDefines.h @@ -468,6 +468,14 @@ enum HitInfo HITINFO_FAKE_DAMAGE = 0x01000000 // enables damage animation even if no damage done, set only if no damage }; +enum class AttackSwingErr : uint8 +{ + NotInRange = 0, + BadFacing = 1, + CantAttack = 2, + DeadTarget = 3 +}; + #define MAX_DECLINED_NAME_CASES 5 struct TC_GAME_API DeclinedName diff --git a/src/server/game/Server/Packets/CombatPackets.cpp b/src/server/game/Server/Packets/CombatPackets.cpp index d662128556f..33dd2c9a64a 100644 --- a/src/server/game/Server/Packets/CombatPackets.cpp +++ b/src/server/game/Server/Packets/CombatPackets.cpp @@ -96,7 +96,7 @@ WorldPacket const* WorldPackets::Combat::AIReaction::Write() WorldPacket const* WorldPackets::Combat::AttackSwingError::Write() { - _worldPacket.WriteBits(Reason, 3); + _worldPacket.WriteBits(AsUnderlyingType(Reason), 3); _worldPacket.FlushBits(); return &_worldPacket; } diff --git a/src/server/game/Server/Packets/CombatPackets.h b/src/server/game/Server/Packets/CombatPackets.h index 4aaa57ceba9..27dc7ec44ad 100644 --- a/src/server/game/Server/Packets/CombatPackets.h +++ b/src/server/game/Server/Packets/CombatPackets.h @@ -20,6 +20,7 @@ #include "Packet.h" #include "ObjectGuid.h" +#include "UnitDefines.h" class Unit; enum Powers : int8; @@ -41,20 +42,12 @@ namespace WorldPackets class AttackSwingError final : public ServerPacket { public: - enum AttackSwingErr : uint8 - { - NotInRange = 0, - BadFacing = 1, - CantAttack = 2, - DeadTarget = 3 - }; - AttackSwingError() : ServerPacket(SMSG_ATTACK_SWING_ERROR, 4) { } AttackSwingError(AttackSwingErr reason) : ServerPacket(SMSG_ATTACK_SWING_ERROR, 4), Reason(reason) { } WorldPacket const* Write() override; - AttackSwingErr Reason = CantAttack; + AttackSwingErr Reason = AttackSwingErr::CantAttack; }; class AttackStop final : public ClientPacket diff --git a/src/server/scripts/EasternKingdoms/AlteracValley/alterac_valley.cpp b/src/server/scripts/EasternKingdoms/AlteracValley/alterac_valley.cpp index 79bddc01009..25ced987293 100644 --- a/src/server/scripts/EasternKingdoms/AlteracValley/alterac_valley.cpp +++ b/src/server/scripts/EasternKingdoms/AlteracValley/alterac_valley.cpp @@ -166,8 +166,6 @@ struct npc_av_marshal_or_warmaster : public ScriptedAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/EasternKingdoms/AlteracValley/boss_balinda.cpp b/src/server/scripts/EasternKingdoms/AlteracValley/boss_balinda.cpp index 7aa746954dd..38987c82428 100644 --- a/src/server/scripts/EasternKingdoms/AlteracValley/boss_balinda.cpp +++ b/src/server/scripts/EasternKingdoms/AlteracValley/boss_balinda.cpp @@ -169,8 +169,6 @@ struct boss_balinda : public ScriptedAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/EasternKingdoms/AlteracValley/boss_drekthar.cpp b/src/server/scripts/EasternKingdoms/AlteracValley/boss_drekthar.cpp index fdf3663b396..f7ec0bb3da9 100644 --- a/src/server/scripts/EasternKingdoms/AlteracValley/boss_drekthar.cpp +++ b/src/server/scripts/EasternKingdoms/AlteracValley/boss_drekthar.cpp @@ -125,8 +125,6 @@ struct boss_drekthar : public ScriptedAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/EasternKingdoms/AlteracValley/boss_galvangar.cpp b/src/server/scripts/EasternKingdoms/AlteracValley/boss_galvangar.cpp index a693a980846..741387ec033 100644 --- a/src/server/scripts/EasternKingdoms/AlteracValley/boss_galvangar.cpp +++ b/src/server/scripts/EasternKingdoms/AlteracValley/boss_galvangar.cpp @@ -126,8 +126,6 @@ struct boss_galvangar : public ScriptedAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/EasternKingdoms/AlteracValley/boss_vanndar.cpp b/src/server/scripts/EasternKingdoms/AlteracValley/boss_vanndar.cpp index fa811e709c3..83c1fcc813e 100644 --- a/src/server/scripts/EasternKingdoms/AlteracValley/boss_vanndar.cpp +++ b/src/server/scripts/EasternKingdoms/AlteracValley/boss_vanndar.cpp @@ -85,10 +85,7 @@ struct boss_vanndar : public ScriptedAI if (!UpdateVictim()) return; - _scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + _scheduler.Update(diff); } private: diff --git a/src/server/scripts/EasternKingdoms/BaradinHold/boss_alizabal.cpp b/src/server/scripts/EasternKingdoms/BaradinHold/boss_alizabal.cpp index a69a0eb6bbf..1db8fdf370a 100644 --- a/src/server/scripts/EasternKingdoms/BaradinHold/boss_alizabal.cpp +++ b/src/server/scripts/EasternKingdoms/BaradinHold/boss_alizabal.cpp @@ -245,8 +245,6 @@ class boss_alizabal : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/EasternKingdoms/BaradinHold/boss_occuthar.cpp b/src/server/scripts/EasternKingdoms/BaradinHold/boss_occuthar.cpp index 2e95e41e96f..1123128e158 100644 --- a/src/server/scripts/EasternKingdoms/BaradinHold/boss_occuthar.cpp +++ b/src/server/scripts/EasternKingdoms/BaradinHold/boss_occuthar.cpp @@ -140,8 +140,6 @@ class boss_occuthar : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/EasternKingdoms/BaradinHold/boss_pit_lord_argaloth.cpp b/src/server/scripts/EasternKingdoms/BaradinHold/boss_pit_lord_argaloth.cpp index 1c42ea4184f..83fda21f9d9 100644 --- a/src/server/scripts/EasternKingdoms/BaradinHold/boss_pit_lord_argaloth.cpp +++ b/src/server/scripts/EasternKingdoms/BaradinHold/boss_pit_lord_argaloth.cpp @@ -111,8 +111,6 @@ class boss_pit_lord_argaloth : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/blackrock_caverns.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/blackrock_caverns.cpp index 40d5d9d5cee..f5373e7b413 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/blackrock_caverns.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/blackrock_caverns.cpp @@ -202,8 +202,6 @@ public: npc_twilight_flame_caller() : CreatureScript("npc_twilight_flame_caller" break; } } - - DoMeleeAttackIfReady(); } private: @@ -313,8 +311,6 @@ class npc_twilight_torturer : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } private: @@ -414,8 +410,6 @@ class npc_twilight_sadist : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } private: @@ -489,7 +483,6 @@ class npc_mad_prisoner : public CreatureScript break; } } - DoMeleeAttackIfReady(); } private: @@ -559,8 +552,6 @@ class npc_crazed_mage : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } private: @@ -653,8 +644,6 @@ class npc_raz_the_crazed : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_ascendant_lord_obsidius.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_ascendant_lord_obsidius.cpp index 2984565cf58..38a4eb6f515 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_ascendant_lord_obsidius.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_ascendant_lord_obsidius.cpp @@ -95,8 +95,6 @@ class boss_ascendant_lord_obsidius : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_beauty.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_beauty.cpp index f2ed2d1411d..40364df63f2 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_beauty.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_beauty.cpp @@ -102,8 +102,6 @@ class boss_beauty : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_corla.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_corla.cpp index 771125d57c0..88ce3101be9 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_corla.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_corla.cpp @@ -109,8 +109,6 @@ class boss_corla : public CreatureScript } return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_karsh_steelbender.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_karsh_steelbender.cpp index 25ed1ee9c09..22a7caef73f 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_karsh_steelbender.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_karsh_steelbender.cpp @@ -97,8 +97,6 @@ class boss_karsh_steelbender : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_romogg_bonecrusher.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_romogg_bonecrusher.cpp index ec5ccac6bff..2915f04a156 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_romogg_bonecrusher.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_romogg_bonecrusher.cpp @@ -122,8 +122,6 @@ class boss_romogg_bonecrusher : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.cpp index 23ae53ad34f..8b337da6ec0 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.cpp @@ -425,8 +425,6 @@ public: DoCastVictim(SPELL_MIGHTYBLOW); MightyBlow_Timer = 10000; } else MightyBlow_Timer -= diff; - - DoMeleeAttackIfReady(); } }; }; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_ambassador_flamelash.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_ambassador_flamelash.cpp index e6b303c9e21..bdf31e4b9b9 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_ambassador_flamelash.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_ambassador_flamelash.cpp @@ -76,8 +76,6 @@ class boss_ambassador_flamelash : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_coren_direbrew.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_coren_direbrew.cpp index c2bb6d3c599..618a73e744c 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_coren_direbrew.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_coren_direbrew.cpp @@ -279,8 +279,6 @@ struct boss_coren_direbrew : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; @@ -326,10 +324,7 @@ struct npc_coren_direbrew_sisters : public ScriptedAI void UpdateAI(uint32 diff) override { - _scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + _scheduler.Update(diff); } private: diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_emperor_dagran_thaurissan.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_emperor_dagran_thaurissan.cpp index f2a381924f4..effdb58230e 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_emperor_dagran_thaurissan.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_emperor_dagran_thaurissan.cpp @@ -105,8 +105,6 @@ class boss_emperor_dagran_thaurissan : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_general_angerforge.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_general_angerforge.cpp index ffb6229f919..591a637e2ee 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_general_angerforge.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_general_angerforge.cpp @@ -117,8 +117,6 @@ class boss_general_angerforge : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_high_interrogator_gerstahn.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_high_interrogator_gerstahn.cpp index 3037205af3d..4c575400b1b 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_high_interrogator_gerstahn.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_high_interrogator_gerstahn.cpp @@ -86,8 +86,6 @@ class boss_high_interrogator_gerstahn : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_magmus.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_magmus.cpp index f66ff800698..3af8b1ae887 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_magmus.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_magmus.cpp @@ -86,8 +86,6 @@ class boss_magmus : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } void JustDied(Unit* /*killer*/) override diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_tomb_of_seven.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_tomb_of_seven.cpp index 2933b5a3997..4d2c526af97 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_tomb_of_seven.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_tomb_of_seven.cpp @@ -225,8 +225,6 @@ class boss_doomrel : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } bool OnGossipSelect(Player* player, uint32 /*menuId*/, uint32 gossipListId) override diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_drakkisath.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_drakkisath.cpp index 5a919367ed1..5f1801f747f 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_drakkisath.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_drakkisath.cpp @@ -93,7 +93,6 @@ struct boss_drakkisath : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_gizrul_the_slavener.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_gizrul_the_slavener.cpp index 26da4e9054d..015f00eb2fe 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_gizrul_the_slavener.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_gizrul_the_slavener.cpp @@ -95,7 +95,6 @@ struct boss_gizrul_the_slavener : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_gyth.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_gyth.cpp index ad3f9a32ddc..38a2c618636 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_gyth.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_gyth.cpp @@ -168,7 +168,6 @@ struct boss_gyth : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_halycon.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_halycon.cpp index e53093eb601..f085837864e 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_halycon.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_halycon.cpp @@ -99,7 +99,6 @@ struct boss_halycon : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - DoMeleeAttackIfReady(); } private: bool Summoned; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_highlord_omokk.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_highlord_omokk.cpp index 05f0502ec42..3bbe365186d 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_highlord_omokk.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_highlord_omokk.cpp @@ -81,7 +81,6 @@ struct boss_highlord_omokk : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_lord_valthalak.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_lord_valthalak.cpp index 8484b0e7e04..26a952f570c 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_lord_valthalak.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_lord_valthalak.cpp @@ -124,8 +124,6 @@ struct boss_lord_valthalak : public BossAI frenzy15 = true; } } - - DoMeleeAttackIfReady(); } private: bool frenzy40; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_mother_smolderweb.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_mother_smolderweb.cpp index 787174d54d9..c77c3c66045 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_mother_smolderweb.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_mother_smolderweb.cpp @@ -86,7 +86,6 @@ struct boss_mother_smolderweb : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_overlord_wyrmthalak.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_overlord_wyrmthalak.cpp index 5eb1eedb157..b201320dd3f 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_overlord_wyrmthalak.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_overlord_wyrmthalak.cpp @@ -126,7 +126,6 @@ struct boss_overlord_wyrmthalak : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_pyroguard_emberseer.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_pyroguard_emberseer.cpp index 826cc63dfaf..c5994387a79 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_pyroguard_emberseer.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_pyroguard_emberseer.cpp @@ -273,7 +273,6 @@ struct boss_pyroguard_emberseer : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - DoMeleeAttackIfReady(); } }; @@ -344,8 +343,6 @@ struct npc_blackhand_incarcerator : public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_quartermaster_zigris.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_quartermaster_zigris.cpp index 2a9e6109781..787b9884528 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_quartermaster_zigris.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_quartermaster_zigris.cpp @@ -81,7 +81,6 @@ struct quartermaster_zigris : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_rend_blackhand.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_rend_blackhand.cpp index 905140b967e..73d84d4aa2d 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_rend_blackhand.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_rend_blackhand.cpp @@ -438,7 +438,6 @@ struct boss_rend_blackhand : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_shadow_hunter_voshgajin.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_shadow_hunter_voshgajin.cpp index d4f2bd9423b..02fddfecb48 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_shadow_hunter_voshgajin.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_shadow_hunter_voshgajin.cpp @@ -88,7 +88,6 @@ struct boss_shadow_hunter_voshgajin : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_the_beast.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_the_beast.cpp index 4c0cbab7061..b3e87bb4766 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_the_beast.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_the_beast.cpp @@ -97,7 +97,6 @@ public: if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - DoMeleeAttackIfReady(); } }; }; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_urok_doomhowl.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_urok_doomhowl.cpp index 5315c022b15..86e97e67547 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_urok_doomhowl.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_urok_doomhowl.cpp @@ -90,7 +90,6 @@ struct boss_urok_doomhowl : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_warmaster_voone.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_warmaster_voone.cpp index 0228cf81485..961c858bd32 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_warmaster_voone.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/boss_warmaster_voone.cpp @@ -107,7 +107,6 @@ struct boss_warmaster_voone : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_broodlord_lashlayer.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_broodlord_lashlayer.cpp index 4756ad281b5..38c397db1f4 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_broodlord_lashlayer.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_broodlord_lashlayer.cpp @@ -119,8 +119,6 @@ struct boss_broodlord : public BossAI break; } } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_chromaggus.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_chromaggus.cpp index 8cc58f8dba2..d11b3be9262 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_chromaggus.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_chromaggus.cpp @@ -171,9 +171,7 @@ struct boss_chromaggus : public BossAI Breath1_Spell = SPELL_FROSTBURN; Breath2_Spell = SPELL_IGNITEFLESH; break; - }; - - EnterEvadeMode(); + } } void Initialize() @@ -275,8 +273,6 @@ struct boss_chromaggus : public BossAI DoCast(me, SPELL_ENRAGE); Enraged = true; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_ebonroc.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_ebonroc.cpp index 3b62dc50691..8c8d9c3455f 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_ebonroc.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_ebonroc.cpp @@ -77,8 +77,6 @@ struct boss_ebonroc : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_firemaw.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_firemaw.cpp index d74574de642..0aff94af4f6 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_firemaw.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_firemaw.cpp @@ -79,8 +79,6 @@ struct boss_firemaw : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_flamegor.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_flamegor.cpp index 33061d520b5..8fbf62c38e3 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_flamegor.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_flamegor.cpp @@ -85,8 +85,6 @@ struct boss_flamegor : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp index 0084e493e50..865c288fab0 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp @@ -568,8 +568,6 @@ struct boss_nefarian : public BossAI Phase3 = true; Talk(SAY_RAISE_SKELETONS); } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_razorgore.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_razorgore.cpp index c0c5c49cd8a..dd953ab2465 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_razorgore.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_razorgore.cpp @@ -152,7 +152,6 @@ struct boss_razorgore : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_vaelastrasz.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_vaelastrasz.cpp index 1822ed1ff56..ee9e3cb1d07 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_vaelastrasz.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_vaelastrasz.cpp @@ -213,8 +213,6 @@ struct boss_vaelastrasz : public BossAI Talk(SAY_HALFLIFE); HasYelled = true; } - - DoMeleeAttackIfReady(); } bool OnGossipSelect(Player* player, uint32 menuId, uint32 gossipListId) override diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_baron_geddon.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_baron_geddon.cpp index b57ffcc1072..ad77ea3da8a 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_baron_geddon.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_baron_geddon.cpp @@ -107,8 +107,6 @@ struct boss_baron_geddon : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_garr.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_garr.cpp index 8df147209ec..557b1100ae5 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_garr.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_garr.cpp @@ -85,8 +85,6 @@ struct boss_garr : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; @@ -145,10 +143,7 @@ struct npc_firesworn : public ScriptedAI if (!UpdateVictim()) return; - _scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + _scheduler.Update(diff); } private: diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_gehennas.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_gehennas.cpp index f55df0eb24e..6b9952c87d0 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_gehennas.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_gehennas.cpp @@ -89,8 +89,6 @@ struct boss_gehennas : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_golemagg.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_golemagg.cpp index febe22cd777..4ac429ce704 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_golemagg.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_golemagg.cpp @@ -107,8 +107,6 @@ struct boss_golemagg : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; @@ -154,10 +152,7 @@ struct npc_core_rager : public ScriptedAI if (!UpdateVictim()) return; - _scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + _scheduler.Update(diff); } private: diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_lucifron.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_lucifron.cpp index f1a3699db70..a0fe27bc40f 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_lucifron.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_lucifron.cpp @@ -87,8 +87,6 @@ struct boss_lucifron : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_magmadar.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_magmadar.cpp index 9d6a0bab5be..09e59435d68 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_magmadar.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_magmadar.cpp @@ -101,8 +101,6 @@ struct boss_magmadar : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_majordomo_executus.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_majordomo_executus.cpp index fe41d2608ca..2ba6f532b64 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_majordomo_executus.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_majordomo_executus.cpp @@ -145,8 +145,6 @@ struct boss_majordomo : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } else { diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_ragnaros.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_ragnaros.cpp index 5ba5854d984..db5539a6fc0 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_ragnaros.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_ragnaros.cpp @@ -292,8 +292,6 @@ struct boss_ragnaros : public BossAI break; } } - - DoMeleeAttackIfReady(); } } @@ -317,14 +315,6 @@ struct npc_son_of_flame : public ScriptedAI //didnt work correctly in EAI for me instance->SetData(DATA_RAGNAROS_ADDS, 1); } - void UpdateAI(uint32 /*diff*/) override - { - if (!UpdateVictim()) - return; - - DoMeleeAttackIfReady(); - } - private: InstanceScript* instance; }; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_shazzrah.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_shazzrah.cpp index c87e3661a12..c88342baf6b 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_shazzrah.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_shazzrah.cpp @@ -104,8 +104,6 @@ struct boss_shazzrah : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_sulfuron_harbinger.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_sulfuron_harbinger.cpp index 667a6af0144..c319245ca0a 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_sulfuron_harbinger.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_sulfuron_harbinger.cpp @@ -119,8 +119,6 @@ struct boss_sulfuron : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; @@ -184,8 +182,6 @@ struct npc_flamewaker_priest : public ScriptedAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/EasternKingdoms/Deadmines/boss_mr_smite.cpp b/src/server/scripts/EasternKingdoms/Deadmines/boss_mr_smite.cpp index 60ae45b527b..514bcedff2c 100644 --- a/src/server/scripts/EasternKingdoms/Deadmines/boss_mr_smite.cpp +++ b/src/server/scripts/EasternKingdoms/Deadmines/boss_mr_smite.cpp @@ -204,8 +204,6 @@ public: } } else uiTimer -= uiDiff; } - - DoMeleeAttackIfReady(); } void MovementInform(uint32 uiType, uint32 /*uiId*/) override diff --git a/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.cpp b/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.cpp index 3b501ca29d1..1b220d3ddc2 100644 --- a/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.cpp +++ b/src/server/scripts/EasternKingdoms/Gnomeregan/gnomeregan.cpp @@ -488,10 +488,7 @@ public: } else uiTimer -= uiDiff; } - if (!UpdateVictim()) - return; - - DoMeleeAttackIfReady(); + UpdateVictim(); } void JustSummoned(Creature* summon) override @@ -530,14 +527,6 @@ public: creature->AI()->SetData(2, 1); } - void UpdateAI(uint32 /*diff*/) override - { - if (!UpdateVictim()) - return; - - DoMeleeAttackIfReady(); - } - void JustDied(Unit* /*killer*/) override { if (!me->IsSummon()) diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_maiden_of_virtue.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_maiden_of_virtue.cpp index a1848abb7c8..5d1145bdfbc 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_maiden_of_virtue.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_maiden_of_virtue.cpp @@ -116,8 +116,6 @@ public: if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp index 89616f3566a..4a71fd3c4a1 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp @@ -219,10 +219,7 @@ public: if (!UpdateVictim() && _phase != PHASE_NONE) return; - scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + scheduler.Update(diff); } void SpellHit(WorldObject* /*caster*/, SpellInfo const* spellInfo) override @@ -370,10 +367,7 @@ public: if (!UpdateVictim() || _phase == PHASE_MOUNTED) return; - scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + scheduler.Update(diff); } private: diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_moroes.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_moroes.cpp index 98b3b7452fe..3deb60aa30a 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_moroes.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_moroes.cpp @@ -287,6 +287,7 @@ public: if (Vanish_Timer <= diff) { DoCast(me, SPELL_VANISH); + me->SetCanMelee(false); InVanish = true; Vanish_Timer = 30000; Wait_Timer = 5000; @@ -316,11 +317,9 @@ public: target->CastSpell(target, SPELL_GARROTE, true); InVanish = false; + me->SetCanMelee(true); } else Wait_Timer -= diff; } - - if (!InVanish) - DoMeleeAttackIfReady(); } }; }; @@ -371,8 +370,6 @@ struct boss_moroes_guestAI : public ScriptedAI { if (instance->GetBossState(DATA_MOROES) != IN_PROGRESS) EnterEvadeMode(); - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_netherspite.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_netherspite.cpp index 2ad49885338..307d00f534b 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_netherspite.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_netherspite.cpp @@ -345,8 +345,6 @@ public: } } else PhaseTimer -= diff; } - - DoMeleeAttackIfReady(); } }; }; diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp index 1f0044a137c..830580eaaf1 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp @@ -370,8 +370,6 @@ public: if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp index ec383112be7..08844a5ac48 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_prince_malchezaar.cpp @@ -550,8 +550,6 @@ public: EnfeebleResetTimer = 9000; } else EnfeebleTimer -= diff; } - - DoMeleeAttackIfReady(); } void Cleanup(Creature* infernal, InfernalPoint *point) diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp index b2e71646759..3939f8d4505 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_shade_of_aran.cpp @@ -173,6 +173,7 @@ public: void Reset() override { Initialize(); + me->SetCanMelee(true); // Not in progress instance->SetBossState(DATA_ARAN, NOT_STARTED); @@ -488,8 +489,7 @@ public: } else FlameWreathCheckTime -= diff; } - if (ArcaneCooldown && FireCooldown && FrostCooldown) - DoMeleeAttackIfReady(); + me->SetCanMelee(ArcaneCooldown && FireCooldown && FrostCooldown); } void DamageTaken(Unit* /*pAttacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp index 6ca698e307d..a70f2022ae4 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp @@ -185,10 +185,7 @@ public: if (!UpdateVictim()) return; - _scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + _scheduler.Update(diff); } private: @@ -303,10 +300,7 @@ public: if (!UpdateVictim()) return; - _scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + _scheduler.Update(diff); } private: diff --git a/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp b/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp index 6e515066112..63a43c286fe 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp @@ -229,8 +229,6 @@ public: SummonTito(); else SummonTitoTimer -= diff; } - - DoMeleeAttackIfReady(); } }; }; @@ -291,8 +289,6 @@ public: DoCastVictim(SPELL_YIPPING); YipTimer = 10000; } else YipTimer -= diff; - - DoMeleeAttackIfReady(); } }; }; @@ -423,8 +419,6 @@ public: DoCast(target, SPELL_BRAIN_WIPE); BrainWipeTimer = 20000; } else BrainWipeTimer -= diff; - - DoMeleeAttackIfReady(); } }; }; @@ -538,8 +532,6 @@ public: RustTimer = 6000; } else RustTimer -= diff; } - - DoMeleeAttackIfReady(); } }; }; @@ -652,8 +644,6 @@ public: DoCastVictim(SPELL_FRIGHTENED_SCREAM); ScreamTimer = urand(20000, 30000); } else ScreamTimer -= diff; - - DoMeleeAttackIfReady(); } }; }; @@ -737,8 +727,6 @@ public: DoCastVictim(SPELL_CHAIN_LIGHTNING); ChainLightningTimer = 15000; } else ChainLightningTimer -= diff; - - DoMeleeAttackIfReady(); } }; }; @@ -914,8 +902,6 @@ public: if (!UpdateVictim()) return; - DoMeleeAttackIfReady(); - if (ChaseTimer <= diff) { if (!IsChasing) @@ -1358,8 +1344,6 @@ public: DoCastVictim(SPELL_POISON_THRUST); PoisonThrustTimer = urand(10000, 20000); } else PoisonThrustTimer -= diff; - - DoMeleeAttackIfReady(); } }; }; @@ -1480,8 +1464,6 @@ void boss_julianne::boss_julianneAI::UpdateAI(uint32 diff) EternalAffectionTimer = urand(45000, 60000); } else EternalAffectionTimer -= diff; - - DoMeleeAttackIfReady(); } void boss_julianne::boss_julianneAI::DamageTaken(Unit* /*done_by*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp index e5a48916459..5e082828cb5 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_felblood_kaelthas.cpp @@ -474,8 +474,6 @@ struct npc_felblood_kaelthas_phoenix : public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } private: InstanceScript* _instance; diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp index 1747d99f3db..47b26341b9d 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_priestess_delrissa.cpp @@ -334,8 +334,6 @@ public: SWPainTimer = 10000; } else SWPainTimer -= diff; - - DoMeleeAttackIfReady(); } }; }; @@ -508,6 +506,7 @@ public: { Initialize(); me->SetVisible(true); + me->SetCanMelee(true); boss_priestess_lackey_commonAI::Reset(); } @@ -531,6 +530,7 @@ public: AddThreat(unit, 1000.0f); InVanish = true; + me->SetCanMelee(false); Vanish_Timer = 30000; Wait_Timer = 10000; } else Vanish_Timer -= diff; @@ -543,6 +543,7 @@ public: DoCastVictim(SPELL_KIDNEY_SHOT, true); me->SetVisible(true); // ...? Hacklike InVanish = false; + me->SetCanMelee(true); } else Wait_Timer -= diff; } @@ -563,9 +564,6 @@ public: DoCastVictim(SPELL_EVISCERATE); Eviscerate_Timer = 4000; } else Eviscerate_Timer -= diff; - - if (!InVanish) - DoMeleeAttackIfReady(); } }; }; @@ -668,8 +666,6 @@ public: Fear_Timer = 10000; } else Fear_Timer -= diff; - - DoMeleeAttackIfReady(); } }; }; @@ -732,8 +728,6 @@ public: DoCastVictim(SPELL_SNAP_KICK); Snap_Kick_Timer = 4500; } else Snap_Kick_Timer -= diff; - - DoMeleeAttackIfReady(); } }; }; @@ -865,8 +859,6 @@ public: Blink_Timer = 8000; } else Blink_Timer -= diff; - - DoMeleeAttackIfReady(); } }; }; @@ -987,8 +979,6 @@ public: DoCastVictim(SPELL_FRIGHTENING_SHOUT); Frightening_Shout_Timer = 18000; } else Frightening_Shout_Timer -= diff; - - DoMeleeAttackIfReady(); } }; }; @@ -1088,8 +1078,6 @@ public: Freezing_Trap_Timer = 15000; } } else Freezing_Trap_Timer -= diff; - - DoMeleeAttackIfReady(); } else { @@ -1202,8 +1190,6 @@ public: DoCast(me, SPELL_LESSER_HEALING_WAVE); Healing_Wave_Timer = 5000; } else Healing_Wave_Timer -= diff; - - DoMeleeAttackIfReady(); } }; }; @@ -1304,8 +1290,6 @@ public: DoCast(me, SPELL_HIGH_EXPLOSIVE_SHEEP); High_Explosive_Sheep_Timer = 65000; } else High_Explosive_Sheep_Timer -= diff; - - DoMeleeAttackIfReady(); } }; }; diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp index 787cf45c59f..723b0e36fd0 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_selin_fireheart.cpp @@ -239,8 +239,6 @@ class boss_selin_fireheart : public CreatureScript events.ScheduleEvent(EVENT_DRAIN_CRYSTAL, 20s, 25s, 0, PHASE_NORMAL); } } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp index ccad5296b58..e0f929f122c 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp @@ -167,8 +167,6 @@ class boss_vexallus : public CreatureScript if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp index f93716612a9..fe9054503a9 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp @@ -282,8 +282,6 @@ public: break; } } - - DoMeleeAttackIfReady(); break; default: break; @@ -1069,31 +1067,22 @@ struct npc_scarlet_ghoul : public ScriptedAI Player* plrOwner = owner->ToPlayer(); if (plrOwner && plrOwner->IsInCombat()) { - if (plrOwner->getAttackerForHelper() && plrOwner->getAttackerForHelper()->GetEntry() == NPC_GHOSTS) - AttackStart(plrOwner->getAttackerForHelper()); + Unit* newTarget = plrOwner->getAttackerForHelper(); + if (newTarget && newTarget->GetEntry() == NPC_GHOSTS) + AttackStart(newTarget); else FindMinions(owner); } } } - if (!UpdateVictim() || !me->GetVictim()) + if (!UpdateVictim()) return; + } - //ScriptedAI::UpdateAI(diff); - //Check if we have a current target - if (me->EnsureVictim()->GetEntry() == NPC_GHOSTS) - { - if (me->isAttackReady()) - { - //If we are within range melee the target - if (me->IsWithinMeleeRange(me->GetVictim())) - { - me->AttackerStateUpdate(me->GetVictim()); - me->resetAttackTimer(); - } - } - } + bool CanAIAttack(Unit const* target) const override + { + return target->GetEntry() == NPC_GHOSTS; } }; @@ -1259,8 +1248,6 @@ struct npc_hearthglen_crusader : public ScriptedAI if (!me->IsWithinCombatRange(me->GetVictim(), _minimumRange)) DoSpellAttackIfReady(me->m_spells[0]); - else - DoMeleeAttackIfReady(); } void WaypointPathEnded(uint32 /*nodeId*/, uint32 pathId) override diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp index b93c1646e46..60afdb38ba9 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp @@ -416,8 +416,6 @@ public: if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp index 083dcf24eb8..f6a442910cd 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp @@ -1465,8 +1465,6 @@ public: SetHoldState(false); } else uiFight_duration -= diff; - - DoMeleeAttackIfReady(); } } diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_arcanist_doan.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_arcanist_doan.cpp index 239bdfb87c8..432266947d1 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_arcanist_doan.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_arcanist_doan.cpp @@ -107,8 +107,6 @@ struct boss_arcanist_doan : public BossAI DoCastSelf(SPELL_ARCANE_BUBBLE); DoCastAOE(SPELL_DETONATION); } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_azshir_the_sleepless.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_azshir_the_sleepless.cpp index e7c3471c5dc..78ebaf3741f 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_azshir_the_sleepless.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_azshir_the_sleepless.cpp @@ -96,8 +96,6 @@ struct boss_azshir_the_sleepless : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp index 8a16c962d0a..44688f980e5 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp @@ -605,8 +605,6 @@ struct boss_headless_horseman : public ScriptedAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: @@ -663,8 +661,6 @@ struct npc_pulsing_pumpkin : public ScriptedAI return; _scheduler.Update(diff); - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_high_inquisitor_fairbanks.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_high_inquisitor_fairbanks.cpp index 3ac6ec3bb60..baf7aa22d83 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_high_inquisitor_fairbanks.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_high_inquisitor_fairbanks.cpp @@ -120,8 +120,6 @@ struct boss_high_inquisitor_fairbanks : public BossAI if (!_healTimer.Passed()) _healTimer.Update(diff); - - DoMeleeAttackIfReady(); } void ExecuteEvent(uint32 eventId) override diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_mograine_and_whitemane.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_mograine_and_whitemane.cpp index f054558afcf..13e82f35c67 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_mograine_and_whitemane.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_mograine_and_whitemane.cpp @@ -228,8 +228,6 @@ public: if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: @@ -343,9 +341,6 @@ public: if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - if (me->HasReactState(REACT_AGGRESSIVE)) - DoMeleeAttackIfReady(); } void DamageTaken(Unit* /*who*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp index f32f4e29111..22b89f2225c 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp @@ -131,7 +131,6 @@ class boss_darkmaster_gandling : public CreatureScript if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_doctor_theolen_krastinov.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_doctor_theolen_krastinov.cpp index f058d2ac3d6..5a5012adee7 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_doctor_theolen_krastinov.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_doctor_theolen_krastinov.cpp @@ -95,8 +95,6 @@ class boss_doctor_theolen_krastinov : public CreatureScript if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_illucia_barov.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_illucia_barov.cpp index 1efb043fd00..e5388fe69ab 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_illucia_barov.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_illucia_barov.cpp @@ -97,8 +97,6 @@ class boss_illucia_barov : public CreatureScript if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_instructor_malicia.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_instructor_malicia.cpp index 7318f05150e..5299ae2bf49 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_instructor_malicia.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_instructor_malicia.cpp @@ -141,8 +141,6 @@ class boss_instructor_malicia : public CreatureScript if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_jandice_barov.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_jandice_barov.cpp index 8bf0b8a9311..0fba33cff26 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_jandice_barov.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_jandice_barov.cpp @@ -102,8 +102,6 @@ public: if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp index a4f8cea844e..d1f4a292e71 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_kirtonos_the_herald.cpp @@ -252,8 +252,6 @@ class boss_kirtonos_the_herald : public CreatureScript if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_kormok.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_kormok.cpp index e58ac8b67c5..ca837001eb3 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_kormok.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_kormok.cpp @@ -119,8 +119,6 @@ public: if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_lord_alexei_barov.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_lord_alexei_barov.cpp index 20be79069ed..8bb1c5dc1ba 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_lord_alexei_barov.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_lord_alexei_barov.cpp @@ -91,8 +91,6 @@ class boss_lord_alexei_barov : public CreatureScript if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_lorekeeper_polkelt.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_lorekeeper_polkelt.cpp index 8ae50697d9b..8c3d7c58344 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_lorekeeper_polkelt.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_lorekeeper_polkelt.cpp @@ -96,8 +96,6 @@ class boss_lorekeeper_polkelt : public CreatureScript if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_ras_frostwhisper.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_ras_frostwhisper.cpp index 8da1b37206a..cb7ae140ae0 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_ras_frostwhisper.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_ras_frostwhisper.cpp @@ -110,8 +110,6 @@ public: if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_the_ravenian.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_the_ravenian.cpp index 63050b56ab5..bc4dacad9fc 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_the_ravenian.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_the_ravenian.cpp @@ -96,8 +96,6 @@ class boss_the_ravenian : public CreatureScript if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_vectus.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_vectus.cpp index 9d652f8f5de..fb7c760b893 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_vectus.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_vectus.cpp @@ -111,8 +111,6 @@ public: if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } void WaypointReached(uint32 waypointId, uint32 pathId) override diff --git a/src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp b/src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp index 7d5ff186908..4f88898eb85 100644 --- a/src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp +++ b/src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp @@ -256,8 +256,6 @@ struct boss_apothecary_hummel : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } void OnQuestReward(Player* /*player*/, Quest const* quest, LootItemType /*type*/, uint32 /*opt*/) override @@ -354,8 +352,6 @@ struct npc_apothecary_baxter : public npc_apothecary_genericAI break; } } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.cpp b/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.cpp index c4a21f989a7..e5f8722d81d 100644 --- a/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.cpp +++ b/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.cpp @@ -192,8 +192,6 @@ public: DoCast(me, SPELL_DARK_OFFERING); uiDarkOffering = urand(4400, 12500); } else uiDarkOffering -= uiDiff; - - DoMeleeAttackIfReady(); } void JustDied(Unit* /*killer*/) override @@ -311,7 +309,6 @@ class boss_archmage_arugal : public CreatureScript break; } } - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/Stratholme/boss_baron_rivendare.cpp b/src/server/scripts/EasternKingdoms/Stratholme/boss_baron_rivendare.cpp index 4d67e50144e..0a1d7c4539a 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/boss_baron_rivendare.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/boss_baron_rivendare.cpp @@ -122,7 +122,6 @@ public: if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/EasternKingdoms/Stratholme/boss_baroness_anastari.cpp b/src/server/scripts/EasternKingdoms/Stratholme/boss_baroness_anastari.cpp index dd2a0214de8..2b8bbdb5499 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/boss_baroness_anastari.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/boss_baroness_anastari.cpp @@ -127,8 +127,6 @@ struct boss_baroness_anastari : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/Stratholme/boss_cannon_master_willey.cpp b/src/server/scripts/EasternKingdoms/Stratholme/boss_cannon_master_willey.cpp index 56fa89e24de..5c74e358502 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/boss_cannon_master_willey.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/boss_cannon_master_willey.cpp @@ -224,8 +224,6 @@ public: //30 seconds until we should cast this again SummonRifleman_Timer = 30000; } else SummonRifleman_Timer -= diff; - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/Stratholme/boss_dathrohan_balnazzar.cpp b/src/server/scripts/EasternKingdoms/Stratholme/boss_dathrohan_balnazzar.cpp index ca7bb764917..4e63634ed44 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/boss_dathrohan_balnazzar.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/boss_dathrohan_balnazzar.cpp @@ -216,8 +216,6 @@ public: m_uiMindControl_Timer = 15000; } else m_uiMindControl_Timer -= uiDiff; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/Stratholme/boss_magistrate_barthilas.cpp b/src/server/scripts/EasternKingdoms/Stratholme/boss_magistrate_barthilas.cpp index b8860a5b27d..2012fcea4b2 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/boss_magistrate_barthilas.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/boss_magistrate_barthilas.cpp @@ -127,8 +127,6 @@ public: DoCastVictim(SPELL_MIGHTYBLOW); MightyBlow_Timer = 20000; } else MightyBlow_Timer -= diff; - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/Stratholme/boss_maleki_the_pallid.cpp b/src/server/scripts/EasternKingdoms/Stratholme/boss_maleki_the_pallid.cpp index a79ca0cee98..6d1a3233ae0 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/boss_maleki_the_pallid.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/boss_maleki_the_pallid.cpp @@ -96,8 +96,6 @@ public: break; } } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/Stratholme/boss_nerubenkan.cpp b/src/server/scripts/EasternKingdoms/Stratholme/boss_nerubenkan.cpp index f9d76231d61..e9d40865655 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/boss_nerubenkan.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/boss_nerubenkan.cpp @@ -110,8 +110,6 @@ public: RaiseUndeadScarab(me->GetVictim()); RaiseUndeadScarab_Timer = 16000; } else RaiseUndeadScarab_Timer -= diff; - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/Stratholme/boss_order_of_silver_hand.cpp b/src/server/scripts/EasternKingdoms/Stratholme/boss_order_of_silver_hand.cpp index 49457a30244..5f950d6e566 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/boss_order_of_silver_hand.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/boss_order_of_silver_hand.cpp @@ -159,8 +159,6 @@ public: DivineShield_Timer = 40000; } } else DivineShield_Timer -= diff; - - DoMeleeAttackIfReady(); } }; }; diff --git a/src/server/scripts/EasternKingdoms/Stratholme/boss_postmaster_malown.cpp b/src/server/scripts/EasternKingdoms/Stratholme/boss_postmaster_malown.cpp index 8c7ecfca87a..691a77346d4 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/boss_postmaster_malown.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/boss_postmaster_malown.cpp @@ -123,8 +123,6 @@ class boss_postmaster_malown : public CreatureScript if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/Stratholme/boss_ramstein_the_gorger.cpp b/src/server/scripts/EasternKingdoms/Stratholme/boss_ramstein_the_gorger.cpp index 7245d066a28..b5abd3092e1 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/boss_ramstein_the_gorger.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/boss_ramstein_the_gorger.cpp @@ -101,8 +101,6 @@ public: DoCastVictim(SPELL_KNOCKOUT); Knockout_Timer = 10000; } else Knockout_Timer -= diff; - - DoMeleeAttackIfReady(); } }; }; diff --git a/src/server/scripts/EasternKingdoms/Stratholme/boss_timmy_the_cruel.cpp b/src/server/scripts/EasternKingdoms/Stratholme/boss_timmy_the_cruel.cpp index ca1123c4c13..0b8c15866e9 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/boss_timmy_the_cruel.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/boss_timmy_the_cruel.cpp @@ -94,8 +94,6 @@ public: //15 seconds until we should cast this again RavenousClaw_Timer = 15000; } else RavenousClaw_Timer -= diff; - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/Stratholme/stratholme.cpp b/src/server/scripts/EasternKingdoms/Stratholme/stratholme.cpp index ae665d2b2d1..0d092af1082 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/stratholme.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/stratholme.cpp @@ -290,8 +290,6 @@ public: TouchTimer = 7000; } else TouchTimer -= diff; - - DoMeleeAttackIfReady(); } void ReceiveEmote(Player* player, uint32 emote) override diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp index a2d27715662..c6afdce1818 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp @@ -291,8 +291,6 @@ struct boss_brutallus : public BossAI if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); } if (!UpdateVictim() || IsIntro) @@ -324,8 +322,6 @@ struct boss_brutallus : public BossAI DoCast(me, SPELL_BERSERK); Enraged = true; } else BerserkTimer -= diff; - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp index 4a40289eb12..e4b53573046 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_eredar_twins.cpp @@ -309,8 +309,6 @@ public: if (me->IsWithinMeleeRange(me->GetVictim())) { HandleTouchedSpells(me->GetVictim(), SPELL_DARK_TOUCHED); - me->AttackerStateUpdate(me->GetVictim()); - me->resetAttackTimer(); } } } diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp index 07b9282f17d..14210bbe5ee 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp @@ -276,6 +276,7 @@ struct boss_felmyst : public BossAI break; } phase = NextPhase; + me->SetCanMelee(phase == PHASE_GROUND); } void HandleFlightSequence() @@ -454,7 +455,6 @@ struct boss_felmyst : public BossAI EnterPhase(PHASE_FLIGHT); break; default: - DoMeleeAttackIfReady(); break; } } diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp index 1e7d9b13b84..68717bdb57f 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kalecgos.cpp @@ -339,8 +339,6 @@ struct boss_kalecgos : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: @@ -420,8 +418,6 @@ struct boss_kalecgos_human : public ScriptedAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp index 65dfebf49f2..678b3d70ff3 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp @@ -864,7 +864,6 @@ public: } } } - DoMeleeAttackIfReady(); //Time runs over! for (uint8 i = 0; i < ActiveTimers; ++i) if (!TimerIsDeactivated[i]) @@ -998,8 +997,6 @@ public: AddThreat(ref->GetVictim(), 1.0f, pPortal); FelfirePortalTimer = 20000; } else FelfirePortalTimer -= diff; - - DoMeleeAttackIfReady(); } }; @@ -1361,7 +1358,6 @@ public: DoCastVictim(SPELL_SR_MOONFIRE, false); uiTimer[1] = urand(2000, 4000); } - DoMeleeAttackIfReady(); break; case CLASS_HUNTER: if (uiTimer[1] <= diff) @@ -1381,7 +1377,6 @@ public: DoCastVictim(SPELL_SR_MULTI_SHOT, false); uiTimer[0] = urand(6000, 8000); } - DoMeleeAttackIfReady(); } break; case CLASS_MAGE: @@ -1390,7 +1385,6 @@ public: DoCastVictim(SPELL_SR_FIREBALL, false); uiTimer[1] = urand(2000, 4000); } - DoMeleeAttackIfReady(); break; case CLASS_WARLOCK: if (uiTimer[1] <= diff) @@ -1403,7 +1397,6 @@ public: DoCast(SelectTarget(SelectTargetMethod::Random, 0, 100, true), SPELL_SR_CURSE_OF_AGONY, true); uiTimer[2] = urand(2000, 4000); } - DoMeleeAttackIfReady(); break; case CLASS_WARRIOR: if (uiTimer[1] <= diff) @@ -1411,7 +1404,6 @@ public: DoCastVictim(SPELL_SR_WHIRLWIND, false); uiTimer[1] = urand(9000, 11000); } - DoMeleeAttackIfReady(); break; case CLASS_PALADIN: if (uiTimer[1] <= diff) @@ -1424,7 +1416,6 @@ public: DoCastVictim(SPELL_SR_HOLY_SHOCK, false); uiTimer[2] = urand(2000, 4000); } - DoMeleeAttackIfReady(); break; case CLASS_PRIEST: if (uiTimer[1] <= diff) @@ -1437,7 +1428,6 @@ public: DoCast(me, SPELL_SR_RENEW, false); uiTimer[2] = urand(6000, 8000); } - DoMeleeAttackIfReady(); break; case CLASS_SHAMAN: if (uiTimer[1] <= diff) @@ -1445,7 +1435,6 @@ public: DoCastVictim(SPELL_SR_EARTH_SHOCK, false); uiTimer[1] = urand(4000, 6000); } - DoMeleeAttackIfReady(); break; case CLASS_ROGUE: if (uiTimer[1] <= diff) @@ -1453,7 +1442,6 @@ public: DoCastVictim(SPELL_SR_HEMORRHAGE, true); uiTimer[1] = urand(4000, 6000); } - DoMeleeAttackIfReady(); break; } TC_LOG_DEBUG("scripts", "Sinister-Timer"); diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp index 3b932075070..41ef13b6b21 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp @@ -198,10 +198,7 @@ struct boss_entropius : public BossAI if (!UpdateVictim()) return; - scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + scheduler.Update(diff); } void DoResetPortals() @@ -444,10 +441,7 @@ struct npc_void_sentinel : public ScriptedAI void UpdateAI(uint32 diff) override { - _scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + _scheduler.Update(diff); } private: diff --git a/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp b/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp index c38fef91072..db0c2164857 100644 --- a/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp +++ b/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp @@ -202,8 +202,6 @@ class boss_archaedas : public CreatureScript //45 seconds until we should cast this agian uiTremorTimer = 45000; } else uiTremorTimer -= uiDiff; - - DoMeleeAttackIfReady(); } void JustDied (Unit* /*killer*/) override @@ -314,8 +312,6 @@ class npc_archaedas_minions : public CreatureScript //Return since we have no target if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); } }; @@ -371,8 +367,6 @@ class npc_stonekeepers : public CreatureScript //Return since we have no target if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); } void JustDied(Unit* /*killer*/) override diff --git a/src/server/scripts/EasternKingdoms/Uldaman/boss_ironaya.cpp b/src/server/scripts/EasternKingdoms/Uldaman/boss_ironaya.cpp index e1c15c7bdf7..bdacd1ba34c 100644 --- a/src/server/scripts/EasternKingdoms/Uldaman/boss_ironaya.cpp +++ b/src/server/scripts/EasternKingdoms/Uldaman/boss_ironaya.cpp @@ -83,10 +83,7 @@ struct boss_ironaya : public BossAI if (!UpdateVictim()) return; - scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + scheduler.Update(diff); } private: diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp index b2d1c6166a5..596d750ded6 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp @@ -81,8 +81,6 @@ class boss_akilzon : public CreatureScript } } */ - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_daakara.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_daakara.cpp index 51cf111167c..9f2b5aa37d0 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_daakara.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_daakara.cpp @@ -96,8 +96,6 @@ class boss_daakara : public CreatureScript } } */ - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp index de67dd2b2b0..1dea4c0980e 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp @@ -89,8 +89,6 @@ class boss_halazzi : public CreatureScript } } */ - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp index cf321021290..807e1c50af9 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp @@ -93,8 +93,6 @@ class boss_hexlord_malacrass : public CreatureScript } } */ - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_janalai.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_janalai.cpp index 773aa8c8ea1..f993ee7c8bc 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_janalai.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_janalai.cpp @@ -90,8 +90,6 @@ class boss_janalai : public CreatureScript } } */ - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp index c34d13a265b..8aac1cdac8c 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp @@ -95,8 +95,6 @@ class boss_nalorakk : public CreatureScript } } */ - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp index 2cb3681cc26..d68c81ceb2a 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp @@ -72,8 +72,6 @@ struct boss_grilek : public BossAI return; } */ - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp index adf73e984fe..59a0ef4c069 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp @@ -72,8 +72,6 @@ struct boss_hazzarah : public BossAI return; } */ - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo_the_godbreaker.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo_the_godbreaker.cpp index 9dd8abab90a..851709a063a 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo_the_godbreaker.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo_the_godbreaker.cpp @@ -90,8 +90,6 @@ class boss_jindo_the_godbreaker : public CreatureScript } } */ - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_kilnara.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_kilnara.cpp index 30f9a64ec2e..b77366a2418 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_kilnara.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_kilnara.cpp @@ -83,8 +83,6 @@ struct boss_kilnara : public BossAI } } */ - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp index 145f5acce61..108ce771e0b 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp @@ -280,8 +280,6 @@ struct boss_mandokir : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: @@ -327,14 +325,6 @@ struct npc_ohgan : public ScriptedAI } } - void UpdateAI(uint32 /*diff*/) override - { - if (!UpdateVictim()) - return; - - DoMeleeAttackIfReady(); - } - private: InstanceScript* _instance; }; diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp index 3677594a533..8fc70a65961 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp @@ -69,8 +69,6 @@ struct boss_renataki : public BossAI } } */ - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp index acd9cd00b69..1811c7c800f 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp @@ -88,8 +88,6 @@ struct boss_venoxis : public BossAI return; } */ - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp index 634c2539c77..e1840ba58c6 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_wushoolay.cpp @@ -64,8 +64,6 @@ struct boss_wushoolay : public BossAI return; } */ - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_zanzil.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_zanzil.cpp index debb07f15c5..2ec8b35d58c 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_zanzil.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_zanzil.cpp @@ -91,8 +91,6 @@ class boss_zanzil : public CreatureScript } } */ - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/EasternKingdoms/zone_duskwood.cpp b/src/server/scripts/EasternKingdoms/zone_duskwood.cpp index 7fef2d60253..c9917a24a9e 100644 --- a/src/server/scripts/EasternKingdoms/zone_duskwood.cpp +++ b/src/server/scripts/EasternKingdoms/zone_duskwood.cpp @@ -120,8 +120,6 @@ public: break; } } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/EasternKingdoms/zone_eversong_woods.cpp b/src/server/scripts/EasternKingdoms/zone_eversong_woods.cpp index 0c52922b0a1..b51919a85dc 100644 --- a/src/server/scripts/EasternKingdoms/zone_eversong_woods.cpp +++ b/src/server/scripts/EasternKingdoms/zone_eversong_woods.cpp @@ -104,8 +104,6 @@ struct npc_partygoer_pather : public ScriptedAI if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); } private: @@ -200,8 +198,6 @@ struct npc_partygoer : public ScriptedAI if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/EasternKingdoms/zone_redridge_mountains.cpp b/src/server/scripts/EasternKingdoms/zone_redridge_mountains.cpp index 0a515e8fe6d..0eb97cec0ee 100644 --- a/src/server/scripts/EasternKingdoms/zone_redridge_mountains.cpp +++ b/src/server/scripts/EasternKingdoms/zone_redridge_mountains.cpp @@ -73,7 +73,6 @@ public: void UpdateAI(uint32 diff) override { _scheduler.Update(diff); - DoMeleeAttackIfReady(); } private: @@ -104,11 +103,6 @@ public: if ((!who || who->GetTypeId() == TYPEID_UNIT) && me->HealthBelowPctDamaged(82, damage)) damage = 0; } - - void UpdateAI(uint32 /*diff*/) override - { - DoMeleeAttackIfReady(); - } }; CreatureAI* GetAI(Creature* creature) const override @@ -244,7 +238,6 @@ public: } } } - DoMeleeAttackIfReady(); } private: @@ -358,7 +351,6 @@ public: } } } - DoMeleeAttackIfReady(); } private: EventMap _events; diff --git a/src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp b/src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp index 4054d4ff6f5..867801feeb9 100644 --- a/src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp +++ b/src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp @@ -871,8 +871,6 @@ struct npc_silverpine_grand_executor_mortuus : public ScriptedAI if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); } void SummonPortalsFromOrgrimmar() @@ -1254,8 +1252,6 @@ struct npc_silverpine_worgen_renegade : public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } private: @@ -1331,8 +1327,6 @@ struct npc_silverpine_forsaken_trooper : public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } private: @@ -3609,8 +3603,6 @@ struct npc_silverpine_forest_ettin : public ScriptedAI if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); } private: @@ -3914,8 +3906,6 @@ struct npc_silverpine_orc_sea_dog : public ScriptedAI if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); } private: @@ -4043,8 +4033,6 @@ struct npc_silverpine_skitterweb_matriarch : public ScriptedAI if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); } void ScheduleCombatEvents(Unit* who) @@ -4325,8 +4313,6 @@ struct npc_silverpine_agatha_fenris_isle : public ScriptedAI if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); } void SetEventNoEscape() @@ -4556,8 +4542,6 @@ struct npc_silverpine_hillsbrad_refugee : public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } private: @@ -4712,8 +4696,6 @@ struct npc_silverpine_worgen_sentry : public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/EasternKingdoms/zone_undercity.cpp b/src/server/scripts/EasternKingdoms/zone_undercity.cpp index d91500c33d7..2c05032de2e 100644 --- a/src/server/scripts/EasternKingdoms/zone_undercity.cpp +++ b/src/server/scripts/EasternKingdoms/zone_undercity.cpp @@ -232,8 +232,6 @@ public: break; } } - - DoMeleeAttackIfReady(); } void OnQuestReward(Player* player, Quest const* quest, LootItemType /*type*/, uint32 /*opt*/) override diff --git a/src/server/scripts/Events/lunar_festival.cpp b/src/server/scripts/Events/lunar_festival.cpp index be76c67d088..4afd2f5d287 100644 --- a/src/server/scripts/Events/lunar_festival.cpp +++ b/src/server/scripts/Events/lunar_festival.cpp @@ -378,8 +378,6 @@ struct npc_omen : public ScriptedAI events.ScheduleEvent(EVENT_CAST_STARFALL, 14s, 16s); break; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Events/zalazane_fall.cpp b/src/server/scripts/Events/zalazane_fall.cpp index 8526025716e..c72e0e184ad 100644 --- a/src/server/scripts/Events/zalazane_fall.cpp +++ b/src/server/scripts/Events/zalazane_fall.cpp @@ -234,8 +234,6 @@ struct npc_tiger_matriarch : public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.cpp b/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.cpp index c4fcea58e01..88e22ad94be 100644 --- a/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.cpp +++ b/src/server/scripts/Kalimdor/BlackfathomDeeps/blackfathom_deeps.cpp @@ -151,8 +151,6 @@ struct npc_blackfathom_deeps_event : public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_gelihast.cpp b/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_gelihast.cpp index f9d836b0d6f..b98940b5b42 100644 --- a/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_gelihast.cpp +++ b/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_gelihast.cpp @@ -54,8 +54,6 @@ struct boss_gelihast : public BossAI events.ScheduleEvent(EVENT_THROW_NET, 4s, 7s); } } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_kelris.cpp b/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_kelris.cpp index 3fa44b79ef0..a776fbf553f 100644 --- a/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_kelris.cpp +++ b/src/server/scripts/Kalimdor/BlackfathomDeeps/boss_kelris.cpp @@ -103,8 +103,6 @@ struct boss_kelris : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp index f23b7b017b5..2d23154f9c2 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_anetheron.cpp @@ -168,8 +168,6 @@ public: InfernoTimer = 45000; Talk(SAY_INFERNO); } else InfernoTimer -= diff; - - DoMeleeAttackIfReady(); } }; }; @@ -245,8 +243,6 @@ public: DoCast(me, SPELL_IMMOLATION); ImmolationTimer = 5000; } else ImmolationTimer -= diff; - - DoMeleeAttackIfReady(); } }; }; diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp index a08cf11f500..735878f4c1b 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp @@ -172,8 +172,6 @@ public: enraged = true; EnrageTimer = 600000; } else EnrageTimer -= diff; - - DoMeleeAttackIfReady(); } }; @@ -262,8 +260,6 @@ public: DoCast(SelectTarget(SelectTargetMethod::Random, 0, 100, true), SPELL_CRIPPLE); CrippleTimer = 25000 + rand32() % 5000; } else CrippleTimer -= diff; - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp index 988de4af818..01913499ea0 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp @@ -158,8 +158,6 @@ public: MarkTimer = MarkTimerBase; Talk(SAY_MARK); } else MarkTimer -= diff; - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_rage_winterchill.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_rage_winterchill.cpp index a3e17f8c997..ff1886ed927 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_rage_winterchill.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_rage_winterchill.cpp @@ -153,8 +153,6 @@ public: DoCast(SelectTarget(SelectTargetMethod::Random, 0, 40, true), SPELL_ICEBOLT); IceboltTimer = 11000 + rand32() % 20000; } else IceboltTimer -= diff; - - DoMeleeAttackIfReady(); } }; }; diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp index 76ee8e86efc..aefa9115f48 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp @@ -888,8 +888,6 @@ void hyjalAI::UpdateAI(uint32 diff) } else SpellTimer[i] -= diff; } } - - DoMeleeAttackIfReady(); } void hyjalAI::JustDied(Unit* /*killer*/) diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp index 15a5567584a..1c27f75a883 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp @@ -194,7 +194,6 @@ hyjal_trashAI::hyjal_trashAI(Creature* creature) : EscortAI(creature) useFlyPath = false; damageTaken = 0; memset(DummyTarget, 0, sizeof(DummyTarget)); - Reset(); } void hyjal_trashAI::DamageTaken(Unit* done_by, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) @@ -530,7 +529,6 @@ public: DoCastVictim(SPELL_FLAME_BUFFET, true); FlameBuffetTimer = 7000; } else FlameBuffetTimer -= diff; - DoMeleeAttackIfReady(); } }; @@ -633,7 +631,6 @@ public: DoCastVictim(SPELL_KNOCKDOWN); KnockDownTimer = 15000 + rand32() % 10000; } else KnockDownTimer -= diff; - DoMeleeAttackIfReady(); } }; @@ -735,8 +732,6 @@ public: } else FrenzyTimer -= diff; if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); } }; @@ -871,8 +866,6 @@ public: DoCastVictim(SPELL_SHADOW_BOLT); ShadowBoltTimer = 20000 + rand32() % 10000; } else ShadowBoltTimer -= diff; - - DoMeleeAttackIfReady(); } }; @@ -988,7 +981,6 @@ public: DoCast(me, SPELL_ANTI_MAGIC_SHELL); ShellTimer = 50000 + rand32() % 10000; } else ShellTimer -= diff; - DoMeleeAttackIfReady(); } }; @@ -1079,7 +1071,6 @@ public: DoCastVictim(SPELL_WEB); WebTimer = 20000 + rand32() % 5000; } else WebTimer -= diff; - DoMeleeAttackIfReady(); } }; @@ -1170,7 +1161,6 @@ public: DoCastVictim(SPELL_MANA_BURN); ManaBurnTimer = 9000 + rand32() % 5000; } else ManaBurnTimer -= diff; - DoMeleeAttackIfReady(); } }; @@ -1513,7 +1503,6 @@ public: me->CastSpell(me->GetVictim(), SPELL_EXPLODING_SHOT, args); ExplodeTimer = 5000 + rand32() % 5000; } else ExplodeTimer -= diff; - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp index 29e3025b92f..bb28cc50193 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp @@ -167,8 +167,6 @@ class boss_mal_ganis : public CreatureScript if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } void KilledUnit(Unit* victim) override diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/npc_arthas.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/npc_arthas.cpp index 6c432a8929a..7f5099679f1 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/npc_arthas.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/npc_arthas.cpp @@ -908,8 +908,6 @@ public: } else _exorcismCooldown -= diff; - - DoMeleeAttackIfReady(); } void UpdateAI(uint32 diff) override diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp index 9992806e628..7ca4ecf94a1 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_captain_skarloc.cpp @@ -145,8 +145,6 @@ struct boss_captain_skarloc : public BossAI //DoCastVictim(SPELL_CONSECRATION); Consecration_Timer = urand(5000, 10000); } else Consecration_Timer -= diff; - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_epoch_hunter.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_epoch_hunter.cpp index 25c5b0345f0..7d0cde48098 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_epoch_hunter.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_epoch_hunter.cpp @@ -127,8 +127,6 @@ struct boss_epoch_hunter : public BossAI DoCast(me, SPELL_MAGIC_DISRUPTION_AURA); Mda_Timer = 15000; } else Mda_Timer -= diff; - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_leutenant_drake.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_leutenant_drake.cpp index 77fbb20f084..37c5e62f85e 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_leutenant_drake.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/boss_leutenant_drake.cpp @@ -156,8 +156,6 @@ struct boss_lieutenant_drake : public BossAI DoCastVictim(SPELL_MORTAL_STRIKE); MortalStrike_Timer = 20000 + rand32() % 10000; } else MortalStrike_Timer -= diff; - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_aeonus.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_aeonus.cpp index 5958ae3f5e6..ca8db9e99a0 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_aeonus.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_aeonus.cpp @@ -130,7 +130,6 @@ struct boss_aeonus : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_chrono_lord_deja.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_chrono_lord_deja.cpp index 752cf85b370..e9a0e114de2 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_chrono_lord_deja.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_chrono_lord_deja.cpp @@ -135,8 +135,6 @@ struct boss_chrono_lord_deja : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_temporus.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_temporus.cpp index 03ced5fb1ff..d0a972abeb7 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_temporus.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/boss_temporus.cpp @@ -133,7 +133,6 @@ struct boss_temporus : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Kalimdor/Firelands/boss_alysrazor.cpp b/src/server/scripts/Kalimdor/Firelands/boss_alysrazor.cpp index 922cc03230a..1603e3e7e49 100644 --- a/src/server/scripts/Kalimdor/Firelands/boss_alysrazor.cpp +++ b/src/server/scripts/Kalimdor/Firelands/boss_alysrazor.cpp @@ -238,8 +238,6 @@ class npc_harbinger_of_flame : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } private: @@ -482,8 +480,6 @@ class npc_egg_pile : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Kalimdor/Firelands/firelands.cpp b/src/server/scripts/Kalimdor/Firelands/firelands.cpp index 243894203b7..8fb40ff6420 100644 --- a/src/server/scripts/Kalimdor/Firelands/firelands.cpp +++ b/src/server/scripts/Kalimdor/Firelands/firelands.cpp @@ -143,8 +143,6 @@ struct npc_firelands_flame_archon : public ScriptedAI return; scheduler.Update(diff); - - DoMeleeAttackIfReady(); } private: @@ -212,8 +210,6 @@ struct npc_firelands_molten_flamefather : public ScriptedAI return; scheduler.Update(diff); - - DoMeleeAttackIfReady(); } private: @@ -223,7 +219,10 @@ private: // http://www.wowhead.com/npc=54144/magmakin struct npc_firelands_magmakin : public ScriptedAI { - npc_firelands_magmakin(Creature* creature) : ScriptedAI(creature) { } + npc_firelands_magmakin(Creature* creature) : ScriptedAI(creature) + { + me->SetCanMelee(false); // DoSpellAttackIfReady + } void IsSummonedBy(WorldObject* /*summoner*/) override { diff --git a/src/server/scripts/Kalimdor/HallsOfOrigination/boss_anraphet.cpp b/src/server/scripts/Kalimdor/HallsOfOrigination/boss_anraphet.cpp index 86e2c5ebe49..2f5f96f29c4 100644 --- a/src/server/scripts/Kalimdor/HallsOfOrigination/boss_anraphet.cpp +++ b/src/server/scripts/Kalimdor/HallsOfOrigination/boss_anraphet.cpp @@ -265,9 +265,6 @@ public: break; } } - - if (events.GetPhaseMask() & PHASE_MASK_COMBAT) - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Kalimdor/HallsOfOrigination/boss_earthrager_ptah.cpp b/src/server/scripts/Kalimdor/HallsOfOrigination/boss_earthrager_ptah.cpp index 1f7c7cfd466..4e418e64bf3 100644 --- a/src/server/scripts/Kalimdor/HallsOfOrigination/boss_earthrager_ptah.cpp +++ b/src/server/scripts/Kalimdor/HallsOfOrigination/boss_earthrager_ptah.cpp @@ -117,6 +117,7 @@ public: void Reset() override { + me->SetCanMelee(true); _summonDeaths = 0; _hasDispersed = false; Cleanup(); @@ -135,6 +136,7 @@ public: _hasDispersed = true; me->AttackStop(); + me->SetCanMelee(false); DoCast(me, SPELL_SANDSTORM); me->GetMap()->SetZoneWeather(AREA_TOMB_OF_THE_EARTHRAGER, WEATHER_STATE_LIGHT_SANDSTORM, 1.0f); events.ScheduleEvent(EVENT_PTAH_EXPLODE, 6s, 0, PHASE_DISPERSE); @@ -170,6 +172,7 @@ public: { me->GetMap()->SetZoneWeather(AREA_TOMB_OF_THE_EARTHRAGER, WEATHER_STATE_FOG, 0.0f); me->RemoveAurasDueToSpell(SPELL_PTAH_EXPLOSION); + me->SetCanMelee(true); events.SetPhase(PHASE_NORMAL); events.ScheduleEvent(EVENT_RAGING_SMASH, 7s, 12s, 0, PHASE_NORMAL); events.ScheduleEvent(EVENT_FLAME_BOLT, 15s, 0, PHASE_NORMAL); @@ -239,9 +242,6 @@ public: break; } } - - if (events.GetPhaseMask() & PHASE_MASK_NORMAL) // Do not melee in the disperse phase - DoMeleeAttackIfReady(); } protected: diff --git a/src/server/scripts/Kalimdor/HallsOfOrigination/boss_temple_guardian_anhuur.cpp b/src/server/scripts/Kalimdor/HallsOfOrigination/boss_temple_guardian_anhuur.cpp index a5985dea99c..2552ff7cd89 100644 --- a/src/server/scripts/Kalimdor/HallsOfOrigination/boss_temple_guardian_anhuur.cpp +++ b/src/server/scripts/Kalimdor/HallsOfOrigination/boss_temple_guardian_anhuur.cpp @@ -258,8 +258,6 @@ public: } } } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Kalimdor/LostCityOfTheTolvir/boss_general_husam.cpp b/src/server/scripts/Kalimdor/LostCityOfTheTolvir/boss_general_husam.cpp index 182e0ac984e..a14b42f3d75 100644 --- a/src/server/scripts/Kalimdor/LostCityOfTheTolvir/boss_general_husam.cpp +++ b/src/server/scripts/Kalimdor/LostCityOfTheTolvir/boss_general_husam.cpp @@ -245,7 +245,6 @@ struct boss_general_husam : public BossAI break; } } - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Kalimdor/LostCityOfTheTolvir/boss_lockmaw.cpp b/src/server/scripts/Kalimdor/LostCityOfTheTolvir/boss_lockmaw.cpp index a863bc0f5a2..1b235ebed4c 100644 --- a/src/server/scripts/Kalimdor/LostCityOfTheTolvir/boss_lockmaw.cpp +++ b/src/server/scripts/Kalimdor/LostCityOfTheTolvir/boss_lockmaw.cpp @@ -256,8 +256,6 @@ struct boss_lockmaw : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: bool _enraged; @@ -494,8 +492,6 @@ struct npc_lockmaw_augh_boss : public ScriptedAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Kalimdor/Maraudon/boss_celebras_the_cursed.cpp b/src/server/scripts/Kalimdor/Maraudon/boss_celebras_the_cursed.cpp index 980a094fc94..7c50254f385 100644 --- a/src/server/scripts/Kalimdor/Maraudon/boss_celebras_the_cursed.cpp +++ b/src/server/scripts/Kalimdor/Maraudon/boss_celebras_the_cursed.cpp @@ -105,8 +105,6 @@ public: CorruptForcesTimer = 20000; } else CorruptForcesTimer -= diff; - - DoMeleeAttackIfReady(); } }; }; diff --git a/src/server/scripts/Kalimdor/Maraudon/boss_landslide.cpp b/src/server/scripts/Kalimdor/Maraudon/boss_landslide.cpp index 333192572b7..a0ad2784b0f 100644 --- a/src/server/scripts/Kalimdor/Maraudon/boss_landslide.cpp +++ b/src/server/scripts/Kalimdor/Maraudon/boss_landslide.cpp @@ -100,8 +100,6 @@ public: } else LandslideTimer -= diff; } - - DoMeleeAttackIfReady(); } }; }; diff --git a/src/server/scripts/Kalimdor/Maraudon/boss_noxxion.cpp b/src/server/scripts/Kalimdor/Maraudon/boss_noxxion.cpp index 2884f62262d..cfca3f58c3c 100644 --- a/src/server/scripts/Kalimdor/Maraudon/boss_noxxion.cpp +++ b/src/server/scripts/Kalimdor/Maraudon/boss_noxxion.cpp @@ -137,8 +137,6 @@ public: AddsTimer = 40000; } else AddsTimer -= diff; - - DoMeleeAttackIfReady(); } }; }; diff --git a/src/server/scripts/Kalimdor/Maraudon/boss_princess_theradras.cpp b/src/server/scripts/Kalimdor/Maraudon/boss_princess_theradras.cpp index e60e4f7c79a..ba274d9031d 100644 --- a/src/server/scripts/Kalimdor/Maraudon/boss_princess_theradras.cpp +++ b/src/server/scripts/Kalimdor/Maraudon/boss_princess_theradras.cpp @@ -115,8 +115,6 @@ public: ThrashTimer = 18000; } else ThrashTimer -= diff; - - DoMeleeAttackIfReady(); } }; }; diff --git a/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp b/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp index 0721a5c95d8..93b6d7a831c 100644 --- a/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp +++ b/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp @@ -146,8 +146,8 @@ struct boss_onyxia : public BossAI { Initialize(); - if (!IsCombatMovementAllowed()) - SetCombatMovement(true); + SetCombatMovement(true); + me->SetCanMelee(true); _Reset(); me->SetReactState(REACT_AGGRESSIVE); @@ -329,6 +329,7 @@ struct boss_onyxia : public BossAI Phase = PHASE_BREATH; me->SetReactState(REACT_PASSIVE); me->AttackStop(); + me->SetCanMelee(false); me->GetMotionMaster()->MovePoint(10, Phase2Location); return; } @@ -379,7 +380,6 @@ struct boss_onyxia : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - DoMeleeAttackIfReady(); } else { @@ -390,6 +390,7 @@ struct boss_onyxia : public BossAI Talk(SAY_PHASE_3_TRANS); SetCombatMovement(true); IsMoving = false; + me->SetCanMelee(true); Position const pos = me->GetHomePosition(); me->GetMotionMaster()->MovePoint(9, pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ() + 12.0f); events.ScheduleEvent(EVENT_BELLOWING_ROAR, 30s); diff --git a/src/server/scripts/Kalimdor/RazorfenDowns/boss_amnennar_the_coldbringer.cpp b/src/server/scripts/Kalimdor/RazorfenDowns/boss_amnennar_the_coldbringer.cpp index 852dbe9d9d8..fe7d80398af 100644 --- a/src/server/scripts/Kalimdor/RazorfenDowns/boss_amnennar_the_coldbringer.cpp +++ b/src/server/scripts/Kalimdor/RazorfenDowns/boss_amnennar_the_coldbringer.cpp @@ -139,8 +139,6 @@ public: DoCastVictim(SPELL_FROST_SPECTRES); hp30Spectrals = true; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Kalimdor/RazorfenDowns/boss_glutton.cpp b/src/server/scripts/Kalimdor/RazorfenDowns/boss_glutton.cpp index 05ae8bc3a04..f51fd2eb139 100644 --- a/src/server/scripts/Kalimdor/RazorfenDowns/boss_glutton.cpp +++ b/src/server/scripts/Kalimdor/RazorfenDowns/boss_glutton.cpp @@ -86,8 +86,6 @@ public: DoCast(me, SPELL_FRENZY); hp15 = true; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Kalimdor/RazorfenDowns/boss_mordresh_fire_eye.cpp b/src/server/scripts/Kalimdor/RazorfenDowns/boss_mordresh_fire_eye.cpp index 07567285467..1fa6bd42c78 100644 --- a/src/server/scripts/Kalimdor/RazorfenDowns/boss_mordresh_fire_eye.cpp +++ b/src/server/scripts/Kalimdor/RazorfenDowns/boss_mordresh_fire_eye.cpp @@ -123,7 +123,6 @@ public: if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Kalimdor/RazorfenDowns/boss_tuten_kash.cpp b/src/server/scripts/Kalimdor/RazorfenDowns/boss_tuten_kash.cpp index 909085c2a7b..8e214e35555 100644 --- a/src/server/scripts/Kalimdor/RazorfenDowns/boss_tuten_kash.cpp +++ b/src/server/scripts/Kalimdor/RazorfenDowns/boss_tuten_kash.cpp @@ -94,7 +94,6 @@ public: if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.cpp b/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.cpp index 44ca79c2765..3bb531f2d96 100644 --- a/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.cpp +++ b/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.cpp @@ -102,6 +102,7 @@ public: DoCastSelf(SPELL_ARCANE_INTELLECT); channeling = false; + me->SetCanMelee(true); eventProgress = 0; spawnerCount = 0; me->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER); @@ -144,6 +145,7 @@ public: if (type == WAYPOINT_MOTION_TYPE && id == POINT_REACH_IDOL) { channeling = true; + me->SetCanMelee(false); events.ScheduleEvent(EVENT_CHANNEL, 2s); } } @@ -238,8 +240,6 @@ public: break; } } - if (!channeling) - DoMeleeAttackIfReady(); } private: @@ -351,7 +351,6 @@ public: break; } } - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp index d8e0b181547..47341ef8f90 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ayamiss.cpp @@ -173,10 +173,6 @@ class boss_ayamiss : public CreatureScript events.ScheduleEvent(EVENT_TRASH, 3s, 6s); events.CancelEvent(EVENT_POISON_STINGER); } - else - { - DoMeleeAttackIfReady(); - } if (!_enraged && me->GetHealthPct() < 20.0f) { diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp index 153737b1a2f..35f88fa267c 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_buru.cpp @@ -180,8 +180,6 @@ class boss_buru : public CreatureScript me->RemoveAurasDueToSpell(SPELL_THORNS); _phase = PHASE_TRANSFORM; } - - DoMeleeAttackIfReady(); } private: GuidList Eggs; diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_kurinnaxx.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_kurinnaxx.cpp index 0d6d854d46e..ed5c7074c98 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_kurinnaxx.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_kurinnaxx.cpp @@ -128,8 +128,6 @@ class boss_kurinnaxx : public CreatureScript if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: bool _enraged; diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_moam.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_moam.cpp index 15163624293..fe4bbe13c82 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_moam.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_moam.cpp @@ -174,8 +174,6 @@ class boss_moam : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } private: bool _isStonePhase; diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp index af0a2bc069a..edcce05c316 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp @@ -277,8 +277,6 @@ class boss_ossirian : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp index 1f3d62327c8..7c854d10b2a 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_rajaxx.cpp @@ -110,8 +110,6 @@ class boss_rajaxx : public CreatureScript if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: bool enraged; diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp index a077ec95b3c..5443bb1d52f 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_bug_trio.cpp @@ -128,8 +128,6 @@ public: Check_Timer = 2000; } else Check_Timer -=diff; } - - DoMeleeAttackIfReady(); } }; @@ -215,8 +213,6 @@ public: DoCast(me, SPELL_ENRAGE); Enraged = true; } else Charge_Timer -= diff; - - DoMeleeAttackIfReady(); } }; @@ -323,8 +319,6 @@ public: } Check_Timer = 2000; } else Check_Timer -= diff; - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp index ea02ccf3d0e..f9bbc1ce953 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp @@ -1069,8 +1069,6 @@ public: DoCastVictim(SPELL_HAMSTRING); HamstringTimer = 5000; } else HamstringTimer -= diff; - - DoMeleeAttackIfReady(); } }; @@ -1193,8 +1191,6 @@ public: DoCastVictim(SPELL_HAMSTRING); HamstringTimer = 10000; } else HamstringTimer -= diff; - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp index d13b84e3719..22a373357e4 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_fankriss.cpp @@ -203,8 +203,6 @@ public: SpawnHatchlings_Timer = urand(45000, 60000); } else SpawnHatchlings_Timer -= diff; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp index 101f5279a9b..b5c28166947 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_huhuran.cpp @@ -148,8 +148,6 @@ public: DoCast(me, SPELL_BERSERK); Berserk = true; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp index 743dacb9951..617868f13e9 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_ouro.cpp @@ -140,8 +140,6 @@ public: Submerged = false; Submerge_Timer = urand(60000, 120000); } else Back_Timer -= diff; - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp index d11116f2441..21d40fc8a47 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp @@ -186,8 +186,6 @@ public: EnragedHard = true; } else EnrageHard_Timer -= diff; } - - DoMeleeAttackIfReady(); } } }; @@ -308,8 +306,6 @@ public: AggroReset_Timer = urand(30000, 40000); } else AggroResetEnd_Timer -= diff; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp index 725d8678ea1..7248c1ca99a 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp @@ -191,10 +191,7 @@ class boss_skeram : public CreatureScript } if (me->IsWithinMeleeRange(me->GetVictim())) - { events.RescheduleEvent(EVENT_EARTH_SHOCK, 2s); - DoMeleeAttackIfReady(); - } } private: diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp index 0edfd0e2906..52304194201 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp @@ -468,8 +468,6 @@ public: } else Teleport_Timer -= diff; CheckEnrage(diff); - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp index 279de4a3365..71ae2199134 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp @@ -125,6 +125,7 @@ class boss_viscidus : public CreatureScript _phase = PHASE_GLOB; DoCast(me, SPELL_VISCIDUS_EXPLODE); me->SetVisible(false); + me->SetCanMelee(false); me->RemoveAura(SPELL_TOXIN); me->RemoveAura(SPELL_VISCIDUS_FREEZE); @@ -223,6 +224,7 @@ class boss_viscidus : public CreatureScript _phase = PHASE_FROST; InitSpells(); me->SetVisible(true); + me->SetCanMelee(true); } events.Update(diff); @@ -247,9 +249,6 @@ class boss_viscidus : public CreatureScript break; } } - - if (_phase != PHASE_GLOB) - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Kalimdor/ZulFarrak/boss_zum_rah.cpp b/src/server/scripts/Kalimdor/ZulFarrak/boss_zum_rah.cpp index 14113e37fe2..5f37e01f9f7 100644 --- a/src/server/scripts/Kalimdor/ZulFarrak/boss_zum_rah.cpp +++ b/src/server/scripts/Kalimdor/ZulFarrak/boss_zum_rah.cpp @@ -136,8 +136,6 @@ public: _heal30 = true; events.ScheduleEvent(EVENT_HEALING_WAVE, 3s); } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp b/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp index e4584437b48..ec96631ceb3 100644 --- a/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp +++ b/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp @@ -147,8 +147,6 @@ public: } else Revenge_Timer -= diff; - - DoMeleeAttackIfReady(); } void DoAction(int32 /*param*/) override @@ -327,7 +325,6 @@ public: else { me->SetSheath(SHEATH_STATE_MELEE); - DoMeleeAttackIfReady(); } } diff --git a/src/server/scripts/Kalimdor/zone_ashenvale.cpp b/src/server/scripts/Kalimdor/zone_ashenvale.cpp index 0193995fcf7..b0a346e1997 100644 --- a/src/server/scripts/Kalimdor/zone_ashenvale.cpp +++ b/src/server/scripts/Kalimdor/zone_ashenvale.cpp @@ -323,7 +323,6 @@ public: } return; } - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp b/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp index e29c47b3709..3931703e223 100644 --- a/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp +++ b/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp @@ -257,8 +257,6 @@ public: DoCastVictim(SPELL_DYNAMITE); DynamiteTimer = 8000; } else DynamiteTimer -= diff; - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp b/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp index 79057902202..f4914131547 100644 --- a/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp +++ b/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp @@ -235,8 +235,6 @@ public: break; } } - - DoMeleeAttackIfReady(); } void DoAction(int32 param) override @@ -391,8 +389,6 @@ public: break; } } - - DoMeleeAttackIfReady(); } if (HasEscortState(STATE_ESCORT_NONE)) diff --git a/src/server/scripts/Kalimdor/zone_durotar.cpp b/src/server/scripts/Kalimdor/zone_durotar.cpp index 09abff2baf3..75e0e2e8643 100644 --- a/src/server/scripts/Kalimdor/zone_durotar.cpp +++ b/src/server/scripts/Kalimdor/zone_durotar.cpp @@ -109,7 +109,6 @@ public: RebuffTimer -= diff; if (!UpdateVictim()) return; - DoMeleeAttackIfReady(); } }; }; diff --git a/src/server/scripts/Kalimdor/zone_felwood.cpp b/src/server/scripts/Kalimdor/zone_felwood.cpp index 64b04472dad..07a93852790 100644 --- a/src/server/scripts/Kalimdor/zone_felwood.cpp +++ b/src/server/scripts/Kalimdor/zone_felwood.cpp @@ -95,7 +95,6 @@ public: break; } } - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Kalimdor/zone_silithus.cpp b/src/server/scripts/Kalimdor/zone_silithus.cpp index e88c3a73bd3..9981e5267f5 100644 --- a/src/server/scripts/Kalimdor/zone_silithus.cpp +++ b/src/server/scripts/Kalimdor/zone_silithus.cpp @@ -774,8 +774,6 @@ public: hasTarget = false; return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Kalimdor/zone_tanaris.cpp b/src/server/scripts/Kalimdor/zone_tanaris.cpp index 7e97a7ee392..cb91363902a 100644 --- a/src/server/scripts/Kalimdor/zone_tanaris.cpp +++ b/src/server/scripts/Kalimdor/zone_tanaris.cpp @@ -174,8 +174,6 @@ public: return; } - - DoMeleeAttackIfReady(); } void OnQuestAccept(Player* player, Quest const* quest) override diff --git a/src/server/scripts/Kalimdor/zone_the_barrens.cpp b/src/server/scripts/Kalimdor/zone_the_barrens.cpp index 9895a06c7eb..ee18c98607a 100644 --- a/src/server/scripts/Kalimdor/zone_the_barrens.cpp +++ b/src/server/scripts/Kalimdor/zone_the_barrens.cpp @@ -119,8 +119,6 @@ public: if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); } void ReceiveEmote(Player* /*player*/, uint32 emote) override @@ -458,10 +456,7 @@ public: void UpdateEscortAI(uint32 Diff) override { if (UpdateVictim()) - { - DoMeleeAttackIfReady(); return; - } if (!IsPostEvent) return; diff --git a/src/server/scripts/Kalimdor/zone_thunder_bluff.cpp b/src/server/scripts/Kalimdor/zone_thunder_bluff.cpp index f6fd975dc62..e4f05fb633b 100644 --- a/src/server/scripts/Kalimdor/zone_thunder_bluff.cpp +++ b/src/server/scripts/Kalimdor/zone_thunder_bluff.cpp @@ -124,8 +124,6 @@ public: DoCastVictim(SPELL_CLEAVE); CleaveTimer = 7000; } else CleaveTimer -= diff; - - DoMeleeAttackIfReady(); } bool OnGossipSelect(Player* player, uint32 /*menuId*/, uint32 gossipListId) override diff --git a/src/server/scripts/Maelstrom/Stonecore/boss_corborus.cpp b/src/server/scripts/Maelstrom/Stonecore/boss_corborus.cpp index 98e2714df17..596d9a397fc 100644 --- a/src/server/scripts/Maelstrom/Stonecore/boss_corborus.cpp +++ b/src/server/scripts/Maelstrom/Stonecore/boss_corborus.cpp @@ -228,8 +228,6 @@ class boss_corborus : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } void JustSummoned(Creature* summon) override @@ -303,8 +301,6 @@ class npc_rock_borer : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Maelstrom/Stonecore/boss_high_priestess_azil.cpp b/src/server/scripts/Maelstrom/Stonecore/boss_high_priestess_azil.cpp index 05f40e1cc38..17289d91586 100644 --- a/src/server/scripts/Maelstrom/Stonecore/boss_high_priestess_azil.cpp +++ b/src/server/scripts/Maelstrom/Stonecore/boss_high_priestess_azil.cpp @@ -292,8 +292,6 @@ class boss_high_priestess_azil : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Maelstrom/Stonecore/boss_ozruk.cpp b/src/server/scripts/Maelstrom/Stonecore/boss_ozruk.cpp index c028cd99b47..53ed9b44049 100644 --- a/src/server/scripts/Maelstrom/Stonecore/boss_ozruk.cpp +++ b/src/server/scripts/Maelstrom/Stonecore/boss_ozruk.cpp @@ -174,8 +174,6 @@ class boss_ozruk : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Maelstrom/Stonecore/boss_slabhide.cpp b/src/server/scripts/Maelstrom/Stonecore/boss_slabhide.cpp index aee7aa6352b..0f1c5552224 100644 --- a/src/server/scripts/Maelstrom/Stonecore/boss_slabhide.cpp +++ b/src/server/scripts/Maelstrom/Stonecore/boss_slabhide.cpp @@ -284,8 +284,6 @@ class boss_slabhide : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Maelstrom/Stonecore/stonecore.cpp b/src/server/scripts/Maelstrom/Stonecore/stonecore.cpp index db0a43b6f8c..8a41d69d973 100644 --- a/src/server/scripts/Maelstrom/Stonecore/stonecore.cpp +++ b/src/server/scripts/Maelstrom/Stonecore/stonecore.cpp @@ -108,6 +108,7 @@ class npc_sc_millhouse_manastorm : public CreatureScript _instance(creature->GetInstanceScript()) { events.SetPhase(PHASE_MILLHOUSE_GROUP_1); + me->SetCanMelee(false); // DoSpellAttackIfReady } void ScheduleEvents() 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 diff --git a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp index 456ceb98b0a..297caf347f0 100644 --- a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp +++ b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp @@ -189,8 +189,6 @@ struct boss_exarch_maladaar : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: @@ -337,10 +335,7 @@ struct npc_stolen_soul : public ScriptedAI if (!UpdateVictim()) return; - _scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + _scheduler.Update(diff); } private: diff --git a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_shirrak_the_dead_watcher.cpp b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_shirrak_the_dead_watcher.cpp index e1bb2798032..ab70b02cb57 100644 --- a/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_shirrak_the_dead_watcher.cpp +++ b/src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_shirrak_the_dead_watcher.cpp @@ -150,8 +150,6 @@ struct boss_shirrak_the_dead_watcher : public BossAI } FocusFire_Timer = 15000 + (rand32() % 5000); } else FocusFire_Timer -= diff; - - DoMeleeAttackIfReady(); } }; @@ -192,8 +190,6 @@ struct npc_focus_fire : public ScriptedAI FieryBlast_Timer = 1000; } else FieryBlast_Timer -= diff; - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp b/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp index c42902b6085..2206ca223df 100644 --- a/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp +++ b/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp @@ -332,8 +332,6 @@ struct npc_yor : public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_anzu.cpp b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_anzu.cpp index db3559a32de..dc75a3d01c0 100644 --- a/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_anzu.cpp +++ b/src/server/scripts/Outland/Auchindoun/SethekkHalls/boss_anzu.cpp @@ -151,8 +151,6 @@ struct boss_anzu : public BossAI break; } } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_ambassador_hellmaw.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_ambassador_hellmaw.cpp index 813d5ce4e46..7638c6f7e1f 100644 --- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_ambassador_hellmaw.cpp +++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_ambassador_hellmaw.cpp @@ -164,8 +164,6 @@ struct boss_ambassador_hellmaw : public EscortAI break; } } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_blackheart_the_inciter.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_blackheart_the_inciter.cpp index d7d3c6245c7..05b01283d1d 100644 --- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_blackheart_the_inciter.cpp +++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_blackheart_the_inciter.cpp @@ -163,8 +163,6 @@ struct boss_blackheart_the_inciter : public BossAI if (me->HasReactState(REACT_PASSIVE) || me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } void WaypointReached(uint32 waypointId, uint32 pathId) override diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp index de1d1107cd2..8bcaf3d5faf 100644 --- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp +++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_grandmaster_vorpil.cpp @@ -166,8 +166,6 @@ struct boss_grandmaster_vorpil : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp index 47655500d92..8165adca845 100644 --- a/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp +++ b/src/server/scripts/Outland/Auchindoun/ShadowLabyrinth/boss_murmur.cpp @@ -148,8 +148,6 @@ struct boss_murmur : public BossAI if (!me->IsWithinMeleeRange(me->GetVictim())) me->GetThreatManager().ResetThreat(me->GetVictim()); - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Outland/BlackTemple/black_temple.cpp b/src/server/scripts/Outland/BlackTemple/black_temple.cpp index c7af1be4c76..b8cad82d8a7 100644 --- a/src/server/scripts/Outland/BlackTemple/black_temple.cpp +++ b/src/server/scripts/Outland/BlackTemple/black_temple.cpp @@ -167,7 +167,6 @@ struct npc_wrathbone_flayer : public ScriptedAI break; } } - DoMeleeAttackIfReady(); } private: @@ -225,8 +224,6 @@ struct npc_angered_soul_fragment : public ScriptedAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Outland/BlackTemple/boss_gurtogg_bloodboil.cpp b/src/server/scripts/Outland/BlackTemple/boss_gurtogg_bloodboil.cpp index a8da948a5aa..cb73cfbb607 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_gurtogg_bloodboil.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_gurtogg_bloodboil.cpp @@ -263,8 +263,6 @@ struct boss_gurtogg_bloodboil : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } void ChangePhase() diff --git a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp index ed26aa1867b..7256342ef56 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp @@ -1037,8 +1037,6 @@ struct boss_illidan_stormrage : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: @@ -1359,8 +1357,6 @@ struct npc_akama_illidan : public ScriptedAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: @@ -1415,8 +1411,6 @@ struct npc_parasitic_shadowfiend : public ScriptedAI if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); } private: @@ -1531,8 +1525,6 @@ struct npc_flame_of_azzinoth : public ScriptedAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } void JustDied(Unit* /*killer*/) override @@ -1753,8 +1745,6 @@ struct npc_maiev : public ScriptedAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Outland/BlackTemple/boss_illidari_council.cpp b/src/server/scripts/Outland/BlackTemple/boss_illidari_council.cpp index ae4fa8522c9..d4e04e9b8c5 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_illidari_council.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_illidari_council.cpp @@ -450,7 +450,10 @@ private: struct boss_lady_malande : public IllidariCouncilBossAI { - boss_lady_malande(Creature* creature) : IllidariCouncilBossAI(creature, DATA_LADY_MALANDE) { } + boss_lady_malande(Creature* creature) : IllidariCouncilBossAI(creature, DATA_LADY_MALANDE) + { + me->SetCanMelee(false); // DoSpellAttackIfReady + } void ScheduleEvents() override { diff --git a/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp b/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp index 2deea39af21..049ecbb80bb 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp @@ -376,8 +376,6 @@ struct boss_essence_of_suffering : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: bool _dead; @@ -481,8 +479,6 @@ struct boss_essence_of_desire : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: bool _dead; @@ -579,8 +575,6 @@ struct boss_essence_of_anger : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: @@ -641,8 +635,6 @@ struct npc_enslaved_soul : public ScriptedAI return; _scheduler.Update(diff); - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp index e1c9b76bc48..6ba5bebf0d8 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp @@ -337,8 +337,6 @@ struct boss_shade_of_akama : public BossAI break; } } - - DoMeleeAttackIfReady(); } private: @@ -518,8 +516,6 @@ struct npc_akama_shade : public ScriptedAI { if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); } } @@ -757,8 +753,6 @@ struct npc_ashtongue_sorcerer : public ScriptedAI if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); } private: @@ -825,8 +819,6 @@ struct npc_ashtongue_defender : public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } private: @@ -883,8 +875,6 @@ struct npc_ashtongue_rogue : public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } private: @@ -941,8 +931,6 @@ struct npc_ashtongue_elementalist : public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } private: @@ -1029,8 +1017,6 @@ struct npc_ashtongue_spiritbinder : public ScriptedAI if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp b/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp index 366848cb07c..fa05e56fe88 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp @@ -187,8 +187,6 @@ struct boss_teron_gorefiend : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; @@ -272,10 +270,7 @@ struct npc_shadowy_construct : public ScriptedAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; - _scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + _scheduler.Update(diff); } void SelectNewTarget() diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_fathomlord_karathress.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_fathomlord_karathress.cpp index 3eb49532f94..ec0a2031a71 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_fathomlord_karathress.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_fathomlord_karathress.cpp @@ -274,8 +274,6 @@ struct boss_fathomlord_karathress : public BossAI Talk(SAY_GAIN_BLESSING); } } - - DoMeleeAttackIfReady(); } }; @@ -406,8 +404,6 @@ struct boss_fathomguard_sharkkis : public ScriptedAI } } } else Pet_Timer -= diff; - - DoMeleeAttackIfReady(); } }; @@ -516,8 +512,6 @@ struct boss_fathomguard_tidalvess : public ScriptedAI } else Earthbind_Timer -= diff; - - DoMeleeAttackIfReady(); } }; @@ -630,8 +624,6 @@ struct boss_fathomguard_caribdis : public ScriptedAI } else Heal_Timer -= diff; - - DoMeleeAttackIfReady(); } Unit* selectAdvisorUnit() diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_hydross_the_unstable.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_hydross_the_unstable.cpp index f22d7fe791a..bca8c87145f 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_hydross_the_unstable.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_hydross_the_unstable.cpp @@ -372,8 +372,6 @@ struct boss_hydross_the_unstable : public BossAI DoCast(me, SPELL_ENRAGE); EnrageTimer = 60000; } else EnrageTimer -= diff; - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lady_vashj.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lady_vashj.cpp index 6cec120340f..8b7b09e835d 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lady_vashj.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lady_vashj.cpp @@ -212,6 +212,7 @@ struct boss_lady_vashj : public BossAI _Reset(); me->SetCorpseDelay(1000*60*60); + me->SetCanMelee(true); } // Called when a tainted elemental dies @@ -380,6 +381,7 @@ struct boss_lady_vashj : public BossAI { // Phase 2 begins when Vashj hits 70%. She will run to the middle of her platform and surround herself in a shield making her invulerable. Phase = 2; + me->SetCanMelee(false); me->GetMotionMaster()->Clear(); DoTeleportTo(MIDDLE_X, MIDDLE_Y, MIDDLE_Z); @@ -413,9 +415,6 @@ struct boss_lady_vashj : public BossAI } else SummonSporebatTimer -= diff; } - // Melee attack - DoMeleeAttackIfReady(); - // CheckTimer - used to check if somebody is in melee range if (CheckTimer <= diff) { @@ -517,6 +516,8 @@ struct boss_lady_vashj : public BossAI me->RemoveAurasDueToSpell(SPELL_MAGIC_BARRIER); + me->SetCanMelee(true); + Talk(SAY_PHASE3); Phase = 3; @@ -682,7 +683,6 @@ struct npc_toxic_sporebat : public ScriptedAI { Initialize(); instance = creature->GetInstanceScript(); - EnterEvadeMode(); } void Initialize() diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp index 10bdf3bc631..4db5d93b6e6 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp @@ -166,8 +166,6 @@ struct npc_inner_demon : public ScriptedAI DoCastVictim(SPELL_SHADOWBOLT, false); ShadowBolt_Timer = 10000; } else ShadowBolt_Timer -= diff; - - DoMeleeAttackIfReady(); } }; @@ -229,6 +227,7 @@ struct boss_leotheras_the_blind : public BossAI me->SetDisplayId(MODEL_NIGHTELF); me->SetVirtualItem(0, 0); me->SetVirtualItem(1, 0); + me->SetCanMelee(true); DoCast(me, SPELL_DUAL_WIELD, true); me->SetCorpseDelay(1000*60*60); _Reset(); @@ -472,12 +471,12 @@ struct boss_leotheras_the_blind : public BossAI Talk(SAY_SWITCH_TO_DEMON); me->SetVirtualItem(0, 0); me->SetVirtualItem(1, 0); + me->SetCanMelee(false); DemonForm = true; NeedThreatReset = true; SwitchToDemon_Timer = 45000; } else SwitchToDemon_Timer -= diff; } - DoMeleeAttackIfReady(); } else { @@ -543,6 +542,7 @@ struct boss_leotheras_the_blind : public BossAI //switch to nightelf form me->SetDisplayId(MODEL_NIGHTELF); me->LoadEquipment(); + me->SetCanMelee(true); CastConsumingMadness(); DespawnDemon(); @@ -757,7 +757,6 @@ struct npc_greyheart_spellbinder : public ScriptedAI } Earthshock_Timer = urand(8000, 15000); } else Earthshock_Timer -= diff; - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp index 76666bd0141..a89ec5c1ec0 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lurker_below.cpp @@ -140,6 +140,7 @@ struct boss_the_lurker_below : public BossAI me->SetVisible(false); // we start invis under water, submerged me->SetUninteractible(true); me->SetImmuneToPC(true); + me->SetCanMelee(true); } void JustDied(Unit* /*killer*/) override @@ -175,6 +176,7 @@ struct boss_the_lurker_below : public BossAI if (Submerged) { me->SetVisible(true); + me->SetCanMelee(true); Submerged = false; WaitTimer2 = 500; } @@ -213,6 +215,7 @@ struct boss_the_lurker_below : public BossAI if (PhaseTimer <= diff) { me->InterruptNonMeleeSpells(false); + me->SetCanMelee(false); DoCast(me, SPELL_SUBMERGE); PhaseTimer = 60000; // 60secs submerged Submerged = true; @@ -311,9 +314,6 @@ struct boss_the_lurker_below : public BossAI if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); - } else // submerged { @@ -324,6 +324,7 @@ struct boss_the_lurker_below : public BossAI me->RemoveAllAuras(); me->SetImmuneToPC(false); me->SetEmoteState(EMOTE_ONESHOT_NONE); + me->SetCanMelee(true); DoCast(me, SPELL_EMERGE, true); Spawned = false; SpoutTimer = 3000; // directly cast Spout after emerging! diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_morogrim_tidewalker.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_morogrim_tidewalker.cpp index f3273232950..24ee3e052b0 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_morogrim_tidewalker.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_morogrim_tidewalker.cpp @@ -266,8 +266,6 @@ struct boss_morogrim_tidewalker : public BossAI WateryGlobules_Timer = 25000; } else WateryGlobules_Timer -= diff; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_hydromancer_thespia.cpp b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_hydromancer_thespia.cpp index ce61bc7e4bc..20e0ec3acf9 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_hydromancer_thespia.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_hydromancer_thespia.cpp @@ -165,8 +165,6 @@ class npc_coilfang_waterelemental : public CreatureScript break; } } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_mekgineer_steamrigger.cpp b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_mekgineer_steamrigger.cpp index c28fab71823..b338d95da56 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_mekgineer_steamrigger.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_mekgineer_steamrigger.cpp @@ -184,8 +184,6 @@ public: Summon25 = true; } } - - DoMeleeAttackIfReady(); } }; @@ -264,8 +262,6 @@ public: if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_warlord_kalithresh.cpp b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_warlord_kalithresh.cpp index a964059daf0..f48f1c5c4f1 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_warlord_kalithresh.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SteamVault/boss_warlord_kalithresh.cpp @@ -195,8 +195,6 @@ public: Impale_Timer = 7500 + rand32() % 5000; } else Impale_Timer -= diff; - - DoMeleeAttackIfReady(); } }; }; diff --git a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_mennu_the_betrayer.cpp b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_mennu_the_betrayer.cpp index 715472ca760..0cfddfccd73 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_mennu_the_betrayer.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_mennu_the_betrayer.cpp @@ -122,8 +122,6 @@ struct boss_mennu_the_betrayer : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_quagmirran.cpp b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_quagmirran.cpp index 197d2a73332..81d8c350087 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_quagmirran.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_quagmirran.cpp @@ -105,8 +105,6 @@ struct boss_quagmirran : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_rokmar_the_crackler.cpp b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_rokmar_the_crackler.cpp index 45768c64463..90e4592ae8f 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_rokmar_the_crackler.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/TheSlavePens/boss_rokmar_the_crackler.cpp @@ -113,8 +113,6 @@ struct boss_rokmar_the_crackler : public BossAI DoCast(me, SPELL_FRENZY); rokmarFrenzy = true; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_hungarfen.cpp b/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_hungarfen.cpp index 916783f03e3..9bea2aba958 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_hungarfen.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_hungarfen.cpp @@ -89,10 +89,7 @@ struct boss_hungarfen : public BossAI if (!UpdateVictim()) return; - _scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + _scheduler.Update(diff); if (!HealthAbovePct(20) && !_roared) { diff --git a/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_the_black_stalker.cpp b/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_the_black_stalker.cpp index 3aa3f7c4541..14542c3a1dd 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_the_black_stalker.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/TheUnderbog/boss_the_black_stalker.cpp @@ -133,8 +133,6 @@ struct boss_the_black_stalker : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } void WaypointReached(uint32 waypointId, uint32 pathId) override diff --git a/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp b/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp index d2a3aaa3ed6..8dfa2b32769 100644 --- a/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp +++ b/src/server/scripts/Outland/GruulsLair/boss_gruul.cpp @@ -257,8 +257,6 @@ class boss_gruul : public CreatureScript } else m_uiGroundSlamTimer -= diff; - - DoMeleeAttackIfReady(); } } }; diff --git a/src/server/scripts/Outland/GruulsLair/boss_high_king_maulgar.cpp b/src/server/scripts/Outland/GruulsLair/boss_high_king_maulgar.cpp index 78c3e190c50..ea41b09f83c 100644 --- a/src/server/scripts/Outland/GruulsLair/boss_high_king_maulgar.cpp +++ b/src/server/scripts/Outland/GruulsLair/boss_high_king_maulgar.cpp @@ -195,8 +195,6 @@ public: Roar_Timer = 40000 + (rand32() % 10000); } else Roar_Timer -= diff; } - - DoMeleeAttackIfReady(); } }; @@ -294,8 +292,6 @@ public: DoCast(target, SPELL_DEATH_COIL); DeathCoil_Timer = 20000; } else DeathCoil_Timer -= diff; - - DoMeleeAttackIfReady(); } }; @@ -389,8 +385,6 @@ public: DoCastVictim(SPELL_ARCANE_EXPLOSION); ArcaneExplosion_Timer = 30000; } else ArcaneExplosion_Timer -= diff; - - DoMeleeAttackIfReady(); } }; @@ -472,8 +466,6 @@ public: DoCast(me, SPELL_PRAYER_OH); PrayerofHealing_Timer = urand(35000, 50000); } else PrayerofHealing_Timer -= diff; - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp index 2c281a65d43..c656675f034 100644 --- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp @@ -194,8 +194,6 @@ struct BroggokPrisionersAI : public ScriptedAI if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); } protected: diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp index 5cd96d0a79b..ffc293cc209 100644 --- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp @@ -244,8 +244,6 @@ class boss_kelidan_the_breaker : public CreatureScript } else BurningNova_Timer -=diff; - - DoMeleeAttackIfReady(); } }; @@ -356,8 +354,6 @@ class npc_shadowmoon_channeler : public CreatureScript } else ShadowBolt_Timer -=diff; - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_omor_the_unscarred.cpp b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_omor_the_unscarred.cpp index 266cd8dfbee..b51703267d0 100644 --- a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_omor_the_unscarred.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_omor_the_unscarred.cpp @@ -211,8 +211,6 @@ class boss_omor_the_unscarred : public CreatureScript } else Shadowbolt_Timer -= diff; - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp index 02f5fb96ccd..09cb9d4b9e6 100644 --- a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp @@ -182,8 +182,6 @@ class boss_nazan : public CreatureScript else BellowingRoar_Timer -= diff; } - - DoMeleeAttackIfReady(); } } @@ -273,8 +271,6 @@ class boss_vazruden : public CreatureScript } else Revenge_Timer -= diff; - - DoMeleeAttackIfReady(); } private: @@ -515,8 +511,6 @@ class npc_hellfire_sentry : public CreatureScript } else KidneyShot_Timer -= diff; - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_watchkeeper_gargolmar.cpp b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_watchkeeper_gargolmar.cpp index 778855df653..a2e73cc357a 100644 --- a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_watchkeeper_gargolmar.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_watchkeeper_gargolmar.cpp @@ -162,8 +162,6 @@ class boss_watchkeeper_gargolmar : public CreatureScript yelledForHeal = true; } } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp index b6f9ffbc92d..1ca650aefd9 100644 --- a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp @@ -290,8 +290,6 @@ struct boss_magtheridon : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: @@ -399,8 +397,6 @@ struct npc_hellfire_channeler : public ScriptedAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp index 24529fbef8a..3d190ef247a 100644 --- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_nethekurse.cpp @@ -111,6 +111,7 @@ class boss_grand_warlock_nethekurse : public CreatureScript { _Reset(); me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE); + me->SetCanMelee(true); Initialize(); } @@ -273,9 +274,10 @@ class boss_grand_warlock_nethekurse : public CreatureScript DeathCoil_Timer -= diff; if (!HealthAbovePct(20)) + { Phase = true; - - DoMeleeAttackIfReady(); + me->SetCanMelee(false); + } } } @@ -353,8 +355,6 @@ class npc_fel_orc_convert : public CreatureScript DoCastVictim(SPELL_HEMORRHAGE); events.ScheduleEvent(EVENT_HEMORRHAGE, 15s); } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warbringer_omrogg.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warbringer_omrogg.cpp index 45d8f4d7852..854f8ec4eb7 100644 --- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warbringer_omrogg.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warbringer_omrogg.cpp @@ -367,8 +367,6 @@ class boss_warbringer_omrogg : public CreatureScript } else ThunderClap_Timer -= diff; - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warchief_kargath_bladefist.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warchief_kargath_bladefist.cpp index eced2630e10..c8c63e92cb3 100644 --- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warchief_kargath_bladefist.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warchief_kargath_bladefist.cpp @@ -299,8 +299,6 @@ class boss_warchief_kargath_bladefist : public CreatureScript } else Summon_Assistant_Timer -= diff; - - DoMeleeAttackIfReady(); } if (resetcheck_timer <= diff) diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.cpp index 3fca93a1a44..027dcc85260 100644 --- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.cpp @@ -170,8 +170,6 @@ class boss_shattered_executioner : public CreatureScript } else cleaveTimer -= diff; - - DoMeleeAttackIfReady(); } private: uint32 cleaveTimer; diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp index aa42fe49dfa..26e5071f66f 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_alar.cpp @@ -442,19 +442,9 @@ struct boss_alar : public BossAI FlamePatch_Timer -= diff; } - DoMeleeAttackIfReady(); - } - - void DoMeleeAttackIfReady() - { if (me->isAttackReady() && !me->IsNonMeleeSpellCast(false)) { - if (me->IsWithinMeleeRange(me->GetVictim())) - { - me->AttackerStateUpdate(me->GetVictim()); - me->resetAttackTimer(); - } - else + if (!me->IsWithinMeleeRange(me->GetVictim())) { if (Unit* target = me->SelectNearestTargetInAttackDistance(5)) AttackStart(target); @@ -533,8 +523,6 @@ struct npc_ember_of_alar : public ScriptedAI me->KillSelf(); //me->SetVisibility(VISIBILITY_OFF); } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp index 806d379c0fc..4ae564a5b3c 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_astromancer.cpp @@ -395,8 +395,6 @@ struct boss_high_astromancer_solarian : public BossAI me->SetArmor(WV_ARMOR, 0); me->SetDisplayId(MODEL_VOIDWALKER); } - - DoMeleeAttackIfReady(); } }; @@ -470,8 +468,6 @@ struct npc_solarium_priest : public ScriptedAI } else aoesilenceTimer -= diff; - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp index 4a9c11101c7..eb7c25db955 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp @@ -745,9 +745,6 @@ struct boss_kaelthas : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING) && !me->FindCurrentSpellBySpellId(SPELL_KAEL_GAINING_POWER) && !me->FindCurrentSpellBySpellId(SPELL_KAEL_STUNNED)) return; } - - if (events.IsInPhase(PHASE_COMBAT)) - DoMeleeAttackIfReady(); } private: uint8 _advisorCounter; @@ -966,8 +963,6 @@ struct boss_thaladred_the_darkener : public advisorbase_ai } else PsychicBlow_Timer -= diff; - - DoMeleeAttackIfReady(); } }; @@ -1019,8 +1014,6 @@ struct boss_lord_sanguinar : public advisorbase_ai } else Fear_Timer -= diff; - - DoMeleeAttackIfReady(); } }; @@ -1202,8 +1195,6 @@ struct boss_master_engineer_telonicus : public advisorbase_ai } else RemoteToy_Timer -= diff; - - DoMeleeAttackIfReady(); } }; @@ -1265,8 +1256,6 @@ struct npc_phoenix_tk : public ScriptedAI } else Cycle_Timer -= diff; - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp index b15e165bbe2..75d03ce798d 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_void_reaver.cpp @@ -139,8 +139,6 @@ struct boss_void_reaver : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_gyrokill.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_gyrokill.cpp index 1697cf13df2..a4af7fc1d50 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_gyrokill.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_gyrokill.cpp @@ -108,8 +108,6 @@ struct boss_gatewatcher_gyrokill : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp index 8d09645b02a..770ce2090e8 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp @@ -114,8 +114,6 @@ struct boss_gatewatcher_iron_hand : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_mechano_lord_capacitus.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_mechano_lord_capacitus.cpp index cc13773a290..1da49ecd87f 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_mechano_lord_capacitus.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_mechano_lord_capacitus.cpp @@ -152,8 +152,6 @@ struct boss_mechano_lord_capacitus : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp index 3ca064382e3..9d4325e080d 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp @@ -134,8 +134,6 @@ struct boss_nethermancer_sepethrea : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; @@ -193,8 +191,6 @@ struct npc_raging_flames : public ScriptedAI return; _scheduler.Update(diff); - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp index 11dbd778ab8..779a8a411da 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp @@ -151,8 +151,6 @@ struct boss_pathaleon_the_calculator : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; @@ -220,7 +218,6 @@ struct npc_nether_wraith : public ScriptedAI else Die_Timer -= diff; } - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.cpp b/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.cpp index 765d655a6c9..d8b433b8c3b 100644 --- a/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.cpp +++ b/src/server/scripts/Outland/TempestKeep/arcatraz/arcatraz.cpp @@ -212,8 +212,6 @@ struct npc_millhouse_manastorm : public ScriptedAI } else Fireball_Timer -=diff; - - DoMeleeAttackIfReady(); } }; /*##### diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_dalliah_the_doomsayer.cpp b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_dalliah_the_doomsayer.cpp index d445cd2b7e8..cc988250d5d 100644 --- a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_dalliah_the_doomsayer.cpp +++ b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_dalliah_the_doomsayer.cpp @@ -178,8 +178,6 @@ struct boss_dalliah_the_doomsayer : public BossAI soccothrates->AI()->Talk(SAY_DALLIAH_25_PERCENT); soccothratesTaunt = true; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp index 62aec2b0374..69d58090969 100644 --- a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp +++ b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_harbinger_skyriss.cpp @@ -263,7 +263,6 @@ struct boss_harbinger_skyriss : public BossAI else ManaBurn_Timer -=diff; } - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_wrath_scryer_soccothrates.cpp b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_wrath_scryer_soccothrates.cpp index ab0c7473639..ba95dd2eb50 100644 --- a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_wrath_scryer_soccothrates.cpp +++ b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_wrath_scryer_soccothrates.cpp @@ -271,8 +271,6 @@ struct boss_wrath_scryer_soccothrates : public BossAI dalliah->AI()->Talk(SAY_SOCCOTHRATES_25_PERCENT); dalliahTaunt = true; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_zereketh_the_unbound.cpp b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_zereketh_the_unbound.cpp index 9c27ae56381..07530c273af 100644 --- a/src/server/scripts/Outland/TempestKeep/arcatraz/boss_zereketh_the_unbound.cpp +++ b/src/server/scripts/Outland/TempestKeep/arcatraz/boss_zereketh_the_unbound.cpp @@ -106,8 +106,6 @@ struct boss_zereketh_the_unbound : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Outland/TempestKeep/botanica/boss_commander_sarannis.cpp b/src/server/scripts/Outland/TempestKeep/botanica/boss_commander_sarannis.cpp index 896df533363..3cb7030f1bd 100644 --- a/src/server/scripts/Outland/TempestKeep/botanica/boss_commander_sarannis.cpp +++ b/src/server/scripts/Outland/TempestKeep/botanica/boss_commander_sarannis.cpp @@ -143,8 +143,6 @@ struct boss_commander_sarannis : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Outland/TempestKeep/botanica/boss_high_botanist_freywinn.cpp b/src/server/scripts/Outland/TempestKeep/botanica/boss_high_botanist_freywinn.cpp index aedc8509b6e..3fa2617f90b 100644 --- a/src/server/scripts/Outland/TempestKeep/botanica/boss_high_botanist_freywinn.cpp +++ b/src/server/scripts/Outland/TempestKeep/botanica/boss_high_botanist_freywinn.cpp @@ -138,8 +138,6 @@ struct boss_high_botanist_freywinn : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Outland/TempestKeep/botanica/boss_laj.cpp b/src/server/scripts/Outland/TempestKeep/botanica/boss_laj.cpp index 833df956b12..53ecf51cdfc 100644 --- a/src/server/scripts/Outland/TempestKeep/botanica/boss_laj.cpp +++ b/src/server/scripts/Outland/TempestKeep/botanica/boss_laj.cpp @@ -140,8 +140,6 @@ struct boss_laj : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Outland/TempestKeep/botanica/boss_thorngrin_the_tender.cpp b/src/server/scripts/Outland/TempestKeep/botanica/boss_thorngrin_the_tender.cpp index 1af1d6c10cd..ce4d2100ce5 100644 --- a/src/server/scripts/Outland/TempestKeep/botanica/boss_thorngrin_the_tender.cpp +++ b/src/server/scripts/Outland/TempestKeep/botanica/boss_thorngrin_the_tender.cpp @@ -147,8 +147,6 @@ class boss_thorngrin_the_tender : public CreatureScript if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Outland/TempestKeep/botanica/boss_warp_splinter.cpp b/src/server/scripts/Outland/TempestKeep/botanica/boss_warp_splinter.cpp index e4672be695a..65ee3e6d241 100644 --- a/src/server/scripts/Outland/TempestKeep/botanica/boss_warp_splinter.cpp +++ b/src/server/scripts/Outland/TempestKeep/botanica/boss_warp_splinter.cpp @@ -137,8 +137,6 @@ struct boss_warp_splinter : public BossAI if (me->HasUnitState(UNIT_STATE_CASTING)) return; } - - DoMeleeAttackIfReady(); } }; @@ -161,14 +159,6 @@ struct npc_warp_splinter_sapling : public ScriptedAI me->DespawnOrUnsummon(2s); } } - - void UpdateAI(uint32 /*diff*/) override - { - if (!UpdateVictim()) - return; - - DoMeleeAttackIfReady(); - } }; void AddSC_boss_warp_splinter() diff --git a/src/server/scripts/Outland/boss_doomlord_kazzak.cpp b/src/server/scripts/Outland/boss_doomlord_kazzak.cpp index 9d1a56f7dec..769f441e04b 100644 --- a/src/server/scripts/Outland/boss_doomlord_kazzak.cpp +++ b/src/server/scripts/Outland/boss_doomlord_kazzak.cpp @@ -155,8 +155,6 @@ struct boss_doomlord_kazzak : public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Outland/boss_doomwalker.cpp b/src/server/scripts/Outland/boss_doomwalker.cpp index f9b48263ba7..392bc3d5451 100644 --- a/src/server/scripts/Outland/boss_doomwalker.cpp +++ b/src/server/scripts/Outland/boss_doomwalker.cpp @@ -151,7 +151,6 @@ struct boss_doomwalker : public ScriptedAI break; } } - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp index 5b66e7e43cc..729dce5cda6 100644 --- a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp +++ b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp @@ -219,8 +219,6 @@ public: DoCastVictim(SPELL_ARCANE_BLAST); ArcaneBlast_Timer = 2500 + rand32() % 5000; } else ArcaneBlast_Timer -= diff; - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/Outland/zone_hellfire_peninsula.cpp b/src/server/scripts/Outland/zone_hellfire_peninsula.cpp index 3766425e621..beeb737ebf6 100644 --- a/src/server/scripts/Outland/zone_hellfire_peninsula.cpp +++ b/src/server/scripts/Outland/zone_hellfire_peninsula.cpp @@ -610,8 +610,6 @@ public: if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); } bool OnGossipSelect(Player* player, uint32 /*menuId*/, uint32 /*gossipListId*/) override @@ -693,8 +691,6 @@ struct npc_watch_commander_leonus : public ScriptedAI if (!UpdateVictim()) return; - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Outland/zone_nagrand.cpp b/src/server/scripts/Outland/zone_nagrand.cpp index c13395e9adc..fbebecf1b67 100644 --- a/src/server/scripts/Outland/zone_nagrand.cpp +++ b/src/server/scripts/Outland/zone_nagrand.cpp @@ -197,8 +197,6 @@ public: } else FrostShockTimer -= diff; - - DoMeleeAttackIfReady(); } void OnQuestAccept(Player* player, Quest const* quest) override @@ -392,8 +390,6 @@ public: DoCastVictim(SPELL_KUR_FROST_SHOCK); FrostShockTimer = urand(7500, 15000); } else FrostShockTimer -= diff; - - DoMeleeAttackIfReady(); } void OnQuestAccept(Player* player, Quest const* quest) override @@ -465,10 +461,7 @@ public: if (!UpdateVictim()) return; - scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + scheduler.Update(diff); } bool IsBannered() @@ -544,10 +537,7 @@ public: interrupt_cooldown = 0; } - 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/Outland/zone_netherstorm.cpp b/src/server/scripts/Outland/zone_netherstorm.cpp index 631be8101ac..a895d7b345b 100644 --- a/src/server/scripts/Outland/zone_netherstorm.cpp +++ b/src/server/scripts/Outland/zone_netherstorm.cpp @@ -454,8 +454,6 @@ public: me->SetInCombatWith(player); } } // end: support for quest 10190 - - DoMeleeAttackIfReady(); } }; }; diff --git a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp index 3d849c5ce95..b61e5cf87bf 100644 --- a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp +++ b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp @@ -177,14 +177,6 @@ public: } } - void UpdateAI(uint32 /*diff*/) override - { - if (!UpdateVictim()) - return; - - DoMeleeAttackIfReady(); - } - private: ObjectGuid casterGUID; }; @@ -333,8 +325,6 @@ public: } else CastTimer -= diff; - - DoMeleeAttackIfReady(); } }; }; @@ -454,8 +444,6 @@ public: } return; } - - DoMeleeAttackIfReady(); } private: @@ -876,8 +864,6 @@ public: SpellTimer3 = SpawnCast[8].Timer2 + (rand32() % 7 * 1000);//Spell Reflection } else SpellTimer3 -= diff; } - - DoMeleeAttackIfReady(); } void JustDied(Unit* killer) override @@ -1179,8 +1165,6 @@ public: SpellTimer2 = SpawnCast[5].Timer2 + (rand32() % 7 * 13000); } else SpellTimer2 -= diff; } - - DoMeleeAttackIfReady(); } }; }; @@ -1433,11 +1417,9 @@ public: } } - if (me->GetEntry() == NPC_ENRAGED_FIRE_SPIRIT || me->GetEntry() == NPC_ENRAGED_AIR_SPIRIT) - if (HealthBelowPct(35) && !me->GetAura(SPELL_ENRAGE)) - DoCastSelf(SPELL_ENRAGE); - - DoMeleeAttackIfReady(); + if (me->GetEntry() == NPC_ENRAGED_FIRE_SPIRIT || me->GetEntry() == NPC_ENRAGED_AIR_SPIRIT) + if (HealthBelowPct(35) && !me->GetAura(SPELL_ENRAGE)) + DoCastSelf(SPELL_ENRAGE); } void JustDied(Unit* /*killer*/) override diff --git a/src/server/scripts/Outland/zone_terokkar_forest.cpp b/src/server/scripts/Outland/zone_terokkar_forest.cpp index 41e4b00661a..d17045509d5 100644 --- a/src/server/scripts/Outland/zone_terokkar_forest.cpp +++ b/src/server/scripts/Outland/zone_terokkar_forest.cpp @@ -142,8 +142,6 @@ public: DoCast(me, SPELL_PULVERIZE); Pulverize_Timer = 9000; } else Pulverize_Timer -= diff; - - DoMeleeAttackIfReady(); } }; }; diff --git a/src/server/scripts/Pet/pet_hunter.cpp b/src/server/scripts/Pet/pet_hunter.cpp index c0e0758df8b..3de4a911416 100644 --- a/src/server/scripts/Pet/pet_hunter.cpp +++ b/src/server/scripts/Pet/pet_hunter.cpp @@ -115,8 +115,6 @@ struct npc_pet_hunter_snake_trap : public ScriptedAI else _spellTimer -= diff; } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/Pet/pet_shaman.cpp b/src/server/scripts/Pet/pet_shaman.cpp index bb86bb2cc20..d5a4f44f95b 100644 --- a/src/server/scripts/Pet/pet_shaman.cpp +++ b/src/server/scripts/Pet/pet_shaman.cpp @@ -63,8 +63,6 @@ struct npc_pet_shaman_earth_elemental : public ScriptedAI DoCastVictim(SPELL_SHAMAN_ANGEREDEARTH); _events.ScheduleEvent(EVENT_SHAMAN_ANGEREDEARTH, 5s, 20s); } - - DoMeleeAttackIfReady(); } private: @@ -113,8 +111,6 @@ struct npc_pet_shaman_fire_elemental : public ScriptedAI break; } } - - DoMeleeAttackIfReady(); } private: diff --git a/src/server/scripts/World/boss_emerald_dragons.cpp b/src/server/scripts/World/boss_emerald_dragons.cpp index 4e7bee33cb8..351436f7f1a 100644 --- a/src/server/scripts/World/boss_emerald_dragons.cpp +++ b/src/server/scripts/World/boss_emerald_dragons.cpp @@ -156,8 +156,6 @@ struct emerald_dragonAI : public WorldBossAI if (Unit* target = SelectTarget(SelectTargetMethod::MaxThreat, 0, -50.0f, true)) DoCast(target, SPELL_SUMMON_PLAYER); - - DoMeleeAttackIfReady(); } }; diff --git a/src/server/scripts/World/npc_guard.cpp b/src/server/scripts/World/npc_guard.cpp index 879fef3e95e..cfbb8be671a 100644 --- a/src/server/scripts/World/npc_guard.cpp +++ b/src/server/scripts/World/npc_guard.cpp @@ -129,12 +129,8 @@ struct npc_guard_generic : public GuardAI { me->resetAttackTimer(); DoCastVictim(spellInfo->Id); - meleeContext.Repeat(); - return; } } - me->AttackerStateUpdate(victim); - me->resetAttackTimer(); meleeContext.Repeat(); }).Schedule(Seconds(5), [this](TaskContext spellContext) { @@ -205,10 +201,7 @@ struct npc_guard_shattrath_faction : public GuardAI if (!UpdateVictim()) return; - _scheduler.Update(diff, [this] - { - DoMeleeAttackIfReady(); - }); + _scheduler.Update(diff); } void ScheduleVanish() diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp index 25d8237f808..afefcc42ba9 100644 --- a/src/server/scripts/World/npcs_special.cpp +++ b/src/server/scripts/World/npcs_special.cpp @@ -251,8 +251,7 @@ public: ResetFlagTimer -= diff; } - if (UpdateVictim()) - DoMeleeAttackIfReady(); + UpdateVictim(); } void ReceiveEmote(Player* player, uint32 emote) override |