Advertisement
Guest User

Untitled

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