Advertisement
Valtorei

Beastmaster Update

Sep 22nd, 2014
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.10 KB | None | 0 0
  1. #include "Pet.h"
  2.  
  3. class Beastmaster_Trainer : public CreatureScript
  4. {
  5. public:
  6.     Beastmaster_Trainer() : CreatureScript("Beastmaster_Trainer") {}
  7.  
  8.     void CreatePet(Player* player, Creature* creature, uint32 entry)
  9.     {
  10.         Creature* creatureTarget = creature->SummonCreature(entry, player->GetPositionX(), player->GetPositionY() + 2, player->GetPositionZ(), player->GetOrientation(), TEMPSUMMON_CORPSE_TIMED_DESPAWN, 500);
  11.         if (!creatureTarget)
  12.             return;
  13.  
  14.         Pet* pet = player->CreateTamedPetFrom(creatureTarget, 0);
  15.         if (!pet)
  16.             return;
  17.         creatureTarget->setDeathState(JUST_DIED);
  18.         creatureTarget->RemoveCorpse();
  19.         creatureTarget->SetHealth(0);
  20.  
  21.         pet->SetPower(POWER_HAPPINESS, 1048000);
  22.         pet->SetUInt64Value(UNIT_FIELD_CREATEDBY, player->GetGUID());
  23.         pet->SetUInt64Value(UNIT_FIELD_FACTIONTEMPLATE, player->getFaction());
  24.         pet->SetUInt32Value(UNIT_FIELD_LEVEL, player->getLevel());
  25.  
  26.         pet->GetMap()->AddToMap(pet->ToCreature());
  27.  
  28.         pet->GetCharmInfo()->SetPetNumber(sObjectMgr->GeneratePetNumber(), true);
  29.         if (!pet->InitStatsForLevel(player->getLevel()))
  30.             TC_LOG_INFO("misc", "Falure: No Init Stats for entry %u", entry);
  31.  
  32.         pet->UpdateAllStats();
  33.         player->SetMinion(pet, true);
  34.  
  35.         pet->SavePetToDB(PET_SAVE_AS_CURRENT);
  36.         pet->InitTalentForLevel();
  37.         player->PetSpellInitialize();
  38.  
  39.         player->CLOSE_GOSSIP_MENU();
  40.         creature->Whisper("You have learned a way of the beast, congratulations.", LANG_UNIVERSAL, player);
  41.     }
  42.  
  43.     bool OnGossipHello(Player* player, Creature* creature)
  44.     {
  45.         if (player->getClass() != CLASS_HUNTER)
  46.         {
  47.             creature->Whisper("I only train Hunters in the way of the beast.", LANG_UNIVERSAL, player);
  48.             player->CLOSE_GOSSIP_MENU();
  49.             return false;
  50.         }
  51.  
  52.         if (player->GetPet())
  53.         {
  54.             creature->Whisper("You must leave your current pet in order to gain a new one.", LANG_UNIVERSAL, player);
  55.             player->CLOSE_GOSSIP_MENU();
  56.             return false;
  57.         }
  58.  
  59.         player->ADD_GOSSIP_ITEM(1, "Obtain a New Pet", GOSSIP_SENDER_MAIN, 30);
  60.         if (player->CanTameExoticPets())
  61.             player->ADD_GOSSIP_ITEM(2, "Obtain a New Exotic Pet", GOSSIP_SENDER_MAIN, 50);
  62.         player->ADD_GOSSIP_ITEM(5, "Nevermind!", GOSSIP_SENDER_MAIN, 150);
  63.         player->SEND_GOSSIP_MENU(1, creature->GetGUID());
  64.  
  65.         return true;
  66.     }
  67.  
  68.     bool OnGossipSelect(Player* player, Creature* creature, uint32 /* sender */, uint32 action)
  69.     {
  70.         player->PlayerTalkClass->ClearMenus();
  71.         switch (action)
  72.         {
  73.             case 100:
  74.                 OnGossipHello(player, creature);
  75.                 break;
  76.             case 150:
  77.                 player->CLOSE_GOSSIP_MENU();
  78.                 break;
  79.             case 30:
  80.                 player->ADD_GOSSIP_ITEM(6, "Bat", GOSSIP_SENDER_MAIN, 18);
  81.                 player->ADD_GOSSIP_ITEM(6, "Bear", GOSSIP_SENDER_MAIN, 1);
  82.                 player->ADD_GOSSIP_ITEM(6, "Boar", GOSSIP_SENDER_MAIN, 2);
  83.                 player->ADD_GOSSIP_ITEM(6, "Cat", GOSSIP_SENDER_MAIN, 4);
  84.                 player->ADD_GOSSIP_ITEM(6, "Carrion Bird", GOSSIP_SENDER_MAIN, 5);
  85.                 player->ADD_GOSSIP_ITEM(6, "Crab", GOSSIP_SENDER_MAIN, 6);
  86.                 player->ADD_GOSSIP_ITEM(6, "Crocolisk", GOSSIP_SENDER_MAIN, 7);
  87.                 player->ADD_GOSSIP_ITEM(6, "Dragonhawk", GOSSIP_SENDER_MAIN, 17);
  88.                 player->ADD_GOSSIP_ITEM(6, "Gorilla", GOSSIP_SENDER_MAIN, 8);
  89.                 player->ADD_GOSSIP_ITEM(6, "Hound", GOSSIP_SENDER_MAIN, 9);
  90.                 player->ADD_GOSSIP_ITEM(6, "Hyena", GOSSIP_SENDER_MAIN, 10);
  91.                 player->ADD_GOSSIP_ITEM(6, "Moth", GOSSIP_SENDER_MAIN, 11);
  92.         player->ADD_GOSSIP_ITEM(6, "Owl", GOSSIP_SENDER_MAIN, 12);
  93.         player->ADD_GOSSIP_ITEM(4, "Next Page ->", GOSSIP_SENDER_MAIN, 31);
  94.         player->ADD_GOSSIP_ITEM(4, "<- Main Menu", GOSSIP_SENDER_MAIN, 100);
  95.         player->ADD_GOSSIP_ITEM(5, "Nevermind!", GOSSIP_SENDER_MAIN, 150);
  96.         player->SEND_GOSSIP_MENU(1, creature->GetGUID());
  97.                 break;
  98.             case 31:
  99.         player->ADD_GOSSIP_ITEM(6, "Raptor", GOSSIP_SENDER_MAIN, 20);
  100.         player->ADD_GOSSIP_ITEM(6, "Ravager", GOSSIP_SENDER_MAIN, 19);
  101.         player->ADD_GOSSIP_ITEM(6, "Strider", GOSSIP_SENDER_MAIN, 13);
  102.         player->ADD_GOSSIP_ITEM(6, "Scorpid", GOSSIP_SENDER_MAIN, 414);
  103.         player->ADD_GOSSIP_ITEM(6, "Spider", GOSSIP_SENDER_MAIN, 16);
  104.             player->ADD_GOSSIP_ITEM(6, "Serpent", GOSSIP_SENDER_MAIN, 21);
  105.         player->ADD_GOSSIP_ITEM(6, "Turtle", GOSSIP_SENDER_MAIN, 15);
  106.         player->ADD_GOSSIP_ITEM(6, "Wasp", GOSSIP_SENDER_MAIN, 93);
  107.         player->ADD_GOSSIP_ITEM(4, "<- Previous Page", GOSSIP_SENDER_MAIN, 30);
  108.         player->ADD_GOSSIP_ITEM(4, "<- Main Menu", GOSSIP_SENDER_MAIN, 100);
  109.         player->ADD_GOSSIP_ITEM(5, "Nevermind!", GOSSIP_SENDER_MAIN, 150);
  110.         player->SEND_GOSSIP_MENU(1, creature->GetGUID());
  111.         break;
  112.         case 50:
  113.         player->ADD_GOSSIP_ITEM(6, "Chimaera", GOSSIP_SENDER_MAIN, 51);
  114.         player->ADD_GOSSIP_ITEM(6, "Core Hound", GOSSIP_SENDER_MAIN, 52);
  115.         player->ADD_GOSSIP_ITEM(6, "Devilsaur", GOSSIP_SENDER_MAIN, 53);
  116.         player->ADD_GOSSIP_ITEM(6, "Rhino", GOSSIP_SENDER_MAIN, 54);
  117.         player->ADD_GOSSIP_ITEM(6, "Silithid", GOSSIP_SENDER_MAIN, 55);
  118.         player->ADD_GOSSIP_ITEM(6, "Worm", GOSSIP_SENDER_MAIN, 56);
  119.         player->ADD_GOSSIP_ITEM(6, "Loque'nahak", GOSSIP_SENDER_MAIN, 57);
  120.         player->ADD_GOSSIP_ITEM(6, "Skoll", GOSSIP_SENDER_MAIN, 58);
  121.         player->ADD_GOSSIP_ITEM(6, "Gondri.", GOSSIP_SENDER_MAIN, 59);
  122.         player->ADD_GOSSIP_ITEM(4, "<- Main Menu", GOSSIP_SENDER_MAIN, 100);
  123.         player->ADD_GOSSIP_ITEM(5, "Nevermind!", GOSSIP_SENDER_MAIN, 150);
  124.         player->SEND_GOSSIP_MENU(1, creature->GetGUID());
  125.         break;
  126.         // Credits to Serifaz who helped me with these ID's.
  127.         case 51: // Chimera
  128.         CreatePet(player, creature, 21879);
  129.         break;
  130.         case 52: // Core hound
  131.         CreatePet(player, creature, 21108);
  132.         break;
  133.         case 53: // Devilsaur
  134.         CreatePet(player, creature, 20931);
  135.         break;
  136.         case 54: // Rhino
  137.         CreatePet(player, creature, 30445);
  138.         break;
  139.         case 55: // Silithid
  140.         CreatePet(player, creature, 5460);
  141.         break;
  142.         case 56: // Worm
  143.         CreatePet(player, creature, 30148);
  144.         break;
  145.         case 57: // Loque'nahak
  146.         CreatePet(player, creature, 32517);
  147.         break;
  148.         case 58: // Skoll
  149.         CreatePet(player, creature, 35189);
  150.         break;
  151.         case 59: // Gondria
  152.         CreatePet(player, creature, 33776);
  153.         break;
  154.         case 16: // Spider
  155.         CreatePet(player, creature, 2349);
  156.         break;
  157.         case 17: // Dragonhawk
  158.         CreatePet(player, creature, 27946);
  159.         break;
  160.         case 18: // Bat
  161.         CreatePet(player, creature, 28233);
  162.         break;
  163.         case 19: // Ravager
  164.         CreatePet(player, creature, 17199);
  165.         break;
  166.         case 20: // Raptor
  167.         CreatePet(player, creature, 14821);
  168.         break;
  169.         case 21: // Serpent
  170.         CreatePet(player, creature, 28358);
  171.         break;
  172.         case 1: // Bear
  173.         CreatePet(player, creature, 29319);
  174.         break;
  175.         case 2: // Boar
  176.         CreatePet(player, creature, 29996);
  177.         break;
  178.         case 93: // Bug
  179.         CreatePet(player, creature, 28085);
  180.         break;
  181.         case 4: // Cat
  182.         CreatePet(player, creature, 28097);
  183.         break;
  184.         case 5: // Carrion
  185.         CreatePet(player, creature, 26838);
  186.         break;
  187.         case 6: // Crab
  188.         CreatePet(player, creature, 24478);
  189.         break;
  190.         case 7: // Crocolisk
  191.         CreatePet(player, creature, 1417);
  192.         break;
  193.         case 8: // Gorila
  194.         CreatePet(player, creature, 28213);
  195.         break;
  196.         case 9: // Hound
  197.         CreatePet(player, creature, 29452);
  198.         break;
  199.         case 10: // Hyena
  200.         CreatePet(player, creature, 13036);
  201.         break;
  202.         case 11: // Moth
  203.         CreatePet(player, creature, 27421);
  204.         break;
  205.         case 12: // Owl
  206.         CreatePet(player, creature, 23136);
  207.         break;
  208.         case 13: // Strider
  209.         CreatePet(player, creature, 22807);
  210.         break;
  211.         case 414: // Scorpid
  212.         CreatePet(player, creature, 9698);
  213.         break;
  214.         case 15: // Turtle
  215.         CreatePet(player, creature, 25482);
  216.         break;
  217.         }
  218.         return true;
  219.     }
  220. };
  221.  
  222. void AddSC_Beastmaster_Trainer()
  223. {
  224.     new Beastmaster_Trainer;
  225. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement