Advertisement
Parranoia

Beastmaster (Fixed)

May 7th, 2013
558
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.17 KB | None | 0 0
  1. #include "ScriptPCH.h"
  2. #include "Pet.h"
  3.  
  4. class beastmaster : public CreatureScript
  5. {
  6. public:
  7. beastmaster() : CreatureScript("beastmaster"){ }
  8.  
  9.  
  10. void CreatePet(Player *player, Creature * m_creature, uint32 entry)
  11. {
  12. if(player->getClass() != CLASS_HUNTER)
  13. {
  14. m_creature->MonsterWhisper("You're not a hunter.", player->GetGUID());
  15. player->PlayerTalkClass->SendCloseGossip();
  16. return;
  17. }
  18.  
  19. if(player->GetPet())
  20. {
  21. m_creature->MonsterWhisper("First you must abandon your current pet.", player->GetGUID());
  22. player->PlayerTalkClass->SendCloseGossip();
  23. return;
  24. }
  25.  
  26. if (Creature *creatureTarget = m_creature->SummonCreature(entry, player->GetPositionX(), player->GetPositionY()+2, player->GetPositionZ(), player->GetOrientation(), TEMPSUMMON_CORPSE_TIMED_DESPAWN, 500))
  27. if(Pet* pet = player->CreateTamedPetFrom(creatureTarget, 0))
  28. {
  29. // kill original creature
  30. creatureTarget->setDeathState(JUST_DIED);
  31. creatureTarget->RemoveCorpse();
  32. creatureTarget->SetHealth(0);
  33.  
  34. pet->SetPower(POWER_HAPPINESS, 1048000);
  35.  
  36. // prepare visual effect for levelup
  37. pet->SetUInt32Value(UNIT_FIELD_LEVEL, player->getLevel() - 1);
  38. pet->GetMap()->AddToMap((Creature*)pet);
  39. // visual effect for levelup
  40. pet->SetUInt32Value(UNIT_FIELD_LEVEL, player->getLevel());
  41.  
  42.  
  43. if(!pet->InitStatsForLevel(player->getLevel()))
  44. sLog->outError(LOG_FILTER_PETS, "Pet Create fail: no init stats for entry %u", entry);
  45.  
  46. pet->UpdateAllStats();
  47.  
  48. // caster have pet now
  49. player->SetMinion(pet, true);
  50.  
  51. pet->SavePetToDB(PET_SAVE_AS_CURRENT);
  52. pet->InitTalentForLevel();
  53. player->PetSpellInitialize();
  54.  
  55. //end
  56. player->PlayerTalkClass->SendCloseGossip();
  57. m_creature->MonsterWhisper("You now have a pet, you should probably feed it...", player->GetGUID());
  58. }
  59. }
  60.  
  61. bool OnGossipHello(Player *player, Creature * m_creature)
  62. {
  63.  
  64. if(player->getClass() != CLASS_HUNTER)
  65. {
  66. m_creature->MonsterWhisper("You're not a hunter, and cannot tame pets.", player->GetGUID());
  67. return false;
  68. }
  69.  
  70. player->ADD_GOSSIP_ITEM(4, "Tame a new Pet!", GOSSIP_SENDER_MAIN, 100);
  71. player->ADD_GOSSIP_ITEM(2, "Show me the stables.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_STABLEPET);
  72. player->ADD_GOSSIP_ITEM(6, "Show me your food.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_VENDOR);
  73. player->ADD_GOSSIP_ITEM(5, "Nevermind", GOSSIP_SENDER_MAIN, 200);
  74. player->SEND_GOSSIP_MENU(1, m_creature->GetGUID());
  75. return true;
  76.  
  77. }
  78.  
  79. bool OnGossipSelect(Player *player, Creature * m_creature, uint32 sender, uint32 action)
  80. {
  81. player->PlayerTalkClass->ClearMenus();
  82. switch (action)
  83. {
  84. case 100: // Submenu
  85. player->ADD_GOSSIP_ITEM(4, "I want to tame a bear!", GOSSIP_SENDER_MAIN, 1001);
  86. player->ADD_GOSSIP_ITEM(2, "I want to tame a boar!", GOSSIP_SENDER_MAIN, 1002);
  87. player->ADD_GOSSIP_ITEM(6, "I want to tame a crab!", GOSSIP_SENDER_MAIN, 1003);
  88. player->ADD_GOSSIP_ITEM(5, "I want to tame a spider!", GOSSIP_SENDER_MAIN, 1004);
  89. player->ADD_GOSSIP_ITEM(5, "Main Menu.", GOSSIP_SENDER_MAIN, 1005);
  90. player->SEND_GOSSIP_MENU(1, m_creature->GetGUID());
  91. break;
  92.  
  93. case 200: // Nevermind.
  94. player->CLOSE_GOSSIP_MENU();
  95. break;
  96.  
  97. case GOSSIP_OPTION_STABLEPET: // Stables
  98. player->GetSession()->SendStablePet(m_creature->GetGUID());
  99. break;
  100.  
  101. case GOSSIP_OPTION_VENDOR: // Food
  102. player->GetSession()->SendListInventory(m_creature->GetGUID());
  103. break;
  104.  
  105. case 1001: // Bear
  106. player->ADD_GOSSIP_ITEM(4, "Tame a Light Brown Bear", GOSSIP_SENDER_MAIN, 1196);
  107. player->ADD_GOSSIP_ITEM(2, "Tame a White Bear", GOSSIP_SENDER_MAIN, 7444);
  108. player->ADD_GOSSIP_ITEM(4, "Tame a Black Bear", GOSSIP_SENDER_MAIN, 1128);
  109. player->ADD_GOSSIP_ITEM(2, "Tame a Dark Brown Bear", GOSSIP_SENDER_MAIN, 3809);
  110. player->ADD_GOSSIP_ITEM(4, "Tame an Infected Bear", GOSSIP_SENDER_MAIN, 17661);
  111. player->SEND_GOSSIP_MENU(1, m_creature->GetGUID());
  112. break;
  113.  
  114. case 1002: // Boar
  115. player->ADD_GOSSIP_ITEM(4, "Tame a Spiked Red Boar", GOSSIP_SENDER_MAIN, 8303);
  116. player->ADD_GOSSIP_ITEM(2, "Tame a Spiked Blue Boar", GOSSIP_SENDER_MAIN, 22180);
  117. player->ADD_GOSSIP_ITEM(4, "Tame a Spiked Green Boar", GOSSIP_SENDER_MAIN, 16992);
  118. player->ADD_GOSSIP_ITEM(2, "Tame an Armored Boar", GOSSIP_SENDER_MAIN, 4511);
  119. player->ADD_GOSSIP_ITEM(4, "Tame a Black Boar", GOSSIP_SENDER_MAIN, 119);
  120. player->ADD_GOSSIP_ITEM(4, "Tame a Tan Boar", GOSSIP_SENDER_MAIN, 1985);
  121. player->SEND_GOSSIP_MENU(1, m_creature->GetGUID());
  122. break;
  123.  
  124. case 1003: // Crab
  125. player->ADD_GOSSIP_ITEM(4, "Tame a Red Crab", GOSSIP_SENDER_MAIN, 3106);
  126. player->ADD_GOSSIP_ITEM(2, "Tame a Blue Crab", GOSSIP_SENDER_MAIN, 26521);
  127. player->ADD_GOSSIP_ITEM(4, "Tame a Green Crab", GOSSIP_SENDER_MAIN, 922);
  128. player->ADD_GOSSIP_ITEM(2, "Tame a Brown Crab", GOSSIP_SENDER_MAIN, 3814);
  129. player->SEND_GOSSIP_MENU(1, m_creature->GetGUID());
  130. break;
  131.  
  132. case 1004: // Spider
  133. player->ADD_GOSSIP_ITEM(4, "Tame a Crystal Spider", GOSSIP_SENDER_MAIN, 10376);
  134. player->ADD_GOSSIP_ITEM(2, "Tame a Black Widow Spider", GOSSIP_SENDER_MAIN, 930);
  135. player->ADD_GOSSIP_ITEM(4, "Tame a Brown Furry Spider", GOSSIP_SENDER_MAIN, 30206);
  136. player->ADD_GOSSIP_ITEM(2, "Tame a Red Furry Spider", GOSSIP_SENDER_MAIN, 8933);
  137. player->ADD_GOSSIP_ITEM(4, "Tame a White Spider", GOSSIP_SENDER_MAIN, 4040);
  138. player->ADD_GOSSIP_ITEM(2, "Tame a Brown Spider", GOSSIP_SENDER_MAIN, 22044);
  139. player->ADD_GOSSIP_ITEM(4, "Tame a Red Spiky Spider", GOSSIP_SENDER_MAIN, 4380);
  140. player->ADD_GOSSIP_ITEM(2, "Tame a Green Spider", GOSSIP_SENDER_MAIN, 4376);
  141. player->ADD_GOSSIP_ITEM(4, "Tame a Multicolored Spiky Spider", GOSSIP_SENDER_MAIN, 26625);
  142. player->SEND_GOSSIP_MENU(1, m_creature->GetGUID());
  143. break;
  144.  
  145. default:
  146. CreatePet(player, m_creature, action);
  147.  
  148. }
  149.  
  150. return true;
  151. }
  152. };
  153.  
  154. void AddSC_beastmaster()
  155. {
  156. new beastmaster();
  157. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement