Advertisement
Guest User

Update Beastmaster

a guest
Feb 17th, 2014
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.78 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. 02-17-2014: Updated to 4.3.4 by ExonatioN, thanks to Tommy for telling POWER_HAPPINESS does not exist in 4.3.4
  10. <--------------------------------------------------------------------------->
  11. */
  12. #include "ScriptPCH.h"
  13. #include "Pet.h"
  14.  
  15. class Npc_Beastmaster : public CreatureScript
  16. {
  17. public:
  18. Npc_Beastmaster() : CreatureScript("Npc_Beastmaster") { }
  19.  
  20. void CreatePet(Player *player, Creature * m_creature, uint32 entry) {
  21.  
  22. if(player->getClass() != CLASS_HUNTER) {
  23. m_creature->MonsterWhisper("You are not Hunter!", player->GetGUID());
  24. return;
  25. }
  26.  
  27. if(player->GetPet()) {
  28. m_creature->MonsterWhisper("First drop your current Pet!", player->GetGUID());
  29. player->PlayerTalkClass->SendCloseGossip();
  30. return;
  31. }
  32.  
  33. Creature *creatureTarget = m_creature->SummonCreature(entry, player->GetPositionX(), player->GetPositionY()+2, player->GetPositionZ(), player->GetOrientation(), TEMPSUMMON_CORPSE_TIMED_DESPAWN, 500);
  34. if(!creatureTarget) return;
  35.  
  36. Pet* pet = player->CreateTamedPetFrom(creatureTarget, 0);
  37. if(!pet) return;
  38.  
  39. creatureTarget->setDeathState(JUST_DIED);
  40. creatureTarget->RemoveCorpse();
  41. creatureTarget->SetHealth(0); // just for nice GM-mode view
  42.  
  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, PET_SLOT_ACTUAL_PET_SLOT);
  59.  
  60. pet->SavePet(PET_SLOT_ACTUAL_PET_SLOT);
  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