Advertisement
Guest User

Untitled

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