From 090acddee341f389585db8146afcae8f529d77ff Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 11 Nov 2010 22:53:52 +0100 Subject: Core/Spells: Fixed Heart of the Phoenix pet spell Closes issue #3911. --HG-- branch : trunk --- src/server/game/Server/Protocol/Handlers/PetHandler.cpp | 8 +++++++- src/server/scripts/Spells/spell_hunter.cpp | 5 +++-- 2 files changed, 10 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/server/game/Server/Protocol/Handlers/PetHandler.cpp b/src/server/game/Server/Protocol/Handlers/PetHandler.cpp index 01fda02dc3b..c0c4fc4b993 100755 --- a/src/server/game/Server/Protocol/Handlers/PetHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/PetHandler.cpp @@ -80,7 +80,13 @@ void WorldSession::HandlePetAction(WorldPacket & recv_data) } if (!pet->isAlive()) - return; + { + SpellEntry const* spell = (flag == ACT_ENABLED || flag == ACT_PASSIVE) ? sSpellStore.LookupEntry(spellid) : NULL; + if (!spell) + return; + if (!(spell->Attributes & SPELL_ATTR_CASTABLE_WHILE_DEAD)) + return; + } //TODO: allow control charmed player? if (pet->GetTypeId() == TYPEID_PLAYER && !(flag == ACT_COMMAND && spellid == COMMAND_ATTACK)) diff --git a/src/server/scripts/Spells/spell_hunter.cpp b/src/server/scripts/Spells/spell_hunter.cpp index 08950f4703b..5fa440c3633 100644 --- a/src/server/scripts/Spells/spell_hunter.cpp +++ b/src/server/scripts/Spells/spell_hunter.cpp @@ -419,9 +419,10 @@ public: void HandleScript(SpellEffIndex /*effIndex*/) { Unit *caster = GetCaster(); - if (caster->HasAura(HUNTER_PET_HEART_OF_THE_PHOENIX_DEBUFF)) + Unit *owner = caster->GetOwner(); + if (!owner || caster->HasAura(HUNTER_PET_HEART_OF_THE_PHOENIX_DEBUFF)) return; - caster->CastCustomSpell(HUNTER_PET_HEART_OF_THE_PHOENIX_TRIGGERED, SPELLVALUE_BASE_POINT0, 100, caster, true); + owner->CastCustomSpell(HUNTER_PET_HEART_OF_THE_PHOENIX_TRIGGERED, SPELLVALUE_BASE_POINT0, 100, caster, true); caster->CastSpell(caster, HUNTER_PET_HEART_OF_THE_PHOENIX_DEBUFF, true); } -- cgit v1.2.3