Guest User

BeastMaster EmuCoach

a guest
Apr 23rd, 2014
697
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.64 KB | None | 0 0
  1. /*
  2. <--------------------------------------------------------------------------->
  3.  - Developer(s): Unknown
  4.  - Updated by Synth (3.3.5)
  5.  - Updated to 4.3.4 by Pewz
  6.  - www.EmuCoach.com
  7. <--------------------------------------------------------------------------->
  8. */
  9. #include "ScriptPCH.h"
  10. #include "Pet.h"
  11.  
  12. class Npc_Beastmaster : public CreatureScript
  13. {
  14. public:
  15.     Npc_Beastmaster() : CreatureScript("Npc_Beastmaster") { }
  16.  
  17.     void CreatePet(Player *player, Creature * m_creature, uint32 entry) {
  18.  
  19.         if(player->getClass() != CLASS_HUNTER) {
  20.         m_creature->MonsterWhisper("You are not Hunter!", player->GetGUID());
  21.             return;
  22.         }
  23.  
  24.         if(player->GetPet()) {
  25.             m_creature->MonsterWhisper("First drop your current Pet!", player->GetGUID());
  26.             player->PlayerTalkClass->SendCloseGossip();
  27.             return;
  28.         }
  29.  
  30.         Creature *creatureTarget = m_creature->SummonCreature(entry, player->GetPositionX(), player->GetPositionY()+2, player->GetPositionZ(), player->GetOrientation(), TEMPSUMMON_CORPSE_TIMED_DESPAWN, 500);
  31.         if(!creatureTarget) return;
  32.  
  33.         Pet* pet = player->CreateTamedPetFrom(creatureTarget, 0);
  34.         if(!pet) return;
  35.  
  36.         creatureTarget->setDeathState(JUST_DIED);
  37.         creatureTarget->RemoveCorpse();
  38.         creatureTarget->SetHealth(0);                       // just for nice GM-mode view
  39.  
  40.  
  41.         pet->SetUInt64Value(UNIT_FIELD_CREATEDBY, player->GetGUID());
  42.         pet->SetUInt32Value(UNIT_FIELD_FACTIONTEMPLATE, player->getFaction());
  43.  
  44.         pet->SetUInt32Value(UNIT_FIELD_LEVEL, player->getLevel() - 1);
  45.         pet->GetMap()->AddToMap(pet->ToCreature());
  46.  
  47.         pet->SetUInt32Value(UNIT_FIELD_LEVEL, player->getLevel());
  48.  
  49.         pet->GetCharmInfo()->SetPetNumber(sObjectMgr->GeneratePetNumber(), true);
  50.         if(!pet->InitStatsForLevel(player->getLevel()))
  51.             sLog->outError(LOG_FILTER_PETS, "Fail: no init stats for entry %u", entry);
  52.  
  53.         pet->UpdateAllStats();
  54.  
  55.         player->SetMinion(pet, true, PET_SLOT_ACTUAL_PET_SLOT);
  56.  
  57.         pet->SavePet(PET_SLOT_ACTUAL_PET_SLOT);
  58.         pet->InitTalentForLevel();
  59.         player->PetSpellInitialize();
  60.  
  61.         player->PlayerTalkClass->SendCloseGossip();
  62.         m_creature->MonsterWhisper("Pet successfully added!", player->GetGUID());
  63.     }
  64.  
  65.  
  66.     bool OnGossipHello(Player *player, Creature * m_creature)
  67.     {
  68.  
  69.         if(player->getClass() != CLASS_HUNTER)
  70.         {
  71.             m_creature->MonsterWhisper("You are not Hunter!", player->GetGUID());
  72.             return true;
  73.         }
  74.         player->ADD_GOSSIP_ITEM(3, "Get a New Pet", GOSSIP_SENDER_MAIN, 30);
  75.         if (player->CanTameExoticPets())
  76.         {
  77.             player->ADD_GOSSIP_ITEM(7, "Get a New Exotic Pet.", GOSSIP_SENDER_MAIN, 50);
  78.         }
  79.             player->ADD_GOSSIP_ITEM(2, "Visit the Stable", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_STABLEPET);
  80.             player->ADD_GOSSIP_ITEM(1, "Foods for my Pet", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_VENDOR);
  81.             player->ADD_GOSSIP_ITEM(4, "Nevermind", GOSSIP_SENDER_MAIN, 150);
  82.         player->SEND_GOSSIP_MENU(1, m_creature->GetGUID());
  83.         return true;
  84.     }
  85.  
  86.     bool OnGossipSelect(Player *player, Creature * m_creature, uint32 sender, uint32 action)
  87.     {
  88.         player->PlayerTalkClass->ClearMenus();
  89.         switch (action)
  90.         {
  91.  
  92.         case 100:
  93.             player->ADD_GOSSIP_ITEM(3, "Get a New Pet", GOSSIP_SENDER_MAIN, 30);
  94.             if (player->CanTameExoticPets())
  95.             {
  96.                 player->ADD_GOSSIP_ITEM(7, "Get a New Exotic Pet.", GOSSIP_SENDER_MAIN, 50);
  97.             }
  98.             player->ADD_GOSSIP_ITEM(2, "Visit the Stable", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_STABLEPET);
  99.             player->ADD_GOSSIP_ITEM(1, "Foods for my Pet", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_VENDOR);
  100.             player->ADD_GOSSIP_ITEM(4, "Nevermind", GOSSIP_SENDER_MAIN, 150);
  101.             player->SEND_GOSSIP_MENU(1, m_creature->GetGUID());
  102.             break;
  103.  
  104.         case 150:
  105.             player->CLOSE_GOSSIP_MENU();
  106.             break;
  107.  
  108.         case 30:
  109.             player->ADD_GOSSIP_ITEM(4, "<- Main Menu", GOSSIP_SENDER_MAIN, 100);
  110.             player->ADD_GOSSIP_ITEM(4, "Next Page ->", GOSSIP_SENDER_MAIN, 31);
  111.             player->ADD_GOSSIP_ITEM(6, "Bat.", GOSSIP_SENDER_MAIN, 18);
  112.             player->ADD_GOSSIP_ITEM(6, "Bear.", GOSSIP_SENDER_MAIN, 1);
  113.             player->ADD_GOSSIP_ITEM(6, "Boar.", GOSSIP_SENDER_MAIN, 2);
  114.             player->ADD_GOSSIP_ITEM(6, "Cat.", GOSSIP_SENDER_MAIN, 4);
  115.             player->ADD_GOSSIP_ITEM(6, "Carrion Bird.", GOSSIP_SENDER_MAIN, 5);
  116.             player->ADD_GOSSIP_ITEM(6, "Crab.", GOSSIP_SENDER_MAIN, 6);
  117.             player->ADD_GOSSIP_ITEM(6, "Crocolisk.", GOSSIP_SENDER_MAIN, 7);
  118.             player->ADD_GOSSIP_ITEM(6, "Dragonhawk.", GOSSIP_SENDER_MAIN, 17);
  119.             player->ADD_GOSSIP_ITEM(6, "Gorilla.", GOSSIP_SENDER_MAIN, 8);
  120.             player->ADD_GOSSIP_ITEM(6, "Hound.", GOSSIP_SENDER_MAIN, 9);
  121.             player->ADD_GOSSIP_ITEM(6, "Hyena.", GOSSIP_SENDER_MAIN, 10);
  122.             player->ADD_GOSSIP_ITEM(6, "Moth.", GOSSIP_SENDER_MAIN, 11);
  123.             player->ADD_GOSSIP_ITEM(6, "Owl.", GOSSIP_SENDER_MAIN, 12);
  124.             player->SEND_GOSSIP_MENU(1, m_creature->GetGUID());
  125.             break;
  126.  
  127.         case 31:  
  128.             player->ADD_GOSSIP_ITEM(4, "<- Main Menu", GOSSIP_SENDER_MAIN, 30);
  129.             player->ADD_GOSSIP_ITEM(4, "<- Previous Page", GOSSIP_SENDER_MAIN, 30);
  130.             player->ADD_GOSSIP_ITEM(6, "Raptor.", GOSSIP_SENDER_MAIN, 20);
  131.             player->ADD_GOSSIP_ITEM(6, "Ravager.", GOSSIP_SENDER_MAIN, 19);
  132.             player->ADD_GOSSIP_ITEM(6, "Strider.", GOSSIP_SENDER_MAIN, 13);
  133.             player->ADD_GOSSIP_ITEM(6, "Scorpid.", GOSSIP_SENDER_MAIN, 414);
  134.             player->ADD_GOSSIP_ITEM(6, "Spider.", GOSSIP_SENDER_MAIN, 16);
  135.             player->ADD_GOSSIP_ITEM(6, "Serpent.", GOSSIP_SENDER_MAIN, 21);  
  136.             player->ADD_GOSSIP_ITEM(6, "Turtle.", GOSSIP_SENDER_MAIN, 15);
  137.             player->ADD_GOSSIP_ITEM(6, "Wasp.", GOSSIP_SENDER_MAIN, 93);
  138.             player->SEND_GOSSIP_MENU(1, m_creature->GetGUID());
  139.             break;
  140.  
  141.         case 50:  
  142.             player->ADD_GOSSIP_ITEM(4, "<- Main Menu", GOSSIP_SENDER_MAIN, 100);
  143.             player->ADD_GOSSIP_ITEM(6, "Chimaera.", GOSSIP_SENDER_MAIN, 51);
  144.             player->ADD_GOSSIP_ITEM(6, "Core Hound.", GOSSIP_SENDER_MAIN, 52);
  145.             player->ADD_GOSSIP_ITEM(6, "Devilsaur.", GOSSIP_SENDER_MAIN, 53);
  146.             player->ADD_GOSSIP_ITEM(6, "Rhino.", GOSSIP_SENDER_MAIN, 54);
  147.             player->ADD_GOSSIP_ITEM(6, "Silithid.", GOSSIP_SENDER_MAIN, 55);
  148.             player->ADD_GOSSIP_ITEM(6, "Worm.", GOSSIP_SENDER_MAIN, 56);  
  149.             player->ADD_GOSSIP_ITEM(6, "Loque'nahak.", GOSSIP_SENDER_MAIN, 57);
  150.             player->ADD_GOSSIP_ITEM(6, "Skoll.", GOSSIP_SENDER_MAIN, 58);
  151.             player->ADD_GOSSIP_ITEM(6, "Gondria.", GOSSIP_SENDER_MAIN, 59);
  152.             player->SEND_GOSSIP_MENU(1, m_creature->GetGUID());
  153.             break;
  154.  
  155.         case GOSSIP_OPTION_STABLEPET:
  156.             player->GetSession()->SendStablePet(m_creature->GetGUID());
  157.             break;
  158.         case GOSSIP_OPTION_VENDOR:
  159.             player->GetSession()->SendListInventory(m_creature->GetGUID());
  160.             break;
  161.         case 51: //chimera
  162.             CreatePet(player, m_creature, 21879);
  163.             break;
  164.         case 52: //core hound
  165.             CreatePet(player, m_creature, 21108);
  166.             break;
  167.         case 53: //devilsaur
  168.             CreatePet(player, m_creature, 20931);
  169.             break;
  170.         case 54: //rhino
  171.             CreatePet(player, m_creature, 30445);
  172.             break;
  173.         case 55: //silithid
  174.             CreatePet(player, m_creature, 5460);
  175.             break;
  176.         case 56: //worm
  177.             CreatePet(player, m_creature, 30148);
  178.             break;
  179.         case 57: //loque'nahak
  180.             CreatePet(player, m_creature, 32517);
  181.             break;
  182.         case 58: //skoll
  183.             CreatePet(player, m_creature, 35189);
  184.             break;
  185.         case 59: //gondria
  186.             CreatePet(player, m_creature, 33776);
  187.             break;
  188.         case 16: //spider
  189.             CreatePet(player, m_creature, 2349);
  190.             break;
  191.         case 17: //dragonhawk
  192.             CreatePet(player, m_creature, 27946);
  193.             break;
  194.         case 18: //bat
  195.             CreatePet(player, m_creature, 28233);
  196.             break;
  197.         case 19: //ravager
  198.             CreatePet(player, m_creature, 17199);
  199.             break;
  200.         case 20: //raptor
  201.             CreatePet(player, m_creature, 14821);
  202.             break;
  203.         case 21: //serpent
  204.             CreatePet(player, m_creature, 28358);
  205.             break;
  206.         case 1: //bear
  207.             CreatePet(player, m_creature, 29319);
  208.             break;
  209.         case 2: //boar
  210.             CreatePet(player, m_creature, 29996);
  211.             break;
  212.         case 93: //bug
  213.             CreatePet(player, m_creature, 28085);
  214.             break;
  215.         case 4: //cat
  216.             CreatePet(player, m_creature, 28097);
  217.             break;
  218.         case 5: //carrion
  219.             CreatePet(player, m_creature, 26838);
  220.             break;
  221.         case 6: //crab
  222.             CreatePet(player, m_creature, 24478);
  223.             break;  
  224.         case 7: //crocolisk
  225.             CreatePet(player, m_creature, 1417);
  226.             break;  
  227.         case 8: //gorila
  228.             CreatePet(player, m_creature, 28213);
  229.             break;
  230.         case 9: //hound
  231.             CreatePet(player, m_creature, 29452);
  232.             break;
  233.         case 10: //hyena
  234.             CreatePet(player, m_creature, 13036);
  235.             break;
  236.         case 11: //moth
  237.             CreatePet(player, m_creature, 27421);
  238.             break;
  239.         case 12: //owl
  240.             CreatePet(player, m_creature, 23136);
  241.             break;
  242.         case 13: //strider
  243.             CreatePet(player, m_creature, 22807);
  244.             break;
  245.         case 414: //scorpid
  246.             CreatePet(player, m_creature, 9698);
  247.             break;
  248.         case 15: //turtle
  249.             CreatePet(player, m_creature, 25482);
  250.             break;
  251.         }
  252.         return true;
  253.     }
  254. };
  255.  
  256. void AddSC_Npc_Beastmaster()
  257. {
  258.     new Npc_Beastmaster();
  259. }
Advertisement
Add Comment
Please, Sign In to add comment