Advertisement
Valtorei

Beastmaster.cpp

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