Advertisement
WIXXZI

Untitled

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