Advertisement
EmuDevs

EmuDevs - TrinityCore Create a pet for any class

Jun 29th, 2013
601
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.72 KB | None | 0 0
  1. /*
  2.      Messing with the Pet system - Tutorial
  3. */
  4. #include "Pet.h"
  5.  
  6. class npc_pet_tutorial : public CreatureScript
  7. {
  8. public:
  9.     npc_pet_tutorial() : CreatureScript("npc_pet_tutorial") { }
  10.  
  11.     bool OnGossipHello(Player* player, Creature* creature)
  12.     {
  13.         if (player->GetPet())
  14.             return false;
  15.  
  16.         player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Create a pet", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
  17.         player->SEND_GOSSIP_MENU(1, creature->GetGUID());
  18.         return true;
  19.     }
  20.  
  21.     bool OnGossipSelect(Player* player, Creature* creature, uint32 /* sender */, uint32 actions)
  22.     {
  23.         player->PlayerTalkClass->ClearMenus();
  24.  
  25.         if (actions == GOSSIP_ACTION_INFO_DEF+1)
  26.             CreatePet(creature, player, 823);
  27.         return true;
  28.     }
  29.  
  30.     bool CreatePet(Creature* creature, Player* player, uint32 entry)
  31.     {
  32.         float x, y, z;
  33.         player->GetPosition(x, y, z);
  34.  
  35.         Creature* petCreature = creature->SummonCreature(entry, x+2, y+1, z, 1, TEMPSUMMON_MANUAL_DESPAWN, 0);
  36.         if (!petCreature)
  37.             return false;
  38.  
  39.         Pet* pet = player->CreateTamedPetFrom(petCreature, 0);
  40.         if (!pet)
  41.             return false;
  42.  
  43.         pet->SetPower(POWER_HAPPINESS, 100);
  44.         pet->AddUInt64Value(UNIT_FIELD_CREATEDBY, player->GetGUID());
  45.         pet->SetUInt32Value(UNIT_FIELD_FACTIONTEMPLATE, player->getFaction());
  46.         pet->SetUInt32Value(UNIT_FIELD_LEVEL, player->getLevel());
  47.         pet->GetMap()->AddToMap(pet->ToCreature());
  48.         pet->GetCharmInfo()->SetPetNumber(sObjectMgr->GeneratePetNumber(), true);
  49.         player->SetMinion(pet, true);
  50.         pet->SavePetToDB(PET_SAVE_AS_CURRENT);
  51.         pet->InitTalentForLevel();
  52.         pet->InitStatsForLevel(player->getLevel());
  53.         player->PetSpellInitialize();
  54.  
  55.         petCreature->DespawnOrUnsummon(100);
  56.         return true;
  57.     }
  58. };
  59.  
  60. void AddSC_pet_tut()
  61. {
  62.     new npc_pet_tutorial();
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement