diff options
| author | Meji <alvaromegias_46@hotmail.com> | 2021-12-19 13:27:27 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-12-19 13:27:27 +0100 |
| commit | c4fee8c5cf85aeddc45aad18d7a944efa59022bd (patch) | |
| tree | 327bcb401fd8d5e0a7f86308d509ad7242746933 /src/server/game/Spells/SpellEffects.cpp | |
| parent | e6ac3316b73d68d1ce776e5c740cafd3b7b0bad6 (diff) | |
Core/Spells: Implemented spell effect 204 (SPELL_EFFECT_CHANGE_BATTLEPET_QUALITY) (#27425)
Diffstat (limited to 'src/server/game/Spells/SpellEffects.cpp')
| -rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 31 |
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) |
