Exemplo n.º 1
0
		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);

			}
		}
Exemplo n.º 3
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;
    }
Exemplo n.º 4
0
        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;
        }
Exemplo n.º 5
0
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;

};
Exemplo n.º 6
0
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
Exemplo n.º 8
0
    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);
    }