//.pet create bool ChatHandler::HandlePetCreateCommand(const char* args, WorldSession* m_session) { Player* selected_player = GetSelectedPlayer(m_session, true, true); if (selected_player == nullptr) return true; if (!*args) return false; uint32 entry = atol(args); CreatureProperties const* creature_proto = sMySQLStore.GetCreatureProperties(entry); if (creature_proto == nullptr) { RedSystemMessage(m_session, "Creature Entry: %u is not a valid endtry!", entry); return true; } selected_player->DismissActivePets(); selected_player->RemoveFieldSummon(); float followangle = -M_PI_FLOAT * 2; LocationVector vector(selected_player->GetPosition()); vector.x += (3 * (cosf(followangle + selected_player->GetOrientation()))); vector.y += (3 * (sinf(followangle + selected_player->GetOrientation()))); Pet* pet = objmgr.CreatePet(entry); if (!pet->CreateAsSummon(entry, creature_proto, nullptr, selected_player, nullptr, 1, 0, &vector, true)) { pet->DeleteMe(); return true; } pet->GetAIInterface()->SetUnitToFollowAngle(followangle); if (selected_player != m_session->GetPlayer()) { sGMLog.writefromsession(m_session, "used created pet with entry %u for player %s", entry, selected_player->GetName()); BlueSystemMessage(m_session, "Pet with entry %u created for player %s.", entry, selected_player->GetName()); BlueSystemMessage(selected_player->GetSession(), "%s created a pet with entry %u for you.", m_session->GetPlayer()->GetName(), entry); } else { BlueSystemMessage(m_session, "Pet with entry %u created.", entry); } return true; }