diff options
-rw-r--r-- | src/server/game/AI/CoreAI/TotemAI.cpp | 3 | ||||
-rw-r--r-- | src/server/game/Entities/Creature/Creature.h | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 8 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 1 | ||||
-rw-r--r-- | src/server/game/Handlers/PetHandler.cpp | 6 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp | 4 | ||||
-rw-r--r-- | src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp | 4 | ||||
-rw-r--r-- | src/server/scripts/Northrend/zone_zuldrak.cpp | 4 | ||||
-rw-r--r-- | src/server/scripts/Outland/zone_terokkar_forest.cpp | 2 | ||||
-rw-r--r-- | src/server/scripts/World/npcs_special.cpp | 2 |
10 files changed, 20 insertions, 16 deletions
diff --git a/src/server/game/AI/CoreAI/TotemAI.cpp b/src/server/game/AI/CoreAI/TotemAI.cpp index 70ed58d853d..a2f0f8f664b 100644 --- a/src/server/game/AI/CoreAI/TotemAI.cpp +++ b/src/server/game/AI/CoreAI/TotemAI.cpp @@ -83,8 +83,7 @@ void TotemAI::UpdateAI(uint32 /*diff*/) i_victimGuid = victim->GetGUID(); // attack - me->SetInFront(victim); // client change orientation by self - me->CastSpell(victim, me->ToTotem()->GetSpell(), false); + me->CastSpell(victim, me->ToTotem()->GetSpell()); } else i_victimGuid.Clear(); diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index c19c6854239..cc5608bfc3d 100644 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -328,7 +328,7 @@ class TC_GAME_API Creature : public Unit, public GridObject<Creature>, public Ma void MustReacquireTarget() { m_shouldReacquireTarget = true; } // flags the Creature for forced (client displayed) target reacquisition in the next ::Update call void DoNotReacquireTarget() { m_shouldReacquireTarget = false; m_suppressedTarget = ObjectGuid::Empty; m_suppressedOrientation = 0.0f; } void FocusTarget(Spell const* focusSpell, WorldObject const* target); - bool IsFocusing(Spell const* focusSpell = nullptr, bool withDelay = false); + bool IsFocusing(Spell const* focusSpell = nullptr, bool withDelay = false) override; void ReleaseFocus(Spell const* focusSpell = nullptr, bool withDelay = true); bool IsMovementPreventedByCasting() const override; diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 815ef9a4a62..df7273a5b2d 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -8839,7 +8839,8 @@ void Unit::TauntApply(Unit* taunter) if (target && target == taunter) return; - SetInFront(taunter); + if (!IsFocusing(nullptr, true)) + SetInFront(taunter); if (creature->IsAIEnabled) creature->AI()->AttackStart(taunter); @@ -8878,7 +8879,8 @@ void Unit::TauntFadeOut(Unit* taunter) if (target && target != taunter) { - SetInFront(target); + if (!IsFocusing(nullptr, true)) + SetInFront(target); if (creature->IsAIEnabled) creature->AI()->AttackStart(target); } @@ -8960,7 +8962,7 @@ Unit* Creature::SelectVictim() if (target && _IsTargetAcceptable(target) && CanCreatureAttack(target)) { - if (!IsFocusing()) + if (!IsFocusing(nullptr, true)) SetInFront(target); return target; } diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 83f631311d2..7f126fa2c3e 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1659,6 +1659,7 @@ class TC_GAME_API Unit : public WorldObject virtual SpellInfo const* GetCastSpellInfo(SpellInfo const* spellInfo) const; uint32 GetCastSpellXSpellVisualId(SpellInfo const* spellInfo) const; + virtual bool IsFocusing(Spell const* /*focusSpell*/ = nullptr, bool /*withDelay*/ = false) { return false; } virtual bool IsMovementPreventedByCasting() const; SpellHistory* GetSpellHistory() { return _spellHistory; } diff --git a/src/server/game/Handlers/PetHandler.cpp b/src/server/game/Handlers/PetHandler.cpp index 8dc2523afcc..73bc95f2caf 100644 --- a/src/server/game/Handlers/PetHandler.cpp +++ b/src/server/game/Handlers/PetHandler.cpp @@ -331,13 +331,15 @@ void WorldSession::HandlePetActionHelper(Unit* pet, ObjectGuid guid1, uint32 spe { if (unit_target) { - pet->SetInFront(unit_target); + if (!pet->IsFocusing()) + pet->SetInFront(unit_target); if (Player* player = unit_target->ToPlayer()) pet->SendUpdateToPlayer(player); } else if (Unit* unit_target2 = spell->m_targets.GetUnitTarget()) { - pet->SetInFront(unit_target2); + if (!pet->IsFocusing()) + pet->SetInFront(unit_target2); if (Player* player = unit_target2->ToPlayer()) pet->SendUpdateToPlayer(player); } diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp index 5d760eecbbc..23f9d315457 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp @@ -196,8 +196,8 @@ public: ++IntroPhase; break; case 1: - me->SetInFront(Madrigosa); - Madrigosa->SetInFront(me); + me->SetFacingToObject(Madrigosa); + Madrigosa->SetFacingToObject(me); Madrigosa->AI()->Talk(YELL_MADR_INTRO, me); IntroPhaseTimer = 9000; ++IntroPhase; diff --git a/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp b/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp index 029ea6ad9ce..d7bc3bd5240 100644 --- a/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp +++ b/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp @@ -532,8 +532,8 @@ public: return 1000; case 2: Talk(GEEZLE_SAY_1, Spark); - Spark->SetInFront(me); - me->SetInFront(Spark); + Spark->SetFacingToObject(me); + me->SetFacingToObject(Spark); return 5000; case 3: Spark->AI()->Talk(SPARK_SAY_2); diff --git a/src/server/scripts/Northrend/zone_zuldrak.cpp b/src/server/scripts/Northrend/zone_zuldrak.cpp index 0e42a431d93..23716389e7e 100644 --- a/src/server/scripts/Northrend/zone_zuldrak.cpp +++ b/src/server/scripts/Northrend/zone_zuldrak.cpp @@ -70,8 +70,8 @@ public: void LockRageclaw(Creature* rageclaw) { // pointer check not needed - me->SetInFront(rageclaw); - rageclaw->SetInFront(me); + me->SetFacingToObject(rageclaw); + rageclaw->SetFacingToObject(me); DoCast(rageclaw, SPELL_LEFT_CHAIN, true); DoCast(rageclaw, SPELL_RIGHT_CHAIN, true); diff --git a/src/server/scripts/Outland/zone_terokkar_forest.cpp b/src/server/scripts/Outland/zone_terokkar_forest.cpp index 2e604b4291f..bf595557c49 100644 --- a/src/server/scripts/Outland/zone_terokkar_forest.cpp +++ b/src/server/scripts/Outland/zone_terokkar_forest.cpp @@ -469,7 +469,7 @@ public: player->GroupEventHappens(ESCAPE_FROM_FIREWING_POINT_A, me); else if (player->GetTeam() == HORDE) player->GroupEventHappens(ESCAPE_FROM_FIREWING_POINT_H, me); - me->SetInFront(player); + me->SetFacingToObject(player); break; case 30: me->HandleEmoteCommand(EMOTE_ONESHOT_WAVE); diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp index 671a03918ca..a5d11011ea1 100644 --- a/src/server/scripts/World/npcs_special.cpp +++ b/src/server/scripts/World/npcs_special.cpp @@ -420,7 +420,7 @@ public: { if (me->IsWithinLOS(player->GetPositionX(), player->GetPositionY(), player->GetPositionZ()) && me->IsWithinDistInMap(player, 30.0f)) { - me->SetInFront(player); + me->SetFacingToObject(player); Active = false; switch (emote) |