aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Pet/Pet.cpp4
-rw-r--r--src/server/game/Entities/Pet/Pet.h1
-rw-r--r--src/server/game/Entities/Player/Player.cpp14
-rw-r--r--src/server/game/Entities/Player/Player.h6
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp20
-rw-r--r--src/server/game/Entities/Unit/Unit.h7
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp8
-rw-r--r--src/server/game/Spells/SpellEffects.cpp9
8 files changed, 33 insertions, 36 deletions
diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp
index 56f2d4447df..8852af1be8c 100644
--- a/src/server/game/Entities/Pet/Pet.cpp
+++ b/src/server/game/Entities/Pet/Pet.cpp
@@ -1676,7 +1676,7 @@ void Pet::CastPetAuras(bool current)
if (!IsPermanentPetFor(owner))
return;
- for (PetAuraSet::const_iterator itr = owner->m_petAuras.begin(); itr != owner->m_petAuras.end();)
+ for (auto itr = owner->m_petAuras.begin(); itr != owner->m_petAuras.end();)
{
PetAura const* pa = *itr;
++itr;
@@ -1708,7 +1708,7 @@ bool Pet::IsPetAura(Aura const* aura)
Player* owner = GetOwner();
// if the owner has that pet aura, return true
- for (PetAuraSet::const_iterator itr = owner->m_petAuras.begin(); itr != owner->m_petAuras.end(); ++itr)
+ for (auto itr = owner->m_petAuras.begin(); itr != owner->m_petAuras.end(); ++itr)
{
if ((*itr)->GetAura(GetEntry()) == aura->GetId())
return true;
diff --git a/src/server/game/Entities/Pet/Pet.h b/src/server/game/Entities/Pet/Pet.h
index 2e17b976be6..09a6e0a8afe 100644
--- a/src/server/game/Entities/Pet/Pet.h
+++ b/src/server/game/Entities/Pet/Pet.h
@@ -40,6 +40,7 @@ typedef std::unordered_map<uint32, PetSpell> PetSpellMap;
typedef std::vector<uint32> AutoSpellList;
class Player;
+class PetAura;
class TC_GAME_API Pet : public Guardian
{
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 87f03539599..3dd310f4b52 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -21834,6 +21834,20 @@ void Player::RemovePet(Pet* pet, PetSaveMode mode, bool returnreagent)
}
}
+void Player::AddPetAura(PetAura const* petSpell)
+{
+ m_petAuras.insert(petSpell);
+ if (Pet* pet = GetPet())
+ pet->CastPetAura(petSpell);
+}
+
+void Player::RemovePetAura(PetAura const* petSpell)
+{
+ m_petAuras.erase(petSpell);
+ if (Pet* pet = GetPet())
+ pet->RemoveAurasDueToSpell(petSpell->GetAura(pet->GetEntry()));
+}
+
void Player::StopCastingCharm()
{
Unit* charm = GetCharm();
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 297c90fc5d9..dafedb22e77 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -78,6 +78,7 @@ class Item;
class LootStore;
class OutdoorPvP;
class Pet;
+class PetAura;
class PlayerAI;
class PlayerAchievementMgr;
class PlayerMenu;
@@ -1097,6 +1098,11 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
Pet* SummonPet(uint32 entry, float x, float y, float z, float ang, PetType petType, uint32 despwtime);
void RemovePet(Pet* pet, PetSaveMode mode, bool returnreagent = false);
+ // pet auras
+ std::unordered_set<PetAura const*> m_petAuras;
+ void AddPetAura(PetAura const* petSpell);
+ void RemovePetAura(PetAura const* petSpell);
+
/// Handles said message in regular chat based on declared language and in config pre-defined Range.
void Say(std::string const& text, Language language, WorldObject const* = nullptr) override;
void Say(uint32 textId, WorldObject const* target = nullptr) override;
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 84e6cb9ea16..ad69398d494 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -11162,26 +11162,6 @@ void Unit::SetContestedPvP(Player* attackedPlayer)
}
}
-void Unit::AddPetAura(PetAura const* petSpell)
-{
- if (GetTypeId() != TYPEID_PLAYER)
- return;
-
- m_petAuras.insert(petSpell);
- if (Pet* pet = ToPlayer()->GetPet())
- pet->CastPetAura(petSpell);
-}
-
-void Unit::RemovePetAura(PetAura const* petSpell)
-{
- if (GetTypeId() != TYPEID_PLAYER)
- return;
-
- m_petAuras.erase(petSpell);
- if (Pet* pet = ToPlayer()->GetPet())
- pet->RemoveAurasDueToSpell(petSpell->GetAura(pet->GetEntry()));
-}
-
Pet* Unit::CreateTamedPetFrom(Creature* creatureTarget, uint32 spell_id)
{
if (GetTypeId() != TYPEID_PLAYER)
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index 1df51077ae4..48ab77e3856 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -200,7 +200,6 @@ class Item;
class Minion;
class MotionMaster;
class Pet;
-class PetAura;
class Spell;
class SpellCastTargets;
class SpellEffectInfo;
@@ -1929,12 +1928,6 @@ class TC_GAME_API Unit : public WorldObject
bool CanProc() const { return !m_procDeep; }
void SetCantProc(bool apply);
- // pet auras
- typedef std::set<PetAura const*> PetAuraSet;
- PetAuraSet m_petAuras;
- void AddPetAura(PetAura const* petSpell);
- void RemovePetAura(PetAura const* petSpell);
-
uint32 GetModelForForm(ShapeshiftForm form, uint32 spellId) const;
// Redirect Threat
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index f8e98d186eb..9281d012f55 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -4485,15 +4485,15 @@ void AuraEffect::HandleAuraDummy(AuraApplication const* aurApp, uint8 mode, bool
Unit* caster = GetCaster();
- if (mode & AURA_EFFECT_HANDLE_REAL)
+ // pet auras
+ if (target->GetTypeId() == TYPEID_PLAYER && (mode & AURA_EFFECT_HANDLE_REAL))
{
- // pet auras
if (PetAura const* petSpell = sSpellMgr->GetPetAura(GetId(), m_effIndex))
{
if (apply)
- target->AddPetAura(petSpell);
+ target->ToPlayer()->AddPetAura(petSpell);
else
- target->RemovePetAura(petSpell);
+ target->ToPlayer()->RemovePetAura(petSpell);
}
}
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 7deab6b85e6..53e9c98b0db 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -607,10 +607,13 @@ void Spell::EffectDummy(SpellEffIndex effIndex)
}
// pet auras
- if (PetAura const* petSpell = sSpellMgr->GetPetAura(m_spellInfo->Id, effIndex))
+ if (m_caster->GetTypeId() == TYPEID_PLAYER)
{
- m_caster->AddPetAura(petSpell);
- return;
+ if (PetAura const* petSpell = sSpellMgr->GetPetAura(m_spellInfo->Id, effIndex))
+ {
+ m_caster->ToPlayer()->AddPetAura(petSpell);
+ return;
+ }
}
// normal DB scripted effect