bool OnGossipSelect(Player *player, Creature * m_creature, uint32 sender, uint32 action) { player->PlayerTalkClass->ClearMenus(); switch (action) { case 100: // Submenu player->ADD_GOSSIP_ITEM(4, "I want to tame a bear!", GOSSIP_SENDER_MAIN, 1001); player->ADD_GOSSIP_ITEM(2, "I want to tame a boar!", GOSSIP_SENDER_MAIN, 1002); player->ADD_GOSSIP_ITEM(6, "I want to tame a crab!", GOSSIP_SENDER_MAIN, 1003); player->ADD_GOSSIP_ITEM(5, "I want to tame a spider!", GOSSIP_SENDER_MAIN, 1004); player->ADD_GOSSIP_ITEM(5, "Main Menu.", GOSSIP_SENDER_MAIN, 1005); player->SEND_GOSSIP_MENU(1, m_creature->GetGUID()); break; case 200: // Nevermind. player->CLOSE_GOSSIP_MENU(); break; case GOSSIP_OPTION_STABLEPET: // Stables player->GetSession()->SendStablePet(m_creature->GetGUID()); break; case GOSSIP_OPTION_VENDOR: // Food player->GetSession()->SendListInventory(m_creature->GetGUID()); break; case 1001: // Bear player->ADD_GOSSIP_ITEM(4, "Tame a Light Brown Bear", GOSSIP_SENDER_MAIN, 1196); player->ADD_GOSSIP_ITEM(2, "Tame a White Bear", GOSSIP_SENDER_MAIN, 7444); player->ADD_GOSSIP_ITEM(4, "Tame a Black Bear", GOSSIP_SENDER_MAIN, 1128); player->ADD_GOSSIP_ITEM(2, "Tame a Dark Brown Bear", GOSSIP_SENDER_MAIN, 3809); player->ADD_GOSSIP_ITEM(4, "Tame an Infected Bear", GOSSIP_SENDER_MAIN, 17661); player->SEND_GOSSIP_MENU(1, m_creature->GetGUID()); break; case 1002: // Boar player->ADD_GOSSIP_ITEM(4, "Tame a Spiked Red Boar", GOSSIP_SENDER_MAIN, 8303); player->ADD_GOSSIP_ITEM(2, "Tame a Spiked Blue Boar", GOSSIP_SENDER_MAIN, 22180); player->ADD_GOSSIP_ITEM(4, "Tame a Spiked Green Boar", GOSSIP_SENDER_MAIN, 16992); player->ADD_GOSSIP_ITEM(2, "Tame an Armored Boar", GOSSIP_SENDER_MAIN, 4511); player->ADD_GOSSIP_ITEM(4, "Tame a Black Boar", GOSSIP_SENDER_MAIN, 119); player->ADD_GOSSIP_ITEM(4, "Tame a Tan Boar", GOSSIP_SENDER_MAIN, 1985); player->SEND_GOSSIP_MENU(1, m_creature->GetGUID()); break; case 1003: // Crab player->ADD_GOSSIP_ITEM(4, "Tame a Red Crab", GOSSIP_SENDER_MAIN, 3106); player->ADD_GOSSIP_ITEM(2, "Tame a Blue Crab", GOSSIP_SENDER_MAIN, 26521); player->ADD_GOSSIP_ITEM(4, "Tame a Green Crab", GOSSIP_SENDER_MAIN, 922); player->ADD_GOSSIP_ITEM(2, "Tame a Brown Crab", GOSSIP_SENDER_MAIN, 3814); player->SEND_GOSSIP_MENU(1, m_creature->GetGUID()); break; case 1004: // Spider player->ADD_GOSSIP_ITEM(4, "Tame a Crystal Spider", GOSSIP_SENDER_MAIN, 10376); player->ADD_GOSSIP_ITEM(2, "Tame a Black Widow Spider", GOSSIP_SENDER_MAIN, 930); player->ADD_GOSSIP_ITEM(4, "Tame a Brown Furry Spider", GOSSIP_SENDER_MAIN, 30206); player->ADD_GOSSIP_ITEM(2, "Tame a Red Furry Spider", GOSSIP_SENDER_MAIN, 8933); player->ADD_GOSSIP_ITEM(4, "Tame a White Spider", GOSSIP_SENDER_MAIN, 4040); player->ADD_GOSSIP_ITEM(2, "Tame a Brown Spider", GOSSIP_SENDER_MAIN, 22044); player->ADD_GOSSIP_ITEM(4, "Tame a Red Spiky Spider", GOSSIP_SENDER_MAIN, 4380); player->ADD_GOSSIP_ITEM(2, "Tame a Green Spider", GOSSIP_SENDER_MAIN, 4376); player->ADD_GOSSIP_ITEM(4, "Tame a Multicolored Spiky Spider", GOSSIP_SENDER_MAIN, 26625); player->SEND_GOSSIP_MENU(1, m_creature->GetGUID()); break; default: CreatePet(player, m_creature, action); } return true; }
void UpdateAI(const uint32 diff) { ReduceCD(diff); if(IAmDead()) return; if(!m_creature->isInCombat()) { DoNonCombatActions(); } if(pet && pet != NULL && pet->isDead()) { master->SetBotsPetDied(); pet = NULL; } //if we think we have a pet, but master doesn't, it means we teleported if(pet && master->m_botHasPet == false) { master->SetBotsPetDied(); pet = NULL; } DoNormalAttack(diff); ScriptedAI::UpdateAI(diff); //if low on health, drink a potion if(m_creature->GetHealth() < m_creature->GetMaxHealth()*0.6 && isTimerReady(Potion_cd)) { doCast(m_creature, HEALINGPOTION); Potion_cd = 1500; } //if low on mana, drink a potion if(m_creature->GetPower(POWER_MANA) < m_creature->GetMaxPower(POWER_MANA)*0.2) { if(isTimerReady(Potion_cd)) { doCast(m_creature, MANAPOTION); //MonsterSay("MANA POTION", LANG_UNIVERSAL, NULL); Potion_cd = 1500; } } opponent = SelectUnit(SELECT_TARGET_TOPAGGRO, 0); if(!opponent && !m_creature->getVictim()) { ResetOrGetNextTarget(); //to reduce the number of crashes, remove pet whenever we are not in combat if(pet != NULL && pet->isAlive()) { master->SetBotsPetDied(); pet = NULL; } return; } if(pet == NULL) CreatePet(); if (pet && pet->isAlive() && !pet->isInCombat() && m_creature->getVictim()) { pet->Attack (m_creature->getVictim(), true); pet->GetMotionMaster()->MoveChase(m_creature->getVictim(), 1, 0); } }
bool OnGossipSelect(Player *player, Creature * m_creature, uint32 sender, uint32 action) { player->PlayerTalkClass->ClearMenus(); switch (action) { case 100: player->ADD_GOSSIP_ITEM(4, "Get a New Pet.", GOSSIP_SENDER_MAIN, 30); if (player->CanTameExoticPets()) { player->ADD_GOSSIP_ITEM(4, "Get a New Exotic Pet.", GOSSIP_SENDER_MAIN, 50); } player->ADD_GOSSIP_ITEM(2, "Take me to the Stable.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_STABLEPET); // player->ADD_GOSSIP_ITEM(6, "Sell me some Food for my Pet.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_VENDOR); player->ADD_GOSSIP_ITEM(5, "Close Beastmaster Window.", GOSSIP_SENDER_MAIN, 150); player->SEND_GOSSIP_MENU(1, m_creature->GetGUID()); break; case 150: player->CLOSE_GOSSIP_MENU(); break; case 30: player->ADD_GOSSIP_ITEM(2, "<- Back to Main Menu.", GOSSIP_SENDER_MAIN, 100); player->ADD_GOSSIP_ITEM(4, "Next Page. ->", GOSSIP_SENDER_MAIN, 31); player->ADD_GOSSIP_ITEM(6, "Bat.", GOSSIP_SENDER_MAIN, 18); player->ADD_GOSSIP_ITEM(6, "Bear.", GOSSIP_SENDER_MAIN, 1); player->ADD_GOSSIP_ITEM(6, "Boar.", GOSSIP_SENDER_MAIN, 2); player->ADD_GOSSIP_ITEM(6, "Cat.", GOSSIP_SENDER_MAIN, 4); player->ADD_GOSSIP_ITEM(6, "Carrion Bird.", GOSSIP_SENDER_MAIN, 5); player->ADD_GOSSIP_ITEM(6, "Crab.", GOSSIP_SENDER_MAIN, 6); player->ADD_GOSSIP_ITEM(6, "Crocolisk.", GOSSIP_SENDER_MAIN, 7); player->ADD_GOSSIP_ITEM(6, "Dragonhawk.", GOSSIP_SENDER_MAIN, 17); player->ADD_GOSSIP_ITEM(6, "Gorilla.", GOSSIP_SENDER_MAIN, 8); player->ADD_GOSSIP_ITEM(6, "Hound.", GOSSIP_SENDER_MAIN, 9); player->ADD_GOSSIP_ITEM(6, "Hyena.", GOSSIP_SENDER_MAIN, 10); player->ADD_GOSSIP_ITEM(6, "Moth.", GOSSIP_SENDER_MAIN, 11); player->ADD_GOSSIP_ITEM(6, "Owl.", GOSSIP_SENDER_MAIN, 12); player->SEND_GOSSIP_MENU(1, m_creature->GetGUID()); break; case 31: player->ADD_GOSSIP_ITEM(2, "<- Back to Main Menu.", GOSSIP_SENDER_MAIN, 30); player->ADD_GOSSIP_ITEM(4, "<- Previous Page.", GOSSIP_SENDER_MAIN, 30); player->ADD_GOSSIP_ITEM(6, "Raptor.", GOSSIP_SENDER_MAIN, 20); player->ADD_GOSSIP_ITEM(6, "Ravager.", GOSSIP_SENDER_MAIN, 19); player->ADD_GOSSIP_ITEM(6, "Strider.", GOSSIP_SENDER_MAIN, 13); player->ADD_GOSSIP_ITEM(6, "Scorpid.", GOSSIP_SENDER_MAIN, 414); player->ADD_GOSSIP_ITEM(6, "Spider.", GOSSIP_SENDER_MAIN, 16); player->ADD_GOSSIP_ITEM(6, "Serpent.", GOSSIP_SENDER_MAIN, 21); player->ADD_GOSSIP_ITEM(6, "Turtle.", GOSSIP_SENDER_MAIN, 15); player->ADD_GOSSIP_ITEM(6, "Wasp.", GOSSIP_SENDER_MAIN, 93); player->SEND_GOSSIP_MENU(1, m_creature->GetGUID()); break; case 50: player->ADD_GOSSIP_ITEM(2, "<- Back to Main Menu.", GOSSIP_SENDER_MAIN, 100); player->ADD_GOSSIP_ITEM(2, "<- Get a New Normal Pet.", GOSSIP_SENDER_MAIN, 100); player->ADD_GOSSIP_ITEM(6, "Chimaera.", GOSSIP_SENDER_MAIN, 51); player->ADD_GOSSIP_ITEM(6, "Core Hound.", GOSSIP_SENDER_MAIN, 52); player->ADD_GOSSIP_ITEM(6, "Devilsaur.", GOSSIP_SENDER_MAIN, 53); player->ADD_GOSSIP_ITEM(6, "Rhino.", GOSSIP_SENDER_MAIN, 54); player->ADD_GOSSIP_ITEM(6, "Silithid.", GOSSIP_SENDER_MAIN, 55); player->ADD_GOSSIP_ITEM(6, "Worm.", GOSSIP_SENDER_MAIN, 56); player->ADD_GOSSIP_ITEM(6, "Loque'nahak.", GOSSIP_SENDER_MAIN, 57); player->ADD_GOSSIP_ITEM(6, "Skoll.", GOSSIP_SENDER_MAIN, 58); player->ADD_GOSSIP_ITEM(6, "Gondria.", GOSSIP_SENDER_MAIN, 59); player->SEND_GOSSIP_MENU(1, m_creature->GetGUID()); break; case GOSSIP_OPTION_STABLEPET: player->GetSession()->SendStablePet(m_creature->GetGUID()); break; case GOSSIP_OPTION_VENDOR: player->GetSession()->SendListInventory(m_creature->GetGUID()); break; case 51: //chimera CreatePet(player, m_creature, 21879); break; case 52: //core hound CreatePet(player, m_creature, 21108); break; case 53: //Devilsaur CreatePet(player, m_creature, 20931); break; case 54: //rhino CreatePet(player, m_creature, 30445); break; case 55: //silithid CreatePet(player, m_creature, 5460); break; case 56: //Worm CreatePet(player, m_creature, 30148); break; case 57: //Loque'nahak CreatePet(player, m_creature, 32517); break; case 58: //Skoll CreatePet(player, m_creature, 35189); break; case 59: //Gondria CreatePet(player, m_creature, 33776); break; case 16: //Spider CreatePet(player, m_creature, 2349); break; case 17: //Dragonhawk CreatePet(player, m_creature, 27946); break; case 18: //Bat CreatePet(player, m_creature, 28233); break; case 19: //Ravager CreatePet(player, m_creature, 17199); break; case 20: //Raptor CreatePet(player, m_creature, 14821); break; case 21: //Serpent CreatePet(player, m_creature, 28358); break; case 1: //bear CreatePet(player, m_creature, 29319); break; case 2: //Boar CreatePet(player, m_creature, 29996); break; case 93: //Bug CreatePet(player, m_creature, 28085); break; case 4: //cat CreatePet(player, m_creature, 28097); break; case 5: //carrion CreatePet(player, m_creature, 26838); break; case 6: //crab CreatePet(player, m_creature, 24478); break; case 7: //crocolisk CreatePet(player, m_creature, 1417); break; case 8: //gorila CreatePet(player, m_creature, 28213); break; case 9: //hound CreatePet(player, m_creature, 29452); break; case 10: //hynea CreatePet(player, m_creature, 13036); break; case 11: //Moth CreatePet(player, m_creature, 27421); break; case 12: //owl CreatePet(player, m_creature, 23136); break; case 13: //strider CreatePet(player, m_creature, 22807); break; case 414: //scorpid CreatePet(player, m_creature, 9698); break; case 15: //turtle CreatePet(player, m_creature, 25482); break; } return true; }
bool OnGossipSelect(Player * player, Creature * m_creature, uint32 sender, uint32 action) { player->PlayerTalkClass->ClearMenus(); switch (action) { case 100: OnGossipHello(player, m_creature); break; case 150: player->CLOSE_GOSSIP_MENU(); break; case 30: player->ADD_GOSSIP_ITEM(6, "|cff00ff00|TInterface\\icons\\Ability_hunter_pet_bat:26:26:-15:0|t|r Bat", GOSSIP_SENDER_MAIN, 18); player->ADD_GOSSIP_ITEM(6, "|cff00ff00|TInterface\\icons\\Ability_hunter_pet_bear:26:26:-15:0|t|r Bear.", GOSSIP_SENDER_MAIN, 1); player->ADD_GOSSIP_ITEM(6, "|cff00ff00|TInterface\\icons\\Ability_hunter_pet_boar:26:26:-15:0|t|r Boar", GOSSIP_SENDER_MAIN, 2); player->ADD_GOSSIP_ITEM(6, "|cff00ff00|TInterface\\icons\\Ability_hunter_pet_cat:26:26:-15:0|t|r Cat.", GOSSIP_SENDER_MAIN, 4); player->ADD_GOSSIP_ITEM(6, "|cff00ff00|TInterface\\icons\\Ability_hunter_pet_vulture:26:26:-15:0|t|r Vulture.", GOSSIP_SENDER_MAIN, 5); player->ADD_GOSSIP_ITEM(6, "|cff00ff00|TInterface\\icons\\Ability_hunter_pet_crab:26:26:-15:0|t|r Crab.", GOSSIP_SENDER_MAIN, 6); player->ADD_GOSSIP_ITEM(6, "|cff00ff00|TInterface\\icons\\Ability_hunter_pet_crocolisk:26:26:-15:0|t|r Cocolisk.", GOSSIP_SENDER_MAIN, 7); player->ADD_GOSSIP_ITEM(6, "|cff00ff00|TInterface\\icons\\Ability_hunter_pet_dragonhawk:26:26:-15:0|t|r Dragonhawk.", GOSSIP_SENDER_MAIN, 17); player->ADD_GOSSIP_ITEM(6, "|cff00ff00|TInterface\\icons\\Ability_hunter_pet_gorilla:26:26:-15:0|t|r Gorilla", GOSSIP_SENDER_MAIN, 8); player->ADD_GOSSIP_ITEM(6, "|cff00ff00|TInterface\\icons\\Ability_hunter_pet_wolf:26:26:-15:0|t|r Wolf.", GOSSIP_SENDER_MAIN, 9); player->ADD_GOSSIP_ITEM(6, "|cff00ff00|TInterface\\icons\\Ability_hunter_pet_hyena:26:26:-15:0|t|r Hyena.", GOSSIP_SENDER_MAIN, 10); player->ADD_GOSSIP_ITEM(6, "|cff00ff00|TInterface\\icons\\Ability_hunter_pet_moth:26:26:-15:0|t|r Moth.", GOSSIP_SENDER_MAIN, 11); player->ADD_GOSSIP_ITEM(6, "|cff00ff00|TInterface\\icons\\Ability_hunter_pet_owl:26:26:-15:0|t|r Owl.", GOSSIP_SENDER_MAIN, 12); player->ADD_GOSSIP_ITEM(4, "Next Page", GOSSIP_SENDER_MAIN, 31); player->ADD_GOSSIP_ITEM(2, "Main Menu.", GOSSIP_SENDER_MAIN, 100); player->SEND_GOSSIP_MENU(1, m_creature->GetGUID()); break; case 31: player->ADD_GOSSIP_ITEM(6, "|cff00ff00|TInterface\\icons\\Ability_hunter_pet_raptor:26:26:-15:0|t|r Raptor.", GOSSIP_SENDER_MAIN, 20); player->ADD_GOSSIP_ITEM(6, "|cff00ff00|TInterface\\icons\\Ability_hunter_pet_ravager:26:26:-15:0|t|r Ravager.", GOSSIP_SENDER_MAIN, 19); player->ADD_GOSSIP_ITEM(6, "|cff00ff00|TInterface\\icons\\Ability_hunter_pet_tallstrider:26:26:-15:0|t|r Tallstrider.", GOSSIP_SENDER_MAIN, 13); player->ADD_GOSSIP_ITEM(6, "|cff00ff00|TInterface\\icons\\Ability_hunter_pet_scorpid:26:26:-15:0|t|r Scorpid.", GOSSIP_SENDER_MAIN, 414); player->ADD_GOSSIP_ITEM(6, "|cff00ff00|TInterface\\icons\\Ability_hunter_pet_spider:26:26:-15:0|t|r Spider", GOSSIP_SENDER_MAIN, 16); player->ADD_GOSSIP_ITEM(6, "|cff00ff00|TInterface\\icons\\Ability_hunter_cobrastrikes:26:26:-15:0|t|r Cobra.", GOSSIP_SENDER_MAIN, 21); player->ADD_GOSSIP_ITEM(6, "|cff00ff00|TInterface\\icons\\Ability_hunter_pet_turtle:26:26:-15:0|t|r Turtle.", GOSSIP_SENDER_MAIN, 15); player->ADD_GOSSIP_ITEM(6, "|cff00ff00|TInterface\\icons\\Ability_hunter_pet_wasp:26:26:-15:0|t|r Wasp.", GOSSIP_SENDER_MAIN, 93); player->ADD_GOSSIP_ITEM(4, "<- Back.", GOSSIP_SENDER_MAIN, 30); player->ADD_GOSSIP_ITEM(2, "<- Main Menu.", GOSSIP_SENDER_MAIN, 100); player->SEND_GOSSIP_MENU(1, m_creature->GetGUID()); break; case 50: player->ADD_GOSSIP_ITEM(6, "|cff00ff00|TInterface\\icons\\Ability_hunter_pet_chimera:26:26:-15:0|t|r Chimera.", GOSSIP_SENDER_MAIN, 51); player->ADD_GOSSIP_ITEM(6, "|cff00ff00|TInterface\\icons\\Ability_hunter_pet_corehound:26:26:-15:0|t|r Corehound", GOSSIP_SENDER_MAIN, 52); player->ADD_GOSSIP_ITEM(6, "|cff00ff00|TInterface\\icons\\Ability_hunter_pet_devilsaur:26:26:-15:0|t|r Devilsaur.", GOSSIP_SENDER_MAIN, 53); player->ADD_GOSSIP_ITEM(6, "|cff00ff00|TInterface\\icons\\Ability_hunter_pet_rhino:26:26:-15:0|t|r Rhino.", GOSSIP_SENDER_MAIN, 54); player->ADD_GOSSIP_ITEM(6, "|cff00ff00|TInterface\\icons\\Ability_hunter_pet_silithid:26:26:-15:0|t|r Silithd ", GOSSIP_SENDER_MAIN, 55); player->ADD_GOSSIP_ITEM(6, "|cff00ff00|TInterface\\icons\\Ability_hunter_pet_worm:26:26:-15:0|t|r Worm.", GOSSIP_SENDER_MAIN, 56); player->ADD_GOSSIP_ITEM(6, "|cff00ff00|TInterface\\icons\\Ability_druid_catform:26:26:-15:0|t|r Loque'nahak.", GOSSIP_SENDER_MAIN, 57); player->ADD_GOSSIP_ITEM(6, "|cff00ff00|TInterface\\icons\\Spell_nature_spiritwolf:26:26:-15:0|t|r Spirit wolf.", GOSSIP_SENDER_MAIN, 58); player->ADD_GOSSIP_ITEM(6, "|cff00ff00|TInterface\\icons\\Spell_shadow_spectralsight:26:26:-15:0|t|r Spirit beast.", GOSSIP_SENDER_MAIN, 59); player->ADD_GOSSIP_ITEM(4, "Normal Menu.", GOSSIP_SENDER_MAIN, 30); player->ADD_GOSSIP_ITEM(2, "Main Menu.", GOSSIP_SENDER_MAIN, 100); player->SEND_GOSSIP_MENU(1, m_creature->GetGUID()); break; case GOSSIP_OPTION_STABLEPET: player->GetSession()->SendStablePet(m_creature->GetGUID()); break; case GOSSIP_OPTION_VENDOR: player->GetSession()->SendListInventory(m_creature->GetGUID()); break; case 51: //chimera CreatePet(player, m_creature, 21879); break; case 52: //core hound CreatePet(player, m_creature, 21108); break; case 53: //Devilsaur CreatePet(player, m_creature, 20931); break; case 54: //rhino CreatePet(player, m_creature, 30445); break; case 55: //silithid CreatePet(player, m_creature, 5460); break; case 56: //Worm CreatePet(player, m_creature, 30148); break; case 57: //Loque'nahak CreatePet(player, m_creature, 32517); break; case 58: //Skoll CreatePet(player, m_creature, 35189); break; case 59: //Gondria CreatePet(player, m_creature, 33776); break; case 16: //Spider CreatePet(player, m_creature, 2349); break; case 17: //Dragonhawk CreatePet(player, m_creature, 27946); break; case 18: //Bat CreatePet(player, m_creature, 28233); break; case 19: //Ravager CreatePet(player, m_creature, 17199); break; case 20: //Raptor CreatePet(player, m_creature, 14821); break; case 21: //Serpent CreatePet(player, m_creature, 28358); break; case 1: //bear CreatePet(player, m_creature, 29319); break; case 2: //Boar CreatePet(player, m_creature, 29996); break; case 93: //Bug CreatePet(player, m_creature, 28085); break; case 4: //cat CreatePet(player, m_creature, 28097); break; case 5: //carrion CreatePet(player, m_creature, 26838); break; case 6: //crab CreatePet(player, m_creature, 24478); break; case 7: //crocolisk CreatePet(player, m_creature, 1417); break; case 8: //gorila CreatePet(player, m_creature, 28213); break; case 9: //hound CreatePet(player, m_creature, 29452); break; case 10: //hynea CreatePet(player, m_creature, 13036); break; case 11: //Moth CreatePet(player, m_creature, 27421); break; case 12: //owl CreatePet(player, m_creature, 23136); break; case 13: //strider CreatePet(player, m_creature, 22807); break; case 414: //scorpid CreatePet(player, m_creature, 9698); break; case 15: //turtle CreatePet(player, m_creature, 25482); break; } return true; }
bool GossipSelect_npc_beastmaster(Player *player, Creature *_Creature, uint32 sender, uint32 action) { switch (action) { case GOSSIP_ACTION_INFO_DEF + 100: player->ADD_GOSSIP_ITEM(4, "Get new pet", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 30); if (player->CanTameExoticPets()) { player->ADD_GOSSIP_ITEM(4, "Get new exotic pet", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 50); } player->ADD_GOSSIP_ITEM(2, "Take me to stable", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_STABLEPET); player->ADD_GOSSIP_ITEM(6, "Sell me some food", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_VENDOR); player->SEND_GOSSIP_MENU(1,_Creature->GetGUID()); break; case GOSSIP_ACTION_INFO_DEF + 30: player->ADD_GOSSIP_ITEM(2, "<< Back to main menu", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 100); player->ADD_GOSSIP_ITEM(4, "Next page >>", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 31); player->ADD_GOSSIP_ITEM(6, "Bat", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 18); player->ADD_GOSSIP_ITEM(6, "Bear", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); player->ADD_GOSSIP_ITEM(6, "Boar", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); player->ADD_GOSSIP_ITEM(6, "Cat", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4); player->ADD_GOSSIP_ITEM(6, "Carrion Bird", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5); player->ADD_GOSSIP_ITEM(6, "Crab", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6); player->ADD_GOSSIP_ITEM(6, "Crocolisk", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 7); player->ADD_GOSSIP_ITEM(6, "Dragonhawk", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 17); player->ADD_GOSSIP_ITEM(6, "Gorilla", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 8); player->ADD_GOSSIP_ITEM(6, "Hound", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 9); player->ADD_GOSSIP_ITEM(6, "Hyena", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 10); player->ADD_GOSSIP_ITEM(6, "Moth", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 11); player->ADD_GOSSIP_ITEM(6, "Owl", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 12); player->SEND_GOSSIP_MENU(1,_Creature->GetGUID()); break; case GOSSIP_ACTION_INFO_DEF + 31: player->ADD_GOSSIP_ITEM(2, "<< Back to main menu", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 100); player->ADD_GOSSIP_ITEM(4, "<< Previous page", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 30); player->ADD_GOSSIP_ITEM(6, "Raptor", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 20); player->ADD_GOSSIP_ITEM(6, "Ravager", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 19); player->ADD_GOSSIP_ITEM(6, "Strider", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 13); player->ADD_GOSSIP_ITEM(6, "Scorpid", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 14); player->ADD_GOSSIP_ITEM(6, "Spider", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 16); player->ADD_GOSSIP_ITEM(6, "Serpent", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 21); player->ADD_GOSSIP_ITEM(6, "Turtle", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 15); player->ADD_GOSSIP_ITEM(6, "Wasp", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); player->SEND_GOSSIP_MENU(1,_Creature->GetGUID()); break; case GOSSIP_ACTION_INFO_DEF + 50: player->ADD_GOSSIP_ITEM(2, "<< Back to main menu", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 100); player->ADD_GOSSIP_ITEM(6, "Chimaera", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 51); player->ADD_GOSSIP_ITEM(6, "Core Hound", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 52); player->ADD_GOSSIP_ITEM(6, "Devilsaur", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 53); player->ADD_GOSSIP_ITEM(6, "Rhino", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 54); player->ADD_GOSSIP_ITEM(6, "Silithid", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 55); player->ADD_GOSSIP_ITEM(6, "Worm", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 56); player->ADD_GOSSIP_ITEM(6, "Loque'nahak", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 57); player->ADD_GOSSIP_ITEM(6, "Skoll", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 58); player->ADD_GOSSIP_ITEM(6, "Gondria", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 59); player->SEND_GOSSIP_MENU(1,_Creature->GetGUID()); break; case GOSSIP_OPTION_STABLEPET: player->GetSession()->SendStablePet(_Creature->GetGUID()); break; case GOSSIP_OPTION_VENDOR: player->SEND_VENDORLIST( _Creature->GetGUID()); break; case GOSSIP_ACTION_INFO_DEF + 51: //chimera CreatePet(player, _Creature, 21879); break; case GOSSIP_ACTION_INFO_DEF + 52: //core hound CreatePet(player, _Creature, 21108); break; case GOSSIP_ACTION_INFO_DEF + 53: //Devilsaur CreatePet(player, _Creature, 20931); break; case GOSSIP_ACTION_INFO_DEF + 54: //rhino CreatePet(player, _Creature, 30445); break; case GOSSIP_ACTION_INFO_DEF + 55: //silithid CreatePet(player, _Creature, 5460); break; case GOSSIP_ACTION_INFO_DEF + 56: //Worm CreatePet(player, _Creature, 30148); break; case GOSSIP_ACTION_INFO_DEF + 57: //Loque'nahak CreatePet(player, _Creature, 32517); break; case GOSSIP_ACTION_INFO_DEF + 58: //Skoll CreatePet(player, _Creature, 35189); break; case GOSSIP_ACTION_INFO_DEF + 59: //Gondria CreatePet(player, _Creature, 33776); break; case GOSSIP_ACTION_INFO_DEF + 16: //Spider CreatePet(player, _Creature, 2349); break; case GOSSIP_ACTION_INFO_DEF + 17: //Dragonhawk CreatePet(player, _Creature, 27946); break; case GOSSIP_ACTION_INFO_DEF + 18: //Bat CreatePet(player, _Creature, 28233); break; case GOSSIP_ACTION_INFO_DEF + 19: //Ravager CreatePet(player, _Creature, 17199); break; case GOSSIP_ACTION_INFO_DEF + 20: //Raptor CreatePet(player, _Creature, 14821); break; case GOSSIP_ACTION_INFO_DEF + 21: //Serpent CreatePet(player, _Creature, 28358); break; case GOSSIP_ACTION_INFO_DEF + 1: //bear CreatePet(player, _Creature, 29319); break; case GOSSIP_ACTION_INFO_DEF + 2: //Boar CreatePet(player, _Creature, 29996); break; case GOSSIP_ACTION_INFO_DEF + 3: //Bug CreatePet(player, _Creature, 28085); break; case GOSSIP_ACTION_INFO_DEF + 4: //cat CreatePet(player, _Creature, 28097); break; case GOSSIP_ACTION_INFO_DEF + 5: //carrion CreatePet(player, _Creature, 26838); break; case GOSSIP_ACTION_INFO_DEF + 6: //crab CreatePet(player, _Creature, 24478); break; case GOSSIP_ACTION_INFO_DEF + 7: //crocolisk CreatePet(player, _Creature, 1417); break; case GOSSIP_ACTION_INFO_DEF + 8: //gorila CreatePet(player, _Creature, 28213); break; case GOSSIP_ACTION_INFO_DEF + 9: //hound CreatePet(player, _Creature, 29452); break; case GOSSIP_ACTION_INFO_DEF + 10: //hynea CreatePet(player, _Creature, 13036); break; case GOSSIP_ACTION_INFO_DEF + 11: //Moth CreatePet(player, _Creature, 27421); break; case GOSSIP_ACTION_INFO_DEF + 12: //owl CreatePet(player, _Creature, 23136); break; case GOSSIP_ACTION_INFO_DEF + 13: //strider CreatePet(player, _Creature, 22807); break; case GOSSIP_ACTION_INFO_DEF + 14: //scorpid CreatePet(player, _Creature, 9698); break; case GOSSIP_ACTION_INFO_DEF + 15: //turtle CreatePet(player, _Creature, 25482); break; } return true; };
bool GossipSelect_beastmaster(Player* player, Creature* creature, uint32 sender, uint32 action) { switch (action) { case 100: player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_2, GOSSIP_TEXT_BAT, GOSSIP_SENDER_MAIN, 1001); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_2, GOSSIP_TEXT_BOAR, GOSSIP_SENDER_MAIN, 1003); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_2, GOSSIP_TEXT_BIRD, GOSSIP_SENDER_MAIN, 1002); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_2, GOSSIP_TEXT_CAT, GOSSIP_SENDER_MAIN, 1004); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_2, GOSSIP_TEXT_DRAGONHAWK, GOSSIP_SENDER_MAIN, 1005); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_2, GOSSIP_TEXT_GORILLA, GOSSIP_SENDER_MAIN, 1006); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_2, GOSSIP_TEXT_OWL, GOSSIP_SENDER_MAIN, 1007); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_2, GOSSIP_TEXT_RAPTOR, GOSSIP_SENDER_MAIN, 1008); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_2, GOSSIP_TEXT_RAVAGER, GOSSIP_SENDER_MAIN, 1009); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_2, GOSSIP_TEXT_SCORPID, GOSSIP_SENDER_MAIN, 1010); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_2, GOSSIP_TEXT_SERPENT, GOSSIP_SENDER_MAIN, 1011); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_2, GOSSIP_TEXT_TURTLE, GOSSIP_SENDER_MAIN, 1012); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_2, GOSSIP_TEXT_WARPCHASER, GOSSIP_SENDER_MAIN, 1013); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_2, GOSSIP_TEXT_W_SERPENT, GOSSIP_SENDER_MAIN, 1014); player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_2, GOSSIP_TEXT_WOLF, GOSSIP_SENDER_MAIN, 1015); // learn players all training spells: player->learnSpell(27348); // bite player->learnSpell(28343); // charge player->learnSpell(27347); // claw player->learnSpell(27346); // cower player->learnSpell(23112); // dash player->learnSpell(23150); // dive player->learnSpell(35324); // fire breath player->learnSpell(24599); // furious howl player->learnSpell(35308); // gore player->learnSpell(25017); // lightning breath player->learnSpell(35391); // poison spit player->learnSpell(24455); // prowl player->learnSpell(27361); // scorpid poison player->learnSpell(27349); // screech player->learnSpell(26065); // spell shield player->learnSpell(27366); // thunderstomp player->learnSpell(35348); // warp player->learnSpell(27350); // arcane res player->learnSpell(27353); // shadow res player->learnSpell(27351); // fire res player->learnSpell(27352); // frost res player->learnSpell(27354); // nature res player->learnSpell(27362); // natural armor player->learnSpell(27364); // great stamina player->learnSpell(35700); // avoidance player->learnSpell(25077); // cobra reflexes player->PlayerTalkClass->SendGossipMenu(70, creature->GetGUID()); break; case 1001: CreatePet(player, creature, PET_BAT); player->CLOSE_GOSSIP_MENU(); break; case 1002: CreatePet(player, creature, PET_BIRD); player->CLOSE_GOSSIP_MENU(); break; case 1003: CreatePet(player, creature, PET_BOAR); player->CLOSE_GOSSIP_MENU(); break; case 1004: CreatePet(player, creature, PET_CAT); player->CLOSE_GOSSIP_MENU(); break; case 1005: CreatePet(player, creature, PET_DRAGON_HAWK); player->CLOSE_GOSSIP_MENU(); break; case 1006: CreatePet(player, creature, PET_GORILLA); player->CLOSE_GOSSIP_MENU(); break; case 1007: CreatePet(player, creature, PET_OWL); player->CLOSE_GOSSIP_MENU(); break; case 1008: CreatePet(player, creature, PET_RAPTOR); player->CLOSE_GOSSIP_MENU(); break; case 1009: CreatePet(player, creature, PET_RAVAGER); player->CLOSE_GOSSIP_MENU(); break; case 1010: CreatePet(player, creature, PET_SCORPID); player->CLOSE_GOSSIP_MENU(); break; case 1011: CreatePet(player, creature, PET_SERPENT); player->CLOSE_GOSSIP_MENU(); break; case 1012: CreatePet(player, creature, PET_TURTLE); player->CLOSE_GOSSIP_MENU(); break; case 1013: CreatePet(player, creature, PET_WARP_CHASER); player->CLOSE_GOSSIP_MENU(); break; case 1014: CreatePet(player, creature, PET_WIND_SERPENT); player->CLOSE_GOSSIP_MENU(); break; case 1015: CreatePet(player, creature, PET_WOLF); player->CLOSE_GOSSIP_MENU(); break; case GOSSIP_ACTION_TRAIN: player->SEND_TRAINERLIST(creature->GetGUID()); break; case GOSSIP_ACTION_UNLEARN: player->CLOSE_GOSSIP_MENU(); player->SendTalentWipeConfirm(creature->GetGUID()); break; } return true; }
void SendDefaultMenu(Player* player, Creature* m_creature, uint32 uiAction) { // Not allow in combat if (player->IsInCombat()) { player->CLOSE_GOSSIP_MENU(); ChatHandler(player->GetSession()).PSendSysMessage("You are in combat!", LANG_UNIVERSAL); return; } bool EnableNormalPet = sConfigMgr->GetBoolDefault("BeastMaster.EnableNormalPet", true); bool EnableExoticPet = sConfigMgr->GetBoolDefault("BeastMaster.EnableExoticPet", true); // send name as gossip item QueryResult result; uint32 spellId = 0; uint32 catNumber = 0; uint32 cost = 0; std::string spellName = ""; uint32 token = 0; bool tokenOrGold = true; result = WorldDatabase.PQuery("SELECT * FROM `custom_beastmaster` WHERE `entry` = %u LIMIT 1", uiAction); if (result) { do { Field *fields = result->Fetch(); catNumber = fields[1].GetInt32(); tokenOrGold = fields[2].GetBool(); cost = fields[3].GetInt32(); token = fields[4].GetInt32(); spellName = fields[5].GetString(); spellId = fields[6].GetInt32(); if (tokenOrGold) { if (!player->HasItemCount(token, cost)) { ChatHandler(player->GetSession()).PSendSysMessage("You ain't gots no darn chips.", LANG_UNIVERSAL, player); player->CLOSE_GOSSIP_MENU(); return; } else if (uiAction != 1000 && uiAction != 2000 && uiAction != 3000 && catNumber != 2) { player->CLOSE_GOSSIP_MENU(); CreatePet(player, m_creature, spellId); player->DestroyItemCount(token, cost, true); } else if (catNumber = 2) { if (player->HasSpell(spellId)) { ChatHandler(player->GetSession()).PSendSysMessage("You already know this spell.", LANG_UNIVERSAL, player); player->CLOSE_GOSSIP_MENU(); return; } else { player->CLOSE_GOSSIP_MENU(); player->learnSpell(spellId, false); player->DestroyItemCount(token, cost, true); } } } else { if (player->GetMoney() < cost) { ChatHandler(player->GetSession()).PSendSysMessage("You dont have enough money!", LANG_UNIVERSAL, player); player->CLOSE_GOSSIP_MENU(); return; } else if (uiAction != 1000 && uiAction != 2000 && uiAction != 3000 && catNumber != 2) { player->CLOSE_GOSSIP_MENU(); CreatePet(player, m_creature, spellId); player->ModifyMoney(-int(cost)); } else if (catNumber = 2) { if (player->HasSpell(spellId)) { ChatHandler(player->GetSession()).PSendSysMessage("You already know this spell.", LANG_UNIVERSAL, player); player->CLOSE_GOSSIP_MENU(); return; } else { player->CLOSE_GOSSIP_MENU(); player->learnSpell(spellId, false); player->ModifyMoney(-int(cost)); } } } } while (result->NextRow()); } else { //player->ADD_GOSSIP_ITEM( 7, MAIN_MENU, GOSSIP_SENDER_MAIN, 5005); } switch(uiAction) { case 1000: //Normal Pet showNormalPet(player, m_creature, 0); player->ADD_GOSSIP_ITEM( 7, "<- Main Menu" , GOSSIP_SENDER_MAIN, 5005); player->SEND_GOSSIP_MENU(MSG_PET, m_creature->GetGUID()); break; case 2000: //Exotic Pet showExoticPet(player, m_creature, 0); player->ADD_GOSSIP_ITEM( 7, "<- Main Menu" , GOSSIP_SENDER_MAIN, 5005); player->SEND_GOSSIP_MENU(MSG_PET, m_creature->GetGUID()); break; case 3000: //Pet Spells showPetSpells(player, m_creature, 0); player->ADD_GOSSIP_ITEM( 7, "<- Main Menu" , GOSSIP_SENDER_MAIN, 5005); player->SEND_GOSSIP_MENU(MSG_PET, m_creature->GetGUID()); break; case 5005: //Back To Main Menu // Main Menu // Check config if "Normal Pet " is enabled or not if(EnableNormalPet) player->ADD_GOSSIP_ITEM( 7, "Normal Pets ->" , GOSSIP_SENDER_MAIN, 1000); // Check if player can have an exotic pet, and check config if "Exotic" is enabled or not if(player->CanTameExoticPets() && EnableExoticPet) player->ADD_GOSSIP_ITEM( 7, "Exotic Pets ->" , GOSSIP_SENDER_MAIN, 2000); // Now to add the spells, vendor, and stable stuffs //player->ADD_GOSSIP_ITEM(4, "Teach Me Pet spells ->" , GOSSIP_SENDER_MAIN, 3000); player->ADD_GOSSIP_ITEM(2, "Take me to the Stable.", GOSSIP_SENDER_MAIN, 6006); player->ADD_GOSSIP_ITEM(6, "Sell me some Food for my Pet.", GOSSIP_SENDER_MAIN, 6007); player->SEND_GOSSIP_MENU(MSG_TYPE, m_creature->GetGUID()); break; case 6006: player->GetSession()->SendStablePet(m_creature->GetGUID()); player->CLOSE_GOSSIP_MENU(); break; case 6007: player->GetSession()->SendListInventory(m_creature->GetGUID()); player->CLOSE_GOSSIP_MENU(); break; player->CLOSE_GOSSIP_MENU(); } } //end of function
void UpdateAI(const uint32 diff) { ReduceCD(); if(IAmDead()) return; if(pet && pet != NULL && pet->isDead()) { master->SetBotsPetDied(); pet = NULL; } //if we think we have a pet, but master doesn't, it means we teleported if(pet && master->m_botHasPet == false) { master->SetBotsPetDied(); pet = NULL; } m_creature->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, true); m_creature->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_ATTACK_ME, true); if(m_creature->GetHealth() < m_creature->GetMaxHealth()*0.3 && isTimerReady(Potion_cd)) { doCast(m_creature, HEALINGPOTION); Potion_cd = Potion_cd; } if(m_creature->GetPower(POWER_MANA) < m_creature->GetMaxPower(POWER_MANA)*0.2) { if(isTimerReady(Potion_cd)) { doCast(m_creature, MANAPOTION); //MonsterSay("MANA POTION", LANG_UNIVERSAL, NULL); Potion_cd = Potion_cd; } else { if(oom_spam == false) { //MonsterSay("OOM", LANG_UNIVERSAL, NULL); oom_spam = true; } ScriptedAI::UpdateAI(diff); //return; //can't do anything without mana } } oom_spam = false; ScriptedAI::UpdateAI(diff); opponent = SelectUnit(SELECT_TARGET_TOPAGGRO, 0); if(!opponent && !m_creature->getVictim()) { ResetOrGetNextTarget(); //to reduce the number of crashes, remove pet whenever we are not in combat if(pet != NULL && pet->isAlive()) { master->SetBotsPetDied(); pet = NULL; } return; } if(pet == NULL) CreatePet(); if (pet && pet->isAlive() && !pet->isInCombat() && m_creature->getVictim()) { pet->Attack (m_creature->getVictim(), true); pet->GetMotionMaster()->MoveChase(m_creature->getVictim(), 1, 0); } if(m_creature->hasUnitState(UNIT_STAT_CASTING)) return; DoNormalAttack(diff); }