Skip to content

Instantly share code, notes, and snippets.

@Mortos
Last active January 2, 2016 23:39

Revisions

  1. Mortos revised this gist Jan 11, 2014. 2 changed files with 2 additions and 2 deletions.
    2 changes: 1 addition & 1 deletion npc_beastmaster.cpp
    Original file line number Diff line number Diff line change
    @@ -310,4 +310,4 @@ class beastmaster_creaturescript : public CreatureScript {

    void AddSC_beastmaster_npc() {
    new beastmaster_creaturescript;
    }
    }
    2 changes: 1 addition & 1 deletion npc_beastmaster.sql
    Original file line number Diff line number Diff line change
    @@ -27,4 +27,4 @@ INSERT INTO `npc_vendor` (`entry`, `slot`, `item`, `maxcount`, `incrtime`, `Exte
    (@BEASTMASTER, 0, 4541, 0, 0, 0), -- Freshly Baked Bread
    (@BEASTMASTER, 0, 4607, 0, 0, 0), -- Delicious Cave Mold
    (@BEASTMASTER, 0, 4536, 0, 0, 0), -- Shiny Red Apple
    (@BEASTMASTER, 0, 33451, 0, 0, 0); -- Fillet of Icefin
    (@BEASTMASTER, 0, 33451, 0, 0, 0); -- Fillet of Icefin
  2. Mortos renamed this gist Jan 11, 2014. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  3. Mortos created this gist Jan 11, 2014.
    30 changes: 30 additions & 0 deletions gistfile1.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,30 @@
    -- -----------------

    -- BeastMasterNPC ---

    -- -----------------

    SET @BEASTMASTER := 26307 ; -- TTR Beastmaster

    -- Clean before inserting data

    DELETE FROM `creature_template` WHERE `entry` = @BEASTMASTER ;

    DELETE FROM `npc_vendor` WHERE `entry` = @BEASTMASTER ;

    DELETE FROM `creature` WHERE `id` = @BEASTMASTER ;

    -- Create Beast Master

    INSERT INTO `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `modelid1`, `modelid2`, `modelid3`, `modelid4`, `name`, `subname`, `IconName`, `gossip_menu_id`, `minlevel`, `maxlevel`, `exp`, `faction_A`, `faction_H`, `npcflag`, `speed_walk`, `speed_run`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `dmg_multiplier`, `baseattacktime`, `rangeattacktime`, `unit_class`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `trainer_class`, `trainer_race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `spell5`, `spell6`, `spell7`, `spell8`, `PetSpellDataId`, `VehicleId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `Health_mod`, `Mana_mod`, `Armor_mod`, `RacialLeader`, `questItem1`, `questItem2`, `questItem3`, `questItem4`, `questItem5`, `questItem6`, `movementId`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`, `WDBVerified`) VALUES

    (@BEASTMASTER, 0, 0, 0, 0, 0, 24028, 0, 0, 0, 'Beastmaster', '', '', 0, 80, 80, 0, 35, 35, 4194433, 1, 1.14286, 1, 0, 1755, 1755, 0, 1504, 1, 1500, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 0, 3, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 'beastmaster_creaturescript', 0);

    -- Random Food
    INSERT INTO `npc_vendor` (`entry`, `slot`, `item`, `maxcount`, `incrtime`, `ExtendedCost`) VALUES
    (@BEASTMASTER, 0, 3771, 0, 0, 0), -- Wild Hog Shank
    (@BEASTMASTER, 0, 3927, 0, 0, 0), -- Fine Aged Cheddar
    (@BEASTMASTER, 0, 4541, 0, 0, 0), -- Freshly Baked Bread
    (@BEASTMASTER, 0, 4607, 0, 0, 0), -- Delicious Cave Mold
    (@BEASTMASTER, 0, 4536, 0, 0, 0), -- Shiny Red Apple
    (@BEASTMASTER, 0, 33451, 0, 0, 0); -- Fillet of Icefin
    313 changes: 313 additions & 0 deletions npc_beastmaster.cpp
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,313 @@
    /*
    * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
    *
    * Copyright (C) 2009-2014 DSS Mortos <[email protected]>
    *
    * This program is free software; you can redistribute it and/or modify it
    * under the terms of the GNU General Public License as published by the
    * Free Software Foundation; either version 2 of the License, or (at your
    * option) any later version.
    *
    * This program is distributed in the hope that it will be useful, but WITHOUT
    * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
    * more details.
    *
    * You should have received a copy of the GNU General Public License along
    * with this program. If not, see <http://www.gnu.org/licenses/>.
    */

    #include "Config.h"
    #include "Pet.h"

    enum GOSSIPS {
    GOSSIP_OPTION_MAINMENU = 20, //Main Menu entry
    GOSSIP_OPTION_NEWPET_EXOTIC = 21, //Exotic pet menu entry
    GOSSIP_OPTION_NEWPET = 22, //Normal pet menu entry
    GOSSIP_OPTION_CHIMERA = 23, //Cast Pet Chimera
    GOSSIP_OPTION_CORE_HOUND = 24, //Cast Pet Core Hound
    GOSSIP_OPTION_DEVILSAUR = 25, //Cast Pet Devilsaur
    GOSSIP_OPTION_RHINO = 26, //Cast Pet Rhino
    GOSSIP_OPTION_SILITHID = 27, //Cast Pet Silithid
    GOSSIP_OPTION_WORM = 28, //Cast Pet Worm
    GOSSIP_OPTION_SPIRIT_BEAST = 29, //Cast Pet SpiritBeast
    GOSSIP_OPTION_BAT = 30, //Cast Pet Bat
    GOSSIP_OPTION_BOAR = 31, //Cast Pet Boar
    GOSSIP_OPTION_BEAR = 32, //Cast Pet Bear
    GOSSIP_OPTION_CAT = 33, //Cast Pet Cat
    GOSSIP_OPTION_CARRION_BIRD = 34, //Cast Pet Carrion Bird
    GOSSIP_OPTION_CROCOLISK = 35, //Cast Pet Crocolisk
    GOSSIP_OPTION_CRAB = 36, //Cast Pet Crab
    GOSSIP_OPTION_DRAGONHAWK = 37, //Cast Pet Dragonhawk
    GOSSIP_OPTION_GORILLA = 38, //Cast Pet Gorilla
    GOSSIP_OPTION_HOUND = 39, //Cast Pet Hound
    GOSSIP_OPTION_HYENA = 40, //Cast Pet Hyena
    GOSSIP_OPTION_MOTH = 41, //Cast Pet Moth
    GOSSIP_OPTION_NETHER_RAY = 42, //Cast Pet Nether Ray
    GOSSIP_OPTION_OWL = 43, //Cast Pet Bird of Prey
    GOSSIP_OPTION_RAPTOR = 44, //Cast Pet Raptor
    GOSSIP_OPTION_RAVAGER = 45, //Cast Pet Ravager
    GOSSIP_OPTION_SCORPID = 46, //Cast Pet Scorpid
    GOSSIP_OPTION_SERPENT = 47, //Cast Pet Serpent
    GOSSIP_OPTION_SPIDER = 48, //Cast Pet Spider
    GOSSIP_OPTION_TURTLE = 49, //Cast Pet Turtle
    GOSSIP_OPTION_WASP = 50, //Cast Pet Wasp
    GOSSIP_OPTION_WARP_STALKER = 51, //Cast Pet Warp Stalker
    GOSSIP_OPTION_WIND_SERPENT = 52, //Cast Pet Wind Serpent
    GOSSIP_OPTION_WOLF = 53, //Cast Pet Wolf
    GOSSIP_OPTION_SPOREBAT = 55, //Cast Pet Sporebat
    GOSSIP_OPTION_TALLSTRIDER = 56, //Cast Pet Tallstriker
    };

    enum NormalPetEntry {
    SPELL_PET_BAT = 46717, //Add Tamable Bat (26017)
    SPELL_PET_BOAR = 46718, //Add Tamable Boar (26020)
    SPELL_PET_BEAR = 64330, //Add Tamable Bear (34025)
    SPELL_PET_CAT = 46720, //Add Tamable Cat (26021)
    SPELL_PET_CARRION_BIRD = 46719, //Add Tamable Carrion Bird (26019)
    SPELL_PET_CROCOLISK = 64332, //Add Tamable Crocolisk (34027)
    SPELL_PET_CRAB = 64331, //Add Tamable Crab (34026)
    SPELL_PET_DRAGONHAWK = 46721, //Add Tamable Dragonhawk (26024)
    SPELL_PET_HOUND = 96234, //Add Tamable Dog (52010)
    SPELL_PET_GORILLA = 64333, //Add Tamable Gorilla (34028)
    SPELL_PET_HYENA = 64335, //Add Tamable Hyena (34019)
    SPELL_PET_MOTH = 64334, //Add Tamable Moth (34021)
    SPELL_PET_NETHER_RAY = 46722, //Add Tamable Nether Ray (26027)
    SPELL_PET_BIRD_OF_PREY = 46723, //Add Tamable Bird of Prey (26028)
    SPELL_PET_RAPTOR = 46724, //Add Tamable Raptor (26029)
    SPELL_PET_RAVAGER = 46725, //Add Tamable Ravager (26030)
    SPELL_PET_SCORPID = 46726, //Add Tamable Scorpid (26031)
    SPELL_PET_SERPENT = 46727, //Add Tamable Serpent (26032)
    SPELL_PET_SPIDER = 46728, //Add Tamable Spider (26033)
    SPELL_PET_SPOREBAT = 64336, //Add Tameable Sporebat (34018)
    SPELL_PET_TALLSTRIDER = 64337, //Add Tameable Tallstrider (34022)
    SPELL_PET_TURTLE = 64339, //Add Tamable Turtle (34029)
    SPELL_PET_WASP = 64338, //Add Tamable Wasp (34024)
    SPELL_PET_WARP_STALKER = 46716, //Add Tamable Warp Stalker (26037)
    SPELL_PET_WIND_SERPENT = 46729, //Add Tamable Wind Serpent (26038)
    SPELL_PET_WOLF = 46730, //Add Tamable Wolf (26016)
    };

    enum ExoticPetEntry {
    SPELL_PET_CHIMAERA = 63177, //Add Tamable Chimaera (33504)
    SPELL_PET_CORE_HOUND = 63178, //Add Tamable Core Hound (33502)
    SPELL_PET_DEVILSAUR = 63179, //Add Tamable Devilsaur (33505)
    SPELL_PET_RHINO = 63180, //Add Tamable Rhino (33506)
    SPELL_PET_SILITHID = 63183, //Add Tamable Silithid (33508)
    SPELL_PET_WORM = 63185, //Add Tamable Worm (33511)
    SPELL_PET_SPIRIT_BEAST = 63184, //Add Tamable Spirit Beast (33510)
    };

    class beastmaster_creaturescript : public CreatureScript {
    public:
    beastmaster_creaturescript() : CreatureScript("beastmaster_creaturescript") { }

    void CreateNewPet(Player* player, Creature* npc, uint32 entry) {
    //check for existing pets
    if (player->GetPet()) {
    ChatHandler(player->GetSession()).PSendSysMessage("You already have a pet.");
    player->PlayerTalkClass->SendCloseGossip();
    return;
    }
    //add the new pet
    npc->CastSpell(player, entry);
    if (Pet* newpet = player->GetPet())
    //because feed your pet is boring
    newpet->SetPower(POWER_HAPPINESS, 1048000);
    //we're done!
    player->PlayerTalkClass->SendCloseGossip();
    }

    void DisplayMainMenu(Player* player, Creature* npc) {
    if (player->CanTameExoticPets())
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, "What exotic pets do you have?", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_NEWPET_EXOTIC);

    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, "I need a new pet.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_NEWPET);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, "Sell me some food for my pet.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_VENDOR);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Take me to the stable.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_STABLEPET);
    player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, npc->GetGUID());
    }

    void DisplayExoticPetMenu(Player* player, Creature* npc) {
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "Main Menu.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_MAINMENU);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Chimaera.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_CHIMERA);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Core Hound.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_CORE_HOUND);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Devilsaur.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_DEVILSAUR);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Rhino.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_RHINO);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Silithid.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_SILITHID);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Worm.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_WORM);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Spirit Beast", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_SPIRIT_BEAST);
    player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, npc->GetGUID());
    }

    void DisplayNormalPetMenu(Player* player, Creature* npc) {
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, "Main Menu.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_MAINMENU);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Bat.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_BAT);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Boar.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_BOAR);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Bear.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_BEAR);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Cat.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_CAT);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Carrion Bird.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_CARRION_BIRD);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Crocolisk.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_CROCOLISK);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Crab.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_CRAB);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Dragonhawk.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_DRAGONHAWK);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Gorilla.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_GORILLA);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Hound.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_HOUND);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Hyena.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_HYENA);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Moth.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_MOTH);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Nether Ray.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_NETHER_RAY);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Owl.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_OWL);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Raptor.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_RAPTOR);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Ravager.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_RAVAGER);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Scorpid.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_SCORPID);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Serpent.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_SERPENT);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Spider.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_SPIDER);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Sporebat.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_SPIDER);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Tallstrider.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_TALLSTRIDER);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Turtle.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_TURTLE);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Warp Stalker.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_WARP_STALKER);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Wasp.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_WASP);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Wind Serpent.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_WIND_SERPENT);
    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_MONEY_BAG, "Wolf.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_WOLF);
    player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, npc->GetGUID());
    }

    bool OnGossipHello(Player* player, Creature* npc) {
    if (player->getClass() != CLASS_HUNTER) {
    player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, npc->GetGUID());
    return true;
    }

    DisplayMainMenu(player, npc);
    return true;
    }

    bool OnGossipSelect(Player* player, Creature* npc, uint32 sender, uint32 action) {
    if (!player)
    return false;

    player->PlayerTalkClass->ClearMenus();
    switch (action) {
    //Display Main Menu
    case GOSSIP_OPTION_MAINMENU:
    DisplayMainMenu(player, npc);
    break;
    //Exotic Pets
    case GOSSIP_OPTION_NEWPET_EXOTIC:
    DisplayExoticPetMenu(player, npc);
    break;
    case GOSSIP_OPTION_CHIMERA:
    CreateNewPet(player, npc, SPELL_PET_CHIMAERA);
    break;
    case GOSSIP_OPTION_CORE_HOUND:
    CreateNewPet(player, npc, SPELL_PET_CORE_HOUND);
    break;
    case GOSSIP_OPTION_DEVILSAUR:
    CreateNewPet(player, npc, SPELL_PET_DEVILSAUR);
    break;
    case GOSSIP_OPTION_RHINO:
    CreateNewPet(player, npc, SPELL_PET_RHINO);
    break;
    case GOSSIP_OPTION_SILITHID:
    CreateNewPet(player, npc, SPELL_PET_SILITHID);
    break;
    case GOSSIP_OPTION_WORM:
    CreateNewPet(player, npc, SPELL_PET_WORM);
    break;
    case GOSSIP_OPTION_SPIRIT_BEAST:
    CreateNewPet(player, npc, SPELL_PET_SPIRIT_BEAST);
    break;
    //Normal pets
    case GOSSIP_OPTION_NEWPET:
    DisplayNormalPetMenu(player, npc);
    break;
    case GOSSIP_OPTION_BAT:
    CreateNewPet(player, npc, SPELL_PET_BAT);
    break;
    case GOSSIP_OPTION_BOAR:
    CreateNewPet(player, npc, SPELL_PET_BOAR);
    break;
    case GOSSIP_OPTION_BEAR:
    CreateNewPet(player, npc, SPELL_PET_BEAR);
    break;
    case GOSSIP_OPTION_CAT:
    CreateNewPet(player, npc, SPELL_PET_CAT);
    break;
    case GOSSIP_OPTION_CARRION_BIRD:
    CreateNewPet(player, npc, SPELL_PET_CARRION_BIRD);
    break;
    case GOSSIP_OPTION_CROCOLISK:
    CreateNewPet(player, npc, SPELL_PET_CARRION_BIRD);
    break;
    case GOSSIP_OPTION_CRAB:
    CreateNewPet(player, npc, SPELL_PET_CRAB);
    break;
    case GOSSIP_OPTION_DRAGONHAWK:
    CreateNewPet(player, npc, SPELL_PET_DRAGONHAWK);
    break;
    case GOSSIP_OPTION_GORILLA:
    CreateNewPet(player, npc, SPELL_PET_GORILLA);
    break;
    case GOSSIP_OPTION_HOUND:
    CreateNewPet(player, npc, SPELL_PET_HOUND);
    break;
    case GOSSIP_OPTION_HYENA:
    CreateNewPet(player, npc, SPELL_PET_HYENA);
    break;
    case GOSSIP_OPTION_MOTH:
    CreateNewPet(player, npc, SPELL_PET_MOTH);
    break;
    case GOSSIP_OPTION_NETHER_RAY:
    CreateNewPet(player, npc, SPELL_PET_NETHER_RAY);
    break;
    case GOSSIP_OPTION_OWL:
    CreateNewPet(player, npc, SPELL_PET_BIRD_OF_PREY);
    break;
    case GOSSIP_OPTION_RAPTOR:
    CreateNewPet(player, npc, SPELL_PET_RAPTOR);
    break;
    case GOSSIP_OPTION_RAVAGER:
    CreateNewPet(player, npc, SPELL_PET_RAVAGER);
    break;
    case GOSSIP_OPTION_SCORPID:
    CreateNewPet(player, npc, SPELL_PET_SCORPID);
    break;
    case GOSSIP_OPTION_SERPENT:
    CreateNewPet(player, npc, SPELL_PET_SERPENT);
    break;
    case GOSSIP_OPTION_SPIDER:
    CreateNewPet(player, npc, SPELL_PET_SPIDER);
    break;
    case GOSSIP_OPTION_TURTLE:
    CreateNewPet(player, npc, SPELL_PET_TURTLE);
    break;
    case GOSSIP_OPTION_WASP:
    CreateNewPet(player, npc, SPELL_PET_WASP);
    break;
    case GOSSIP_OPTION_WIND_SERPENT:
    CreateNewPet(player, npc, SPELL_PET_WIND_SERPENT);
    break;
    case GOSSIP_OPTION_WOLF:
    CreateNewPet(player, npc, SPELL_PET_WOLF);
    break;
    case GOSSIP_OPTION_SPOREBAT:
    CreateNewPet(player, npc, SPELL_PET_SPOREBAT);
    break;
    case GOSSIP_OPTION_TALLSTRIDER:
    CreateNewPet(player, npc, SPELL_PET_TALLSTRIDER);
    break;
    //Stable
    case GOSSIP_OPTION_STABLEPET:
    player->GetSession()->SendStablePet(npc->GetGUID());
    break;
    //Food vendor
    case GOSSIP_OPTION_VENDOR:
    player->GetSession()->SendListInventory(npc->GetGUID());
    break;
    }
    return true;
    }
    };

    void AddSC_beastmaster_npc() {
    new beastmaster_creaturescript;
    }