diff options
Diffstat (limited to 'src/server/game/Spells/SpellEffects.cpp')
| -rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 17 | 
1 files changed, 16 insertions, 1 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 04aed7b0e08..2785194768d 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -367,7 +367,7 @@ NonDefaultConstructible<SpellEffectHandlerFn> SpellEffectHandlers[TOTAL_SPELL_EF      &Spell::EffectNULL,                                     //283 SPELL_EFFECT_COMPLETE_CAMPAIGN      &Spell::EffectSendChatMessage,                          //284 SPELL_EFFECT_SEND_CHAT_MESSAGE      &Spell::EffectNULL,                                     //285 SPELL_EFFECT_MODIFY_KEYSTONE_2 -    &Spell::EffectNULL,                                     //286 SPELL_EFFECT_GRANT_BATTLEPET_EXPERIENCE +    &Spell::EffectGrantBattlePetExperience,                 //286 SPELL_EFFECT_GRANT_BATTLEPET_EXPERIENCE      &Spell::EffectNULL,                                     //287 SPELL_EFFECT_SET_GARRISON_FOLLOWER_LEVEL  }; @@ -5722,3 +5722,18 @@ void Spell::EffectSendChatMessage()      ChatMsg chatType = ChatMsg(effectInfo->MiscValueB);      unitCaster->Talk(broadcastTextId, chatType, CreatureTextMgr::GetRangeForChatType(chatType), unitTarget);  } + +void Spell::EffectGrantBattlePetExperience() +{ +    if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET) +        return; + +    Player* playerCaster = m_caster->ToPlayer(); +    if (!playerCaster) +        return; + +    if (!unitTarget || !unitTarget->IsCreature()) +        return; + +    playerCaster->GetSession()->GetBattlePetMgr()->GrantBattlePetExperience(unitTarget->GetBattlePetCompanionGUID(), damage, BattlePets::BattlePetXpSource::SpellEffect); +}  | 
