aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/SpellEffects.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Spells/SpellEffects.cpp')
-rw-r--r--src/server/game/Spells/SpellEffects.cpp31
1 files changed, 30 insertions, 1 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index ad335d2a4a8..621e620866a 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -285,7 +285,7 @@ NonDefaultConstructible<SpellEffectHandlerFn> SpellEffectHandlers[TOTAL_SPELL_EF
&Spell::EffectEnableBattlePets, //201 SPELL_EFFECT_ENABLE_BATTLE_PETS
&Spell::EffectUnused, //202 SPELL_EFFECT_APPLY_AREA_AURA_SUMMONS
&Spell::EffectRemoveAura, //203 SPELL_EFFECT_REMOVE_AURA_2
- &Spell::EffectNULL, //204 SPELL_EFFECT_CHANGE_BATTLEPET_QUALITY
+ &Spell::EffectChangeBattlePetQuality, //204 SPELL_EFFECT_CHANGE_BATTLEPET_QUALITY
&Spell::EffectLaunchQuestChoice, //205 SPELL_EFFECT_LAUNCH_QUEST_CHOICE
&Spell::EffectNULL, //206 SPELL_EFFECT_ALTER_ITEM
&Spell::EffectNULL, //207 SPELL_EFFECT_LAUNCH_QUEST_TASK
@@ -5297,6 +5297,35 @@ void Spell::EffectEnableBattlePets()
player->GetSession()->GetBattlePetMgr()->UnlockSlot(BattlePets::BattlePetSlot::Slot0);
}
+void Spell::EffectChangeBattlePetQuality()
+{
+ if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET)
+ return;
+
+ Player* playerCaster = m_caster->ToPlayer();
+ if (!playerCaster)
+ return;
+
+ if (!unitTarget || !unitTarget->IsCreature())
+ return;
+
+ BattlePets::BattlePetBreedQuality quality = BattlePets::BattlePetBreedQuality::Poor;
+ switch (damage)
+ {
+ case 85:
+ quality = BattlePets::BattlePetBreedQuality::Rare;
+ break;
+ case 75:
+ quality = BattlePets::BattlePetBreedQuality::Uncommon;
+ break;
+ default:
+ // Ignore Epic Battle-Stones
+ break;
+ }
+
+ playerCaster->GetSession()->GetBattlePetMgr()->ChangeBattlePetQuality(unitTarget->GetBattlePetCompanionGUID(), quality);
+}
+
void Spell::EffectLaunchQuestChoice()
{
if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET)