aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/SpellEffects.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2018-01-02 14:04:09 +0100
committerShauren <shauren.trinity@gmail.com>2018-01-02 14:04:09 +0100
commitea6de0b565944520570f0723dae35d350b7b96ac (patch)
tree5350be540a71413f09566c9c5bdd4cba24f748bc /src/server/game/Spells/SpellEffects.cpp
parent9f94941a3e146897617d4b097018dc871eaba374 (diff)
Core/BattlePets: Misc fixes
* Fixed caged pet item chat message * BattlePetMgr optimizations: removed copying data all over the place * Fixed gaining two pets when learned from item for the first time * Fixed dismiss button
Diffstat (limited to 'src/server/game/Spells/SpellEffects.cpp')
-rw-r--r--src/server/game/Spells/SpellEffects.cpp26
1 files changed, 3 insertions, 23 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index eeb4936ec04..b373d48fa19 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -2161,22 +2161,6 @@ void Spell::EffectLearnSpell(SpellEffIndex effIndex)
uint32 spellToLearn = (m_spellInfo->Id == 483 || m_spellInfo->Id == 55884) ? damage : effectInfo->TriggerSpell;
player->LearnSpell(spellToLearn, false);
- if (m_spellInfo->Id == 55884)
- {
- if (BattlePetMgr* battlePetMgr = player->GetSession()->GetBattlePetMgr())
- {
- for (auto entry : sBattlePetSpeciesStore)
- {
- if (entry->SummonSpellID == spellToLearn)
- {
- battlePetMgr->AddPet(entry->ID, entry->CreatureID, BattlePetMgr::RollPetBreed(entry->ID), BattlePetMgr::GetDefaultPetQuality(entry->ID));
- player->UpdateCriteria(CRITERIA_TYPE_OWN_BATTLE_PET_COUNT);
- break;
- }
- }
- }
- }
-
TC_LOG_DEBUG("spells", "Spell: %s has learned spell %u from %s", player->GetGUID().ToString().c_str(), spellToLearn, m_caster->GetGUID().ToString().c_str());
}
@@ -5705,14 +5689,9 @@ void Spell::EffectUncageBattlePet(SpellEffIndex /*effIndex*/)
if (!battlePetMgr)
return;
- uint16 maxLearnedLevel = 0;
-
- for (auto pet : battlePetMgr->GetLearnedPets())
- maxLearnedLevel = std::max(pet.PacketInfo.Level, maxLearnedLevel);
-
// TODO: This means if you put your highest lvl pet into cage, you won't be able to uncage it again which is probably wrong.
// We will need to store maxLearnedLevel somewhere to avoid this behaviour.
- if (maxLearnedLevel < level)
+ if (battlePetMgr->GetMaxPetLevel() < level)
{
battlePetMgr->SendError(BATTLEPETRESULT_TOO_HIGH_LEVEL_TO_UNCAGE, creatureId); // or speciesEntry.CreatureID
SendCastResult(SPELL_FAILED_CANT_ADD_BATTLE_PET);
@@ -5726,10 +5705,11 @@ void Spell::EffectUncageBattlePet(SpellEffIndex /*effIndex*/)
return;
}
+ battlePetMgr->AddPet(speciesId, creatureId, breed, quality, level);
+
if (!plr->HasSpell(speciesEntry->SummonSpellID))
plr->LearnSpell(speciesEntry->SummonSpellID, false);
- battlePetMgr->AddPet(speciesId, creatureId, breed, quality, level);
plr->DestroyItem(m_CastItem->GetBagSlot(), m_CastItem->GetSlot(), true);
m_CastItem = nullptr;
}