Ejemplo n.º 1
0
    bool GossipHello(Player* pPlayer, Creature* pCreature)
    {
        CPlayer* pCPlayer = pPlayer->ToCPlayer();

        if (pCPlayer->GetAreaId() != 2079)
            pCPlayer->AddGossipMenuItem(Icon::TAXI, "Teleport to Mall", 0, 1);
        if (pCPlayer->GetAreaId() != 1741 && pCPlayer->GetAreaId() != 2177)
            pCPlayer->AddGossipMenuItem(Icon::TAXI, "Teleport to Gurubashi Arena", 0, 2);
		if (pCPlayer->GetAreaId() != 190)
			pCPlayer->AddGossipMenuItem(Icon::TAXI, "Teleport to Gurubashi Arena", 0, 5);


        pCPlayer->AddGossipMenuItem(Icon::GEAR, "Reset talents", 0, 3);

        if (pCPlayer->getClass() == CLASS_HUNTER)
        pCPlayer->AddGossipMenuItem(Icon::GEAR, "Reset pet skills", 0, 4);

        if (!pPlayer->PlayerTalkClass->GetGossipMenu().Empty())
            pPlayer->PlayerTalkClass->SendGossipMenu("Your wish, my law!", pCreature->GetObjectGuid());
        return true;
    }
    bool GossipHello(Player* pPlayer, Creature* pCreature) override
    {
        CPlayer* pCPlayer = pPlayer->ToCPlayer();

        if (pPlayer->isInCombat())
        {
            pCPlayer->BoxChat << sCustom.ChatNameWrapper(pCreature->GetName()) << " You are in combat!" << std::endl;
            return true;
        }

        if ((pPlayer->GetAreaId() != 3536 && pPlayer->GetTeam() == HORDE) ||
            (pPlayer->GetAreaId() != 3538 && pPlayer->GetTeam() == ALLIANCE) ||
            pPlayer->isGameMaster())
            pCPlayer->AddGossipMenuItem(Icon::TAXI, "Teleport To: Shopping Mall", GOSSIP_SENDER_MAIN, 1);

        if (pPlayer->GetAreaId() != 3539 || pPlayer->isGameMaster())
            pCPlayer->AddGossipMenuItem(Icon::TAXI, "Teleport To: Neutral  Mall", GOSSIP_SENDER_MAIN, 2);

        if (pPlayer->GetAreaId() != 3738 || pPlayer->isGameMaster())
            pCPlayer->AddGossipMenuItem(Icon::TAXI, "Teleport To: Stormspire", GOSSIP_SENDER_MAIN, 4);

        if ((pPlayer->GetAreaId() != 1741 && pPlayer->GetAreaId() != 2177) ||
            pPlayer->isGameMaster())
            pCPlayer->AddGossipMenuItem(Icon::TAXI, "Teleport To: Gurubashi Arena", GOSSIP_SENDER_MAIN, 3);

        pCPlayer->AddGossipMenuItem(Icon::GEAR, "Open Tools", GOSSIP_SENDER_MAIN, 100);
        pCPlayer->AddGossipMenuItem(Icon::GEAR, "Change Your Level", GOSSIP_SENDER_MAIN, 200);
        pCPlayer->AddGossipMenuItem(Icon::BAG, "Open Vendors", GOSSIP_SENDER_MAIN, 300);
        pCPlayer->AddGossipMenuItem(Icon::SWORDS, "Queue for battle", GOSSIP_SENDER_MAIN, 400);

        if (pPlayer->isGameMaster())
            pCPlayer->AddGossipMenuItem(Icon::BAG, "GM menu", GOSSIP_SENDER_MAIN, 1337);

        if (!pPlayer->PlayerTalkClass->GetGossipMenu().Empty())
            pPlayer->PlayerTalkClass->SendGossipMenu("Your wish, my law!", pCreature->GetObjectGuid());
        return true;
    }
    bool GossipSelect(Player* pPlayer, Creature* pCreature, uint32 sender, uint32 action, std::string code) override
    {
        CPlayer* pCPlayer = pPlayer->ToCPlayer();

        const char* cName = pCreature->GetName();
        pPlayer->PlayerTalkClass->CloseGossip();

        if (pPlayer->isInCombat())
        {
            pCPlayer->BoxChat << sCustom.ChatNameWrapper(cName) << " You are in combat!" << std::endl;
            return true;
        }

        if (action == 0)
            GossipHello(pPlayer, pCreature);
        else if (sender == GOSSIP_SENDER_MULTIVENDOR)
            pCPlayer->SendMultiVendorInventory(action, pCreature->GetObjectGuid());
        else if (action == 1) // Teleport To: Shopping Mall
        {
            pCPlayer->BoxChat << sCustom.ChatNameWrapper(cName) << " Welcome to The Shopping Mall" << std::endl;
            if (pPlayer->GetTeam() == HORDE)
                pPlayer->TeleportTo(530, 237.497f, 2696.65f, 90.755f, 3.25544f);
            else
                pPlayer->TeleportTo(530, -796.259f, 2625.9f, 124.095f, 3.70235f);
        }
        else if (action == 2) // Teleport To: Neutral Mall
        {
            pCPlayer->BoxChat << sCustom.ChatNameWrapper(cName) << " Welcome to Neutral shopping mall" << std::endl;
            pPlayer->TeleportTo(530, -248.403f, 939.569f, 84.3788f, 1.53148f);
        }
        else if (action == 3) // Teleport To: Gurubashi Arena
        {
            pCPlayer->BoxChat << sCustom.ChatNameWrapper(cName) << " Welcome to Gurubashi Arena" << std::endl;
            pPlayer->TeleportTo(0, -13235.7f, 213.741f, 31.2181f, 1.14919f);
        }
        else if (action == 4) // Teleport To: Stormspire
        {
            pCPlayer->BoxChat << sCustom.ChatNameWrapper(cName) << " Welcome to The Stormspire" << std::endl;

            if (pPlayer->GetTeam() == ALLIANCE)
                pPlayer->TeleportTo(530, 4201.07f, 3100.86f, 335.821f, 4.02089f);
            else
                pPlayer->TeleportTo(530, 4118.95f, 2936.97f, 354.523f, 1.62542f);
        }
        else if (action == 100) // Open Tools
        {
            pCPlayer->AddGossipMenuItem(Icon::TRAINER, "Reset Talents", GOSSIP_SENDER_MAIN, 101);
            pCPlayer->AddGossipMenuItem(Icon::TRAINER, "Reset Cooldowns", GOSSIP_SENDER_MAIN, 104);
            pCPlayer->AddGossipMenuItem(Icon::TRAINER, "Max Weapon Skills", GOSSIP_SENDER_MAIN, 103);
            pCPlayer->AddGossipMenuItem(Icon::BAG, "Open Bank", GOSSIP_SENDER_MAIN, 105);
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, "Open Auction House", GOSSIP_SENDER_MAIN, 106);
            pCPlayer->AddGossipMenuItem(Icon::TABARD, "Create a guild", GOSSIP_SENDER_MAIN, 107);
            pCPlayer->AddGossipMenuItem(Icon::TABARD, "Design your tabard", GOSSIP_SENDER_MAIN, 108);

            if (pPlayer->ToCPlayer()->GetSetting(Settings::SETTING_UINT_HIDETEMPLATEMENU))
                pCPlayer->AddGossipMenuItem(Icon::GEAR, "Show templates on login", GOSSIP_SENDER_MAIN, 109);

            pCPlayer->AddGossipMenuItem(Icon::GEAR, "Back              ", GOSSIP_SENDER_MAIN, 0);
        }
        else if (action == 101) // Reset Talents
        {
            pCPlayer->AddGossipMenuItem(Icon::GEAR, "Are you sure you want to reset your talents?", GOSSIP_SENDER_MAIN, 100);
            pCPlayer->AddGossipMenuItem(Icon::GEAR, "Yes", GOSSIP_SENDER_MAIN, 102);
            pCPlayer->AddGossipMenuItem(Icon::GEAR, "No", GOSSIP_SENDER_MAIN, 100);
            pCPlayer->AddGossipMenuItem(Icon::GEAR, "Back", GOSSIP_SENDER_MAIN, 0);
        }
        else if (action == 102) // Talents Reset
        {
            pCPlayer->BoxChat << sCustom.ChatNameWrapper(cName) << " Talents Reset" << std::endl;
            pPlayer->resetTalents(true);
        }
        else if (action == 103) // Weapon skills maxed
        {
            pCPlayer->BoxChat << sCustom.ChatNameWrapper(cName) << " Weapon skills maxed" << std::endl;
            pPlayer->UpdateSkillsToMaxSkillsForLevel();
        }
        else if (action == 104) // Cooldowns reset
        {
            pCPlayer->BoxChat << sCustom.ChatNameWrapper(cName) << " Cooldowns reset" << std::endl;
            pPlayer->RemoveArenaSpellCooldowns();
        }
        else if (action == 105) // Show bank
            pPlayer->GetSession()->SendShowBank(pCreature->GetObjectGuid());
        else if (action == 106) // Auctioneer
            pPlayer->GetSession()->SendAuctionHello(pCreature);
        else if (action == 107) // Guild Master
            pPlayer->GetSession()->SendPetitionShowList(pCreature->GetObjectGuid());
        else if (action == 108) // Tabard Petitioner
            pPlayer->GetSession()->SendTabardVendorActivate(pCreature->GetObjectGuid());
        else if (action == 109)
        {
            pPlayer->ToCPlayer()->SetSetting(Settings::SETTING_UINT_HIDETEMPLATEMENU, false);
            pCPlayer->BoxChat << sCustom.ChatNameWrapper(pCreature->GetName()) << " Template menu will be shown on next login" << std::endl;
        }
        else if (action == 200) // Change Level
        {
            if (pPlayer->getLevel() != 70)
                pCPlayer->AddGossipMenuItem(Icon::GEAR, "Level: 70", GOSSIP_SENDER_MAIN, 201);
            if (pPlayer->getLevel() != 49)
                pCPlayer->AddGossipMenuItem(Icon::GEAR, "Level: 49", GOSSIP_SENDER_MAIN, 202);
            if (pPlayer->getLevel() != 19)
                pCPlayer->AddGossipMenuItem(Icon::GEAR, "Level: 19", GOSSIP_SENDER_MAIN, 203);

            pCPlayer->AddGossipMenuItem(Icon::GEAR, "Back", GOSSIP_SENDER_MAIN, 0);
        }
        else if (action >= 201 && action <= 203)
        {
            for (uint8 i = EQUIPMENT_SLOT_START; i < EQUIPMENT_SLOT_END; ++i)
            {
                if (pPlayer->GetItemByPos(INVENTORY_SLOT_BAG_0, i))
                {
                    pCPlayer->BoxChat << sCustom.ChatNameWrapper(pCreature->GetName()) << " You cannot have any gear equipped while changing level" << std::endl;
                    return true;
                }
            }

            if (action == 201)
                pPlayer->SetLevel(70);
            else if (action == 202)
                pPlayer->SetLevel(49);
            else if (action == 203)
                pPlayer->SetLevel(19);

            pPlayer->resetTalents(true);
        }
        else if (action == 300)
        {
            pCPlayer->AddGossipMenuItem(Icon::BAG, "Starter Items", GOSSIP_SENDER_MAIN, 301);
            pCPlayer->AddGossipMenuItem(Icon::BAG, "Season Items", GOSSIP_SENDER_MAIN, 302);
            pCPlayer->AddGossipMenuItem(Icon::BAG, "PvE Items", GOSSIP_SENDER_MAIN, 303);
            pCPlayer->AddGossipMenuItem(Icon::BAG, "Gems", GOSSIP_SENDER_MAIN, 304);
            pCPlayer->AddGossipMenuItem(Icon::BAG, "Jewelry", GOSSIP_SENDER_MAIN, 305);
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, "Cloaks", GOSSIP_SENDER_MULTIVENDOR, 81023);
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, "Relics", GOSSIP_SENDER_MULTIVENDOR, 82016);
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, "Offhands/Shields", GOSSIP_SENDER_MULTIVENDOR, 82034);
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, "Tabards", GOSSIP_SENDER_MULTIVENDOR, 81024);
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, "Profession Goods", GOSSIP_SENDER_MULTIVENDOR, 81034);
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, "General Goods", GOSSIP_SENDER_MULTIVENDOR, 81027);

            if (pPlayer->getClass() == CLASS_ROGUE)
                pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, "Rogue Supplies", GOSSIP_SENDER_MULTIVENDOR, 81026);
            else if (pPlayer->getClass() == CLASS_WARLOCK)
                pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, "Pet Spell books", GOSSIP_SENDER_MULTIVENDOR, 81037);

            pCPlayer->AddGossipMenuItem(Icon::GEAR, "Back            ", GOSSIP_SENDER_MAIN, 0);
        }
        else if (action == 301)
        {
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, "Starter Weapons", GOSSIP_SENDER_MULTIVENDOR, 82022);
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, "Starter Mainset", GOSSIP_SENDER_MULTIVENDOR, 82020);
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, "Starter Offset ", GOSSIP_SENDER_MULTIVENDOR, 82021);
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, "Starter Jewelery", GOSSIP_SENDER_MULTIVENDOR, 82015);
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, "Starter Gems", GOSSIP_SENDER_MULTIVENDOR, 82027);
            pCPlayer->AddGossipMenuItem(Icon::GEAR, "Back            ", GOSSIP_SENDER_MAIN, 300);
        }
        else if (action == 302)
        {
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, "S1: Gladiator", GOSSIP_SENDER_MULTIVENDOR, 81000);
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, "S1: General", GOSSIP_SENDER_MULTIVENDOR, 81001);
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, "S2: Merciless", GOSSIP_SENDER_MULTIVENDOR, 81002);
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, "S2: Veteran", GOSSIP_SENDER_MULTIVENDOR, 81003);
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, "S3: Vengeful", GOSSIP_SENDER_MULTIVENDOR, 81035);
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, "S3: Vindicator", GOSSIP_SENDER_MULTIVENDOR, 81005);
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, "S4: Brutal", GOSSIP_SENDER_MULTIVENDOR, 81006);
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, "S4: Guardian", GOSSIP_SENDER_MULTIVENDOR, 81029);
            pCPlayer->AddGossipMenuItem(Icon::GEAR, "Back", GOSSIP_SENDER_MAIN, 300);
        }
        else if (action == 303)
        {
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, "T6: Mainset", GOSSIP_SENDER_MULTIVENDOR, 82035);
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, "T6: Offset", GOSSIP_SENDER_MULTIVENDOR, 82037);
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, "MISC: PvE Gear", GOSSIP_SENDER_MULTIVENDOR, 81036);
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, "MISC: PvE Weapons", GOSSIP_SENDER_MULTIVENDOR, 81033);
            pCPlayer->AddGossipMenuItem(Icon::GEAR, "Back", GOSSIP_SENDER_MAIN, 300);
        }
        else if (action == 304)
        {
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, MSG_COLOR_WHITE  + "Meta", GOSSIP_SENDER_MULTIVENDOR, 81028);
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, MSG_COLOR_RED    + "Red", GOSSIP_SENDER_MULTIVENDOR, 81014);
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, MSG_COLOR_ORANGE + "Orange", GOSSIP_SENDER_MULTIVENDOR, 81009);
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, MSG_COLOR_YELLOW + "Yellow", GOSSIP_SENDER_MULTIVENDOR, 81012);
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, MSG_COLOR_GREEN  + "Green", GOSSIP_SENDER_MULTIVENDOR, 81010);
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, MSG_COLOR_BLUE   + "Blue ", GOSSIP_SENDER_MULTIVENDOR, 81013);
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, MSG_COLOR_PURPLE + "Purple", GOSSIP_SENDER_MULTIVENDOR, 81011);
            pCPlayer->AddGossipMenuItem(Icon::GEAR, "Back", GOSSIP_SENDER_MAIN, 300);
        }
        else if (action == 305)
        {
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, "Trinkets", GOSSIP_SENDER_MULTIVENDOR, 81022);
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, "Rings", GOSSIP_SENDER_MULTIVENDOR, 81025);
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, "Necklaces", GOSSIP_SENDER_MULTIVENDOR, 81021);
            pCPlayer->AddGossipMenuItem(Icon::GEAR, "Back     ", GOSSIP_SENDER_MAIN, 300);
        }
        else if (action == 400)
        {
            pCPlayer->AddGossipMenuItem(Icon::SWORDS, "Warsong Gulch", GOSSIP_SENDER_MAIN, 401);
            pCPlayer->AddGossipMenuItem(Icon::SWORDS, "Arathi Basin", GOSSIP_SENDER_MAIN, 402);
            pCPlayer->AddGossipMenuItem(Icon::SWORDS, "Eye of the Storm", GOSSIP_SENDER_MAIN, 403);
            pCPlayer->AddGossipMenuItem(Icon::SWORDS, "Alterac Valley", GOSSIP_SENDER_MAIN, 404);

            if (Group* grp = pPlayer->GetGroup())
            {
                for (auto i = 0; i < 3; ++i)
                {
                    if (ArenaTeam* at = sObjectMgr.GetArenaTeamById(pPlayer->GetArenaTeamId(i)))
                    {
                        bool showrated = true;

                        for (auto itr : grp->GetMemberSlots())
                        {
                            if (Player* member = sObjectMgr.GetPlayer(itr.guid))
                            {
                                if (sObjectMgr.GetArenaTeamById(member->GetArenaTeamId(i)) != at)
                                    showrated = false;
                            }
                            else
                                showrated = false;
                        }

                        if (showrated)
                        {
                            if (i == 0)
                                pCPlayer->AddGossipMenuItem(Icon::SWORDS, "Rated 2v2", GOSSIP_SENDER_MAIN, 405);
                            else if (i == 1)
                                pCPlayer->AddGossipMenuItem(Icon::SWORDS, "Rated 3v3", GOSSIP_SENDER_MAIN, 406);
                            else if (i == 2)
                                pCPlayer->AddGossipMenuItem(Icon::SWORDS, "Rated 5v5", GOSSIP_SENDER_MAIN, 407);
                        }
                    }
                }
            }

            pCPlayer->AddGossipMenuItem(Icon::SWORDS, "Skirmish 2v2", GOSSIP_SENDER_MAIN, 408);
            pCPlayer->AddGossipMenuItem(Icon::SWORDS, "Skirmish 3v3", GOSSIP_SENDER_MAIN, 409);
            pCPlayer->AddGossipMenuItem(Icon::SWORDS, "Skirmish 5v5", GOSSIP_SENDER_MAIN, 410);
            pCPlayer->AddGossipMenuItem(Icon::GEAR, "Back", GOSSIP_SENDER_MAIN, 0);
        }
        else if (action >= 401 && action <= 404)
        {
            BattleGroundTypeId bgtype = BATTLEGROUND_TYPE_NONE;

            switch (action)
            {
            case 401: bgtype = BATTLEGROUND_WS; break;
            case 402: bgtype = BATTLEGROUND_AB; break;
            case 403: bgtype = BATTLEGROUND_EY; break;
            case 404: bgtype = BATTLEGROUND_AV; break;
            }

            WorldPacket data(CMSG_BATTLEMASTER_JOIN, 8 + 4 + 4 + 1);
            data << ObjectGuid(pCreature->GetObjectGuid());
            data << uint32(bgtype);
            data << uint32(0);
            data << uint8(pPlayer->GetGroup() ? 1 : 0);
            pPlayer->GetSession()->HandleBattlemasterJoinOpcode(data);
        }
        else if (action >= 405 && action <= 410)
        {
            uint8 arenaslot = 0; // 2v2 default
            bool rated = false;

            switch (action)
            {
            case 406:
            case 409:
                arenaslot = 1;
                break;
            case 407:
            case 410:
                arenaslot = 2;
                break;
            }

            if (action <= 407)
                rated = true;

            WorldPacket data(CMSG_BATTLEMASTER_JOIN_ARENA, 8 + 1 + 1 + 1);
            data << ObjectGuid(pCreature->GetObjectGuid());
            data << uint8(arenaslot);
            data << uint8(pPlayer->GetGroup() ? 1 : 0);
            data << uint8(rated);
            pPlayer->GetSession()->HandleBattlemasterJoinArena(data);
        }
        else if (action == 1337)
        {
            pCPlayer->AddGossipMenuItem(Icon::GEAR, "Send boxmessage", CHAT_BOX, 1339);
            pCPlayer->AddGossipMenuItem(Icon::GEAR, "Send widemessage", CHAT_WIDE, 1339);
            pCPlayer->AddGossipMenuItem(Icon::GEAR, "Send bothmessage", CHAT_BOX | CHAT_WIDE, 1339);
            pCPlayer->AddGossipMenuItem(Icon::GEAR, "Show all icons", GOSSIP_SENDER_MAIN, 1340);
            pCPlayer->AddGossipMenuItem(Icon::GEAR, "Transmog Mainhand", GOSSIP_SENDER_MAIN, 1341);
            pCPlayer->AddGossipMenuItem(Icon::GEAR, "Detransmog Mainhand", GOSSIP_SENDER_MAIN, 1342);
        }
        else if (action == 1339)
        {
            if (sender & CHAT_BOX)
                pCPlayer->BoxChat << "Boxchat" << std::endl;
            if (sender & CHAT_WIDE)
                pCPlayer->WideChat << "WideChat" << std::endl;
        }
        else if (action == 1340)
        {
            pCPlayer->AddGossipMenuItem(Icon::CHAT, "Icon::CHAT", GOSSIP_SENDER_MAIN, 0);
            pCPlayer->AddGossipMenuItem(Icon::BAG, "Icon::BAG", GOSSIP_SENDER_MAIN, 0);
            pCPlayer->AddGossipMenuItem(Icon::TAXI, "Icon::TAXI", GOSSIP_SENDER_MAIN, 0);
            pCPlayer->AddGossipMenuItem(Icon::TRAINER, "Icon::TRAINER  ", GOSSIP_SENDER_MAIN, 0);
            pCPlayer->AddGossipMenuItem(Icon::GEAR, "Icon::GEAR", GOSSIP_SENDER_MAIN, 0);
            pCPlayer->AddGossipMenuItem(Icon::MONEY_BAG, "Icon::MONEY_BAG", GOSSIP_SENDER_MAIN, 0);
            pCPlayer->AddGossipMenuItem(Icon::CHAT_DOTS, "Icon::CHAT_DOTS", GOSSIP_SENDER_MAIN, 0);
            pCPlayer->AddGossipMenuItem(Icon::TABARD, "Icon::TABARD", GOSSIP_SENDER_MAIN, 0);
            pCPlayer->AddGossipMenuItem(Icon::SWORDS, "Icon::SWORDS", GOSSIP_SENDER_MAIN, 0);
        }
        else if (action == 1341)
        {
            if (Item* pItem = pPlayer->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND))
                pItem->SetTransmog(27463);
        }
        else if (action == 1342)
        {
            if (Item* pItem = pPlayer->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND))
                pItem->SetTransmog(0);
        }

        if (!pPlayer->PlayerTalkClass->GetGossipMenu().Empty())
            pPlayer->PlayerTalkClass->SendGossipMenu("Your wish, my law!", pCreature->GetObjectGuid());

        return true;
    }
    bool GossipHello(Player* pPlayer) override
    {
        CPlayer* pCPlayer = pPlayer->ToCPlayer();

        if (pPlayer->getClass() == CLASS_WARRIOR)
        {
            pCPlayer->AddGossipMenuItem(Icon::BAG, "I want to play Arms", 0, 1);
            pCPlayer->AddGossipMenuItem(Icon::BAG, "I want to play Fury", 0, 2);
            pCPlayer->AddGossipMenuItem(Icon::BAG, "I want to play Protection", 0, 3);
        }
        else if (pPlayer->getClass() == CLASS_PALADIN)
        {
            pCPlayer->AddGossipMenuItem(Icon::BAG, "I want to play Holy", 0, 4);
            pCPlayer->AddGossipMenuItem(Icon::BAG, "I want to play Protection", 0, 5);
            pCPlayer->AddGossipMenuItem(Icon::BAG, "I want to play Retribution", 0, 6);
        }
        else if (pPlayer->getClass() == CLASS_HUNTER)
        {
            pCPlayer->AddGossipMenuItem(Icon::BAG, "I want to play Beast Mastery", 0, 7);
            pCPlayer->AddGossipMenuItem(Icon::BAG, "I want to play Marksmanship", 0, 8);
            pCPlayer->AddGossipMenuItem(Icon::BAG, "I want to play Survival", 0, 9);
        }
        else if (pPlayer->getClass() == CLASS_ROGUE)
        {
            pCPlayer->AddGossipMenuItem(Icon::BAG, "I want to play Assassination", 0, 10);
            pCPlayer->AddGossipMenuItem(Icon::BAG, "I want to play Combat", 0, 11);
            pCPlayer->AddGossipMenuItem(Icon::BAG, "I want to play Subtlety", 0, 12);
        }
        else if (pPlayer->getClass() == CLASS_PRIEST)
        {
            pCPlayer->AddGossipMenuItem(Icon::BAG, "I want to play Discipline", 0, 13);
            pCPlayer->AddGossipMenuItem(Icon::BAG, "I want to play Holy", 0, 14);
            pCPlayer->AddGossipMenuItem(Icon::BAG, "I want to play Shadow", 0, 15);
        }
        else if (pPlayer->getClass() == CLASS_SHAMAN)
        {
            pCPlayer->AddGossipMenuItem(Icon::BAG, "I want to play Elemental", 0, 16);
            pCPlayer->AddGossipMenuItem(Icon::BAG, "I want to play Enhancement", 0, 17);
            pCPlayer->AddGossipMenuItem(Icon::BAG, "I want to play Restoration", 0, 18);
        }
        else if (pPlayer->getClass() == CLASS_MAGE)
        {
            pCPlayer->AddGossipMenuItem(Icon::BAG, "I want to play Arcane", 0, 19);
            pCPlayer->AddGossipMenuItem(Icon::BAG, "I want to play Fire", 0, 20);
            pCPlayer->AddGossipMenuItem(Icon::BAG, "I want to play Frost", 0, 21);
        }
        else if (pPlayer->getClass() == CLASS_WARLOCK)
        {
            pCPlayer->AddGossipMenuItem(Icon::BAG, "I want to play Affliction", 0, 22);
            pCPlayer->AddGossipMenuItem(Icon::BAG, "I want to play Demonology", 0, 23);
            pCPlayer->AddGossipMenuItem(Icon::BAG, "I want to play Destruction", 0, 24);
        }
        else if (pPlayer->getClass() == CLASS_DRUID)
        {
            pCPlayer->AddGossipMenuItem(Icon::BAG, "I want to play Balance", 0, 25);
            pCPlayer->AddGossipMenuItem(Icon::BAG, "I want to play Feral", 0, 26);
            pCPlayer->AddGossipMenuItem(Icon::BAG, "I want to play Restoration", 0, 27);
        }

        pCPlayer->AddGossipMenuItem(Icon::GEAR, "Do not show this again", 0, 30);

        if (!pPlayer->PlayerTalkClass->GetGossipMenu().Empty())
            pPlayer->PlayerTalkClass->SendGossipMenu("Please select your spec!", GetHearthStoneOrPlayerGuid(pPlayer), 1);

        return true;
    }