Advertisement
Guest User

Beastmaster

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