Advertisement
julienanid

[Trinity]Beastmaster

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