void WorldSession::HandleBattlePetRequestJournal(WorldPackets::BattlePet::BattlePetRequestJournal& /*battlePetRequestJournal*/) { // TODO: Move this to BattlePetMgr::SendJournal() just to have all packets in one file WorldPackets::BattlePet::BattlePetJournal battlePetJournal; battlePetJournal.Trap = GetBattlePetMgr()->GetTrapLevel(); for (auto itr : GetBattlePetMgr()->GetLearnedPets()) battlePetJournal.Pets.push_back(itr.PacketInfo); battlePetJournal.Slots = GetBattlePetMgr()->GetSlots(); SendPacket(battlePetJournal.Write()); }
void WorldSession::HandleBattlePetModifyName(WorldPackets::BattlePet::BattlePetModifyName& battlePetModifyName) { if (BattlePetMgr::BattlePet* pet = GetBattlePetMgr()->GetPet(battlePetModifyName.PetGuid)) { pet->PacketInfo.Name = battlePetModifyName.Name; if (pet->SaveInfo != BATTLE_PET_NEW) pet->SaveInfo = BATTLE_PET_CHANGED; } }
void WorldSession::HandleBattlePetSetFlags(WorldPackets::BattlePet::BattlePetSetFlags& battlePetSetFlags) { if (BattlePetMgr::BattlePet* pet = GetBattlePetMgr()->GetPet(battlePetSetFlags.PetGuid)) { if (battlePetSetFlags.ControlType == 2) // 2 - apply pet->PacketInfo.Flags |= battlePetSetFlags.Flags; else // 3 - remove pet->PacketInfo.Flags &= ~battlePetSetFlags.Flags; if (pet->SaveInfo != BATTLE_PET_NEW) pet->SaveInfo = BATTLE_PET_CHANGED; } }
void WorldSession::HandleBattlePetSetFlags(WorldPackets::BattlePet::BattlePetSetFlags& battlePetSetFlags) { if (BattlePetMgr::BattlePet* pet = GetBattlePetMgr()->GetPet(battlePetSetFlags.PetGuid)) { if (battlePetSetFlags.ControlType == FLAGS_CONTROL_TYPE_APPLY) pet->PacketInfo.Flags |= battlePetSetFlags.Flags; else // FLAGS_CONTROL_TYPE_REMOVE pet->PacketInfo.Flags &= ~battlePetSetFlags.Flags; if (pet->SaveInfo != BATTLE_PET_NEW) pet->SaveInfo = BATTLE_PET_CHANGED; } }
void WorldSession::HandleUseCritterItem(WorldPackets::Item::UseCritterItem& useCritterItem) { Item* item = _player->GetItemByGuid(useCritterItem.ItemGuid); if (!item) return; ItemToBattlePetSpeciesEntry const* itemToBattlePetSpecies = sItemToBattlePetSpeciesStore.LookupEntry(item->GetEntry()); if (!itemToBattlePetSpecies) return; BattlePetSpeciesEntry const* battlePetSpecies = sBattlePetSpeciesStore.LookupEntry(itemToBattlePetSpecies->BattlePetSpeciesID); if (!battlePetSpecies) return; GetBattlePetMgr()->AddPet(battlePetSpecies->ID, battlePetSpecies->CreatureID, BattlePetMgr::RollPetBreed(battlePetSpecies->ID), BattlePetMgr::GetDefaultPetQuality(battlePetSpecies->ID)); _player->DestroyItem(item->GetBagSlot(), item->GetSlot(), true); }
void WorldSession::HandleUseCritterItem(WorldPackets::Item::UseCritterItem& useCritterItem) { Item* item = _player->GetItemByGuid(useCritterItem.ItemGuid); if (!item) return; if (item->GetTemplate()->Effects.size() < 2) return; uint32 spellToLearn = item->GetTemplate()->Effects[1]->SpellID; for (BattlePetSpeciesEntry const* entry : sBattlePetSpeciesStore) { if (entry->SummonSpellID == spellToLearn) { GetBattlePetMgr()->AddPet(entry->ID, entry->CreatureID, BattlePetMgr::RollPetBreed(entry->ID), BattlePetMgr::GetDefaultPetQuality(entry->ID)); _player->UpdateCriteria(CRITERIA_TYPE_OWN_BATTLE_PET_COUNT); break; } } _player->DestroyItem(item->GetBagSlot(), item->GetSlot(), true); }
void WorldSession::HandleBattlePetSummon(WorldPackets::BattlePet::BattlePetSummon& battlePetSummon) { GetBattlePetMgr()->SummonPet(battlePetSummon.PetGuid); }
void WorldSession::HandleCageBattlePet(WorldPackets::BattlePet::CageBattlePet& cageBattlePet) { GetBattlePetMgr()->CageBattlePet(cageBattlePet.PetGuid); }
void WorldSession::HandleBattlePetDeletePet(WorldPackets::BattlePet::BattlePetDeletePet& battlePetDeletePet) { GetBattlePetMgr()->RemovePet(battlePetDeletePet.PetGuid); }
void WorldSession::HandleBattlePetSetBattleSlot(WorldPackets::BattlePet::BattlePetSetBattleSlot& battlePetSetBattleSlot) { if (BattlePetMgr::BattlePet* pet = GetBattlePetMgr()->GetPet(battlePetSetBattleSlot.PetGuid)) GetBattlePetMgr()->GetSlot(battlePetSetBattleSlot.Slot)->Pet = pet->PacketInfo; }