diff options
author | Meji <alvaro.megias@outlook.com> | 2022-09-08 14:49:03 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-08 14:49:03 +0200 |
commit | 69e0249807f5a8f351e6be6f7350ebace3d2997a (patch) | |
tree | 0d47494cd68fd4cbff226d2c4a9eee055cd3839d /src | |
parent | 6e9a6700d83f0ad07c7c56becfc3a62434707208 (diff) |
Core/Gossip: Drop OptionType for gossip_menu_option and rename OptionIcon to OptionNpc as it also determines functionality on client side (#28220)
Co-authored-by: Shauren <shauren.trinity@gmail.com>
Diffstat (limited to 'src')
23 files changed, 292 insertions, 350 deletions
diff --git a/src/server/game/AI/ScriptedAI/ScriptedGossip.cpp b/src/server/game/AI/ScriptedAI/ScriptedGossip.cpp index e1a1382599e..9e257beec3b 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedGossip.cpp +++ b/src/server/game/AI/ScriptedAI/ScriptedGossip.cpp @@ -35,15 +35,15 @@ void ClearGossipMenuFor(Player* player) } // Using provided text, not from DB -void AddGossipItemFor(Player* player, GossipOptionIcon icon, std::string const& text, uint32 sender, uint32 action) +void AddGossipItemFor(Player* player, GossipOptionNpc optionNpc, std::string const& text, uint32 sender, uint32 action) { - player->PlayerTalkClass->GetGossipMenu().AddMenuItem(-1, icon, text, sender, action, "", 0); + player->PlayerTalkClass->GetGossipMenu().AddMenuItem(-1, optionNpc, text, sender, action, "", 0); } // Using provided texts, not from DB -void AddGossipItemFor(Player* player, GossipOptionIcon icon, std::string const& text, uint32 sender, uint32 action, std::string const& popupText, uint32 popupMoney, bool coded) +void AddGossipItemFor(Player* player, GossipOptionNpc optionNpc, std::string const& text, uint32 sender, uint32 action, std::string const& popupText, uint32 popupMoney, bool coded) { - player->PlayerTalkClass->GetGossipMenu().AddMenuItem(-1, icon, text, sender, action, popupText, popupMoney, coded); + player->PlayerTalkClass->GetGossipMenu().AddMenuItem(-1, optionNpc, text, sender, action, popupText, popupMoney, coded); } // Uses gossip item info from DB diff --git a/src/server/game/AI/ScriptedAI/ScriptedGossip.h b/src/server/game/AI/ScriptedAI/ScriptedGossip.h index f749c51f61d..9c8fcff8ebc 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedGossip.h +++ b/src/server/game/AI/ScriptedAI/ScriptedGossip.h @@ -90,9 +90,9 @@ uint32 TC_GAME_API GetGossipSenderFor(Player* player, uint32 menuId); uint32 TC_GAME_API GetGossipActionFor(Player* player, uint32 gossipListId); void TC_GAME_API ClearGossipMenuFor(Player* player); // Using provided text, not from DB -void TC_GAME_API AddGossipItemFor(Player* player, GossipOptionIcon icon, std::string const& text, uint32 sender, uint32 action); +void TC_GAME_API AddGossipItemFor(Player* player, GossipOptionNpc optionNpc, std::string const& text, uint32 sender, uint32 action); // Using provided texts, not from DB -void TC_GAME_API AddGossipItemFor(Player* player, GossipOptionIcon icon, std::string const& text, uint32 sender, uint32 action, std::string const& popupText, uint32 popupMoney, bool coded); +void TC_GAME_API AddGossipItemFor(Player* player, GossipOptionNpc optionNpc, std::string const& text, uint32 sender, uint32 action, std::string const& popupText, uint32 popupMoney, bool coded); // Uses gossip item info from DB void TC_GAME_API AddGossipItemFor(Player* player, uint32 gossipMenuID, uint32 gossipMenuItemID, uint32 sender, uint32 action); void TC_GAME_API SendGossipMenuFor(Player* player, uint32 npcTextID, ObjectGuid const& guid); diff --git a/src/server/game/Entities/Creature/GossipDef.cpp b/src/server/game/Entities/Creature/GossipDef.cpp index a99fd890a0f..f9a30a849e0 100644 --- a/src/server/game/Entities/Creature/GossipDef.cpp +++ b/src/server/game/Entities/Creature/GossipDef.cpp @@ -43,7 +43,7 @@ GossipMenu::~GossipMenu() ClearMenu(); } -uint32 GossipMenu::AddMenuItem(int32 menuItemId, GossipOptionIcon icon, std::string const& message, uint32 sender, uint32 action, std::string const& boxMessage, uint32 boxMoney, bool coded /*= false*/) +uint32 GossipMenu::AddMenuItem(int32 menuItemId, GossipOptionNpc optionNpc, std::string const& message, uint32 sender, uint32 action, std::string const& boxMessage, uint32 boxMoney, bool coded /*= false*/) { ASSERT(_menuItems.size() <= GOSSIP_MAX_MENU_ITEMS); @@ -65,11 +65,11 @@ uint32 GossipMenu::AddMenuItem(int32 menuItemId, GossipOptionIcon icon, std::str GossipMenuItem& menuItem = _menuItems[menuItemId]; - menuItem.MenuItemIcon = icon; + menuItem.OptionNpc = optionNpc; menuItem.Message = message; menuItem.IsCoded = coded; menuItem.Sender = sender; - menuItem.OptionType = action; + menuItem.Action = action; menuItem.BoxMessage = boxMessage; menuItem.BoxMoney = boxMoney; return menuItemId; @@ -134,7 +134,7 @@ void GossipMenu::AddMenuItem(uint32 menuId, uint32 menuItemId, uint32 sender, ui } /// Add menu item with existing method. Menu item id -1 is also used in ADD_GOSSIP_ITEM macro. - uint32 newOptionId = AddMenuItem(-1, itr->second.OptionIcon, strOptionText, sender, action, strBoxText, itr->second.BoxMoney, itr->second.BoxCoded); + uint32 newOptionId = AddMenuItem(-1, itr->second.OptionNpc, strOptionText, sender, action, strBoxText, itr->second.BoxMoney, itr->second.BoxCoded); AddGossipMenuItemData(newOptionId, itr->second.ActionMenuID, itr->second.ActionPoiID); } } @@ -162,7 +162,7 @@ uint32 GossipMenu::GetMenuItemAction(uint32 menuItemId) const if (itr == _menuItems.end()) return 0; - return itr->second.OptionType; + return itr->second.Action; } bool GossipMenu::IsMenuItemCoded(uint32 menuItemId) const @@ -174,15 +174,6 @@ bool GossipMenu::IsMenuItemCoded(uint32 menuItemId) const return itr->second.IsCoded; } -bool GossipMenu::HasMenuItemType(uint32 optionType) const -{ - for (auto const& menuItemPair : _menuItems) - if (menuItemPair.second.OptionType == optionType) - return true; - - return false; -} - void GossipMenu::ClearMenu() { _menuItems.clear(); @@ -227,7 +218,7 @@ void PlayerMenu::SendGossipMenu(uint32 titleTextId, ObjectGuid objectGUID) WorldPackets::NPC::ClientGossipOptions& opt = packet.GossipOptions[count]; GossipMenuItem const& item = itr->second; opt.ClientOption = itr->first; - opt.OptionNPC = item.MenuItemIcon; + opt.OptionNPC = item.OptionNpc; opt.OptionFlags = item.IsCoded; // makes pop up box password opt.OptionCost = item.BoxMoney; // money required to open menu, 2.0.3 opt.OptionLanguage = item.Language; diff --git a/src/server/game/Entities/Creature/GossipDef.h b/src/server/game/Entities/Creature/GossipDef.h index f8b39098955..3a77d0f2a7f 100644 --- a/src/server/game/Entities/Creature/GossipDef.h +++ b/src/server/game/Entities/Creature/GossipDef.h @@ -30,81 +30,54 @@ enum class QuestGiverStatus : uint32; #define GOSSIP_MAX_MENU_ITEMS 32 #define DEFAULT_GOSSIP_MESSAGE 0xffffff -enum Gossip_Option +enum class GossipOptionNpc : uint8 { - GOSSIP_OPTION_NONE = 0, //UNIT_NPC_FLAG_NONE (0) - GOSSIP_OPTION_GOSSIP = 1, //UNIT_NPC_FLAG_GOSSIP (1) - GOSSIP_OPTION_QUESTGIVER = 2, //UNIT_NPC_FLAG_QUESTGIVER (2) - GOSSIP_OPTION_VENDOR = 3, //UNIT_NPC_FLAG_VENDOR (128) - GOSSIP_OPTION_TAXIVENDOR = 4, //UNIT_NPC_FLAG_TAXIVENDOR (8192) - GOSSIP_OPTION_TRAINER = 5, //UNIT_NPC_FLAG_TRAINER (16) - GOSSIP_OPTION_SPIRITHEALER = 6, //UNIT_NPC_FLAG_SPIRITHEALER (16384) - GOSSIP_OPTION_SPIRITGUIDE = 7, //UNIT_NPC_FLAG_SPIRITGUIDE (32768) - GOSSIP_OPTION_INNKEEPER = 8, //UNIT_NPC_FLAG_INNKEEPER (65536) - GOSSIP_OPTION_BANKER = 9, //UNIT_NPC_FLAG_BANKER (131072) - GOSSIP_OPTION_PETITIONER = 10, //UNIT_NPC_FLAG_PETITIONER (262144) - GOSSIP_OPTION_TABARDDESIGNER = 11, //UNIT_NPC_FLAG_TABARDDESIGNER (524288) - GOSSIP_OPTION_BATTLEFIELD = 12, //UNIT_NPC_FLAG_BATTLEFIELDPERSON (1048576) - GOSSIP_OPTION_AUCTIONEER = 13, //UNIT_NPC_FLAG_AUCTIONEER (2097152) - GOSSIP_OPTION_STABLEPET = 14, //UNIT_NPC_FLAG_STABLE (4194304) - GOSSIP_OPTION_ARMORER = 15, //UNIT_NPC_FLAG_ARMORER (4096) - GOSSIP_OPTION_UNLEARNTALENTS = 16, //UNIT_NPC_FLAG_TRAINER (16) (bonus option for GOSSIP_OPTION_TRAINER) - GOSSIP_OPTION_UNLEARNPETTALENTS_OLD = 17, // deprecated - GOSSIP_OPTION_LEARNDUALSPEC = 18, //UNIT_NPC_FLAG_TRAINER (16) (bonus option for GOSSIP_OPTION_TRAINER) - GOSSIP_OPTION_OUTDOORPVP = 19, //added by code (option for outdoor pvp creatures) - GOSSIP_OPTION_TRANSMOGRIFIER = 20, //UNIT_NPC_FLAG_TRANSMOGRIFIER - GOSSIP_OPTION_MAILBOX = 21, //UNIT_NPC_FLAG_MAILBOX - GOSSIP_OPTION_MAX -}; - -enum class GossipOptionIcon : uint8 -{ - None = 0, // White chat bubble. Default - Vendor = 1, // Brown bag - TaxiNode = 2, // White wing - Trainer = 3, // Brown book - SpiritHealer = 4, // Golden interaction wheel (with red center) - Binder = 5, // Golden interaction wheel - Banker = 6, // Brown bag (with gold coin in lower corner) - PetitionVendor = 7, // White chat bubble (with "..." inside) - TabardVendor = 8, // White tabard - BattleMaster = 9, // Two crossed swords - Auctioneer = 10, // Stack of gold coins - TalentMaster = 11, // White chat bubble - StableMaster = 12, // White chat bubble - PetSpecializationMaster = 13, // White chat bubble - GuildBanker = 14, // White chat bubble - SpellClick = 15, // White chat bubble - DisableXPGain = 16, // White chat bubble - EnableXPGain = 17, // White chat bubble - Mailbox = 18, // White chat bubble - WorldPVPQueue = 19, // White chat bubble - DungeonFinder = 20, // White chat bubble - ArtifactRespec = 21, // White chat bubble - CemeterySelect = 22, // White chat bubble - SpecializationMaster = 23, // White chat bubble - GlyphMaster = 24, // White chat bubble - ScenarioQueue = 25, // White chat bubble - GarrisonArchitect = 26, // White chat bubble - GarrisonMission = 27, // White chat bubble - GarrisonShipment = 28, // Brown document - GarrisonTradeskill = 29, // White chat bubble - GarrisonRecruitment = 30, // White chat bubble - AdventureMap = 31, // White chat bubble - GarrisonTalent = 32, // White chat bubble - ContributionCollector = 33, // White chat bubble - Transmogrify = 34, // Purple helm - AzeriteRespec = 35, // White chat bubble - IslandsQueue = 36, // White chat bubble - UIItemInteraction = 37, // White chat bubble - WorldMap = 38, // White chat bubble - Unk39 = 39, // - ChromieTime = 40, // White chat bubble - Unk41 = 41, // - RuneforgeCrafting = 42, // White chat bubble - GuideRecruiter = 43, // White chat bubble - RuneforgeUpgrading = 44, // White chat bubble - CovenantRenown = 45, // White chat bubble + None = 0, // White chat bubble. Default + Vendor = 1, // Brown bag + TaxiNode = 2, // White wing + Trainer = 3, // Brown book + SpiritHealer = 4, // Golden interaction wheel (with red center) + Binder = 5, // Golden interaction wheel + Banker = 6, // Brown bag (with gold coin in lower corner) + PetitionVendor = 7, // White chat bubble (with "..." inside) + TabardVendor = 8, // White tabard + BattleMaster = 9, // Two crossed swords + Auctioneer = 10, // Stack of gold coins + TalentMaster = 11, // White chat bubble + StableMaster = 12, // White chat bubble + PetSpecializationMaster = 13, /*DEPRECATED*/ // White chat bubble + GuildBanker = 14, /*NYI*/ // White chat bubble + SpellClick = 15, /*NYI*/ // White chat bubble + DisableXPGain = 16, // White chat bubble + EnableXPGain = 17, // White chat bubble + Mailbox = 18, // White chat bubble + WorldPVPQueue = 19, /*NYI*/ // White chat bubble + LFGDungeon = 20, /*NYI*/ // White chat bubble + ArtifactRespec = 21, /*NYI*/ // White chat bubble + CemeterySelect = 22, /*DEPRECATED*/ // White chat bubble + SpecializationMaster = 23, /*DEPRECATED*/ // White chat bubble + GlyphMaster = 24, /*DEPRECATED*/ // White chat bubble + QueueScenario = 25, /*NYI*/ // White chat bubble + GarrisonArchitect = 26, /*NYI*/ // White chat bubble + GarrisonMission = 27, /*NYI*/ // White chat bubble + ShipmentCrafter = 28, /*NYI*/ // Brown document + GarrisonTradeskill = 29, /*NYI*/ // White chat bubble + GarrisonRecruitment = 30, /*NYI*/ // White chat bubble + AdventureMap = 31, /*NYI*/ // White chat bubble + GarrisonTalent = 32, /*NYI*/ // White chat bubble + ContributionCollector = 33, /*NYI*/ // White chat bubble + Transmogrify = 34, // Purple helm + AzeriteRespec = 35, /*NYI*/ // White chat bubble + IslandsMission = 36, /*NYI*/ // White chat bubble + UIItemInteraction = 37, /*NYI*/ // White chat bubble + WorldMap = 38, /*NYI*/ // White chat bubble + Soulbind = 39, /*NYI*/ // White chat bubble + ChromieTime = 40, /*NYI*/ // White chat bubble + CovenantPreview = 41, /*NYI*/ // White chat bubble + RuneforgeLegendaryCrafting = 42, /*NYI*/ // White chat bubble + NewPlayerGuide = 43, /*NYI*/ // White chat bubble + RuneforgeLegendaryUpgrade = 44, /*NYI*/ // White chat bubble + CovenantRenown = 45, /*NYI*/ // White chat bubble Count }; @@ -125,11 +98,11 @@ enum class GossipOptionRewardType : uint8 struct GossipMenuItem { - GossipOptionIcon MenuItemIcon; + GossipOptionNpc OptionNpc; bool IsCoded; std::string Message; uint32 Sender; - uint32 OptionType; + uint32 Action; std::string BoxMessage; uint32 BoxMoney; uint32 Language; @@ -161,7 +134,7 @@ class TC_GAME_API GossipMenu GossipMenu(); ~GossipMenu(); - uint32 AddMenuItem(int32 menuItemId, GossipOptionIcon icon, std::string const& message, uint32 sender, uint32 action, std::string const& boxMessage, uint32 boxMoney, bool coded = false); + uint32 AddMenuItem(int32 menuItemId, GossipOptionNpc optionNpc, std::string const& message, uint32 sender, uint32 action, std::string const& boxMessage, uint32 boxMoney, bool coded = false); void AddMenuItem(uint32 menuId, uint32 menuItemId, uint32 sender, uint32 action); void SetMenuId(uint32 menu_id) { _menuId = menu_id; } @@ -202,7 +175,6 @@ class TC_GAME_API GossipMenu uint32 GetMenuItemSender(uint32 menuItemId) const; uint32 GetMenuItemAction(uint32 menuItemId) const; bool IsMenuItemCoded(uint32 menuItemId) const; - bool HasMenuItemType(uint32 optionType) const; void ClearMenu(); diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 7d18a2f795d..0bbc2a97578 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -9228,12 +9228,12 @@ void Player::SetBindPoint(ObjectGuid guid) const SendDirectMessage(packet.Write()); } -void Player::SendRespecWipeConfirm(ObjectGuid const& guid, uint32 cost) const +void Player::SendRespecWipeConfirm(ObjectGuid const& guid, uint32 cost, SpecResetType respecType) const { WorldPackets::Talent::RespecWipeConfirm respecWipeConfirm; respecWipeConfirm.RespecMaster = guid; respecWipeConfirm.Cost = cost; - respecWipeConfirm.RespecType = SPEC_RESET_TALENTS; + respecWipeConfirm.RespecType = respecType; SendDirectMessage(respecWipeConfirm.Write()); } @@ -14002,60 +14002,90 @@ void Player::PrepareGossipMenu(WorldObject* source, uint32 menuId /*= 0*/, bool if (!(itr->second.OptionNpcFlag & npcflags)) continue; - switch (itr->second.OptionType) + switch (itr->second.OptionNpc) { - case GOSSIP_OPTION_ARMORER: - canTalk = false; // added in special mode + case GossipOptionNpc::TaxiNode: + if (GetSession()->SendLearnNewTaxiNode(creature)) + return; break; - case GOSSIP_OPTION_SPIRITHEALER: + case GossipOptionNpc::SpiritHealer: if (!isDead()) canTalk = false; break; - case GOSSIP_OPTION_LEARNDUALSPEC: - canTalk = false; + case GossipOptionNpc::BattleMaster: + if (!creature->isCanInteractWithBattleMaster(this, false)) + canTalk = false; break; - case GOSSIP_OPTION_UNLEARNTALENTS: + case GossipOptionNpc::TalentMaster: + case GossipOptionNpc::SpecializationMaster: + case GossipOptionNpc::GlyphMaster: if (!creature->CanResetTalents(this)) canTalk = false; break; - case GOSSIP_OPTION_TAXIVENDOR: - if (GetSession()->SendLearnNewTaxiNode(creature)) - return; + case GossipOptionNpc::StableMaster: + case GossipOptionNpc::PetSpecializationMaster: + if (GetClass() != CLASS_HUNTER) + canTalk = false; break; - case GOSSIP_OPTION_BATTLEFIELD: - if (!creature->isCanInteractWithBattleMaster(this, false)) + case GossipOptionNpc::DisableXPGain: + if (HasPlayerFlag(PLAYER_FLAGS_NO_XP_GAIN)) canTalk = false; break; - case GOSSIP_OPTION_STABLEPET: - if (GetClass() != CLASS_HUNTER) + case GossipOptionNpc::EnableXPGain: + if (!HasPlayerFlag(PLAYER_FLAGS_NO_XP_GAIN)) canTalk = false; break; - case GOSSIP_OPTION_QUESTGIVER: - canTalk = false; + case GossipOptionNpc::None: + case GossipOptionNpc::Vendor: + case GossipOptionNpc::Trainer: + case GossipOptionNpc::Binder: + case GossipOptionNpc::Banker: + case GossipOptionNpc::PetitionVendor: + case GossipOptionNpc::TabardVendor: + case GossipOptionNpc::Auctioneer: + case GossipOptionNpc::Mailbox: + case GossipOptionNpc::Transmogrify: + break; // No checks + case GossipOptionNpc::CemeterySelect: + canTalk = false; // Deprecated break; - case GOSSIP_OPTION_GOSSIP: - case GOSSIP_OPTION_VENDOR: - case GOSSIP_OPTION_TRAINER: - case GOSSIP_OPTION_SPIRITGUIDE: - case GOSSIP_OPTION_INNKEEPER: - case GOSSIP_OPTION_BANKER: - case GOSSIP_OPTION_PETITIONER: - case GOSSIP_OPTION_TABARDDESIGNER: - case GOSSIP_OPTION_AUCTIONEER: - case GOSSIP_OPTION_TRANSMOGRIFIER: - case GOSSIP_OPTION_MAILBOX: - break; // no checks + case GossipOptionNpc::GuildBanker: + case GossipOptionNpc::SpellClick: + case GossipOptionNpc::WorldPVPQueue: + case GossipOptionNpc::LFGDungeon: + case GossipOptionNpc::ArtifactRespec: + case GossipOptionNpc::QueueScenario: + case GossipOptionNpc::GarrisonArchitect: + case GossipOptionNpc::GarrisonMission: + case GossipOptionNpc::ShipmentCrafter: + case GossipOptionNpc::GarrisonTradeskill: + case GossipOptionNpc::GarrisonRecruitment: + case GossipOptionNpc::AdventureMap: + case GossipOptionNpc::GarrisonTalent: + case GossipOptionNpc::ContributionCollector: + case GossipOptionNpc::AzeriteRespec: + case GossipOptionNpc::IslandsMission: + case GossipOptionNpc::UIItemInteraction: + case GossipOptionNpc::WorldMap: + case GossipOptionNpc::Soulbind: + case GossipOptionNpc::ChromieTime: + case GossipOptionNpc::CovenantPreview: + case GossipOptionNpc::RuneforgeLegendaryCrafting: + case GossipOptionNpc::NewPlayerGuide: + case GossipOptionNpc::RuneforgeLegendaryUpgrade: + case GossipOptionNpc::CovenantRenown: + break; // NYI default: - TC_LOG_ERROR("sql.sql", "Creature entry %u has unknown gossip option %u for menu %u.", creature->GetEntry(), itr->second.OptionType, itr->second.MenuID); + TC_LOG_ERROR("sql.sql", "Creature entry %u has an unknown gossip option icon %u for menu %u.", creature->GetEntry(), AsUnderlyingType(itr->second.OptionNpc), itr->second.MenuID); canTalk = false; break; } } else if (GameObject* go = source->ToGameObject()) { - switch (itr->second.OptionType) + switch (itr->second.OptionNpc) { - case GOSSIP_OPTION_GOSSIP: + case GossipOptionNpc::None: if (go->GetGoType() != GAMEOBJECT_TYPE_QUESTGIVER && go->GetGoType() != GAMEOBJECT_TYPE_GOOBER) canTalk = false; break; @@ -14099,7 +14129,7 @@ void Player::PrepareGossipMenu(WorldObject* source, uint32 menuId /*= 0*/, bool } } - menu->GetGossipMenu().AddMenuItem(itr->second.OptionID, itr->second.OptionIcon, strOptionText, 0, itr->second.OptionType, strBoxText, itr->second.BoxMoney, itr->second.BoxCoded); + menu->GetGossipMenu().AddMenuItem(itr->second.OptionID, itr->second.OptionNpc, strOptionText, 0, AsUnderlyingType(itr->second.OptionNpc), strBoxText, itr->second.BoxMoney, itr->second.BoxCoded); menu->GetGossipMenu().AddGossipMenuItemData(itr->second.OptionID, itr->second.ActionMenuID, itr->second.ActionPoiID); } } @@ -14142,12 +14172,12 @@ void Player::OnGossipSelect(WorldObject* source, uint32 gossipListId, uint32 men if (!item) return; - uint32 gossipOptionType = item->OptionType; + GossipOptionNpc gossipOptionNpc = item->OptionNpc; ObjectGuid guid = source->GetGUID(); if (source->GetTypeId() == TYPEID_GAMEOBJECT) { - if (gossipOptionType > GOSSIP_OPTION_QUESTGIVER) + if (gossipOptionNpc != GossipOptionNpc::None) { TC_LOG_ERROR("entities.player", "Player '%s' (%s) requests invalid gossip option for GameObject (Entry: %u)", GetName().c_str(), GetGUID().ToString().c_str(), source->GetEntry()); @@ -14167,9 +14197,9 @@ void Player::OnGossipSelect(WorldObject* source, uint32 gossipListId, uint32 men return; } - switch (gossipOptionType) + switch (gossipOptionNpc) { - case GOSSIP_OPTION_GOSSIP: + case GossipOptionNpc::None: { if (menuItemData->GossipActionPoi) PlayerTalkClass->SendPointOfInterest(menuItemData->GossipActionPoi); @@ -14182,57 +14212,36 @@ void Player::OnGossipSelect(WorldObject* source, uint32 gossipListId, uint32 men break; } - case GOSSIP_OPTION_SPIRITHEALER: - if (isDead()) - source->ToCreature()->CastSpell(source->ToCreature(), 17251, CastSpellExtraArgs(TRIGGERED_FULL_MASK) - .SetOriginalCaster(GetGUID())); - break; - case GOSSIP_OPTION_QUESTGIVER: - PrepareQuestMenu(guid); - SendPreparedQuest(source); - break; - case GOSSIP_OPTION_VENDOR: - case GOSSIP_OPTION_ARMORER: + case GossipOptionNpc::Vendor: GetSession()->SendListInventory(guid); break; - case GOSSIP_OPTION_STABLEPET: - GetSession()->SendStablePet(guid); + case GossipOptionNpc::TaxiNode: + GetSession()->SendTaxiMenu(source->ToCreature()); break; - case GOSSIP_OPTION_TRAINER: + case GossipOptionNpc::Trainer: GetSession()->SendTrainerList(source->ToCreature(), sObjectMgr->GetCreatureTrainerForGossipOption(source->GetEntry(), menuId, gossipListId)); break; - case GOSSIP_OPTION_LEARNDUALSPEC: - break; - case GOSSIP_OPTION_UNLEARNTALENTS: - PlayerTalkClass->SendCloseGossip(); - SendRespecWipeConfirm(guid, sWorld->getBoolConfig(CONFIG_NO_RESET_TALENT_COST) ? 0 : GetNextResetTalentsCost()); - break; - case GOSSIP_OPTION_TAXIVENDOR: - GetSession()->SendTaxiMenu(source->ToCreature()); + case GossipOptionNpc::SpiritHealer: + if (isDead()) + source->ToCreature()->CastSpell(source->ToCreature(), 17251, CastSpellExtraArgs(TRIGGERED_FULL_MASK) + .SetOriginalCaster(GetGUID())); break; - case GOSSIP_OPTION_INNKEEPER: + case GossipOptionNpc::Binder: PlayerTalkClass->SendCloseGossip(); SetBindPoint(guid); break; - case GOSSIP_OPTION_BANKER: + case GossipOptionNpc::Banker: GetSession()->SendShowBank(guid); break; - case GOSSIP_OPTION_PETITIONER: + case GossipOptionNpc::PetitionVendor: PlayerTalkClass->SendCloseGossip(); GetSession()->SendPetitionShowList(guid); break; - case GOSSIP_OPTION_TABARDDESIGNER: + case GossipOptionNpc::TabardVendor: PlayerTalkClass->SendCloseGossip(); GetSession()->SendTabardVendorActivate(guid); break; - case GOSSIP_OPTION_AUCTIONEER: - GetSession()->SendAuctionHello(guid, source->ToCreature()); - break; - case GOSSIP_OPTION_SPIRITGUIDE: - PrepareGossipMenu(source); - SendPreparedGossip(source); - break; - case GOSSIP_OPTION_BATTLEFIELD: + case GossipOptionNpc::BattleMaster: { BattlegroundTypeId bgTypeId = sBattlegroundMgr->GetBattleMasterBG(source->GetEntry()); @@ -14246,12 +14255,44 @@ void Player::OnGossipSelect(WorldObject* source, uint32 gossipListId, uint32 men sBattlegroundMgr->SendBattlegroundList(this, guid, bgTypeId); break; } - case GOSSIP_OPTION_TRANSMOGRIFIER: - GetSession()->SendOpenTransmogrifier(guid); + case GossipOptionNpc::Auctioneer: + GetSession()->SendAuctionHello(guid, source->ToCreature()); + break; + case GossipOptionNpc::TalentMaster: + PlayerTalkClass->SendCloseGossip(); + SendRespecWipeConfirm(guid, sWorld->getBoolConfig(CONFIG_NO_RESET_TALENT_COST) ? 0 : GetNextResetTalentsCost(), SPEC_RESET_TALENTS); + break; + case GossipOptionNpc::StableMaster: + GetSession()->SendStablePet(guid); + break; + case GossipOptionNpc::PetSpecializationMaster: + PlayerTalkClass->SendCloseGossip(); + SendRespecWipeConfirm(guid, sWorld->getBoolConfig(CONFIG_NO_RESET_TALENT_COST) ? 0 : GetNextResetTalentsCost(), SPEC_RESET_PET_TALENTS); break; - case GOSSIP_OPTION_MAILBOX: + case GossipOptionNpc::DisableXPGain: + PlayerTalkClass->SendCloseGossip(); + SetPlayerFlag(PLAYER_FLAGS_NO_XP_GAIN); + break; + case GossipOptionNpc::EnableXPGain: + PlayerTalkClass->SendCloseGossip(); + RemovePlayerFlag(PLAYER_FLAGS_NO_XP_GAIN); + break; + case GossipOptionNpc::Mailbox: GetSession()->SendShowMailBox(guid); break; + case GossipOptionNpc::SpecializationMaster: + PlayerTalkClass->SendCloseGossip(); + SendRespecWipeConfirm(guid, 0, SPEC_RESET_SPECIALIZATION); + break; + case GossipOptionNpc::GlyphMaster: + PlayerTalkClass->SendCloseGossip(); + SendRespecWipeConfirm(guid, 0, SPEC_RESET_GLYPHS); + break; + case GossipOptionNpc::Transmogrify: + GetSession()->SendOpenTransmogrifier(guid); + break; + default: + break; } ModifyMoney(-cost); diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 763cc48e231..dffc1965443 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1719,7 +1719,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> bool m_mailsUpdated; void SetBindPoint(ObjectGuid guid) const; - void SendRespecWipeConfirm(ObjectGuid const& guid, uint32 cost) const; + void SendRespecWipeConfirm(ObjectGuid const& guid, uint32 cost, SpecResetType respecType) const; void RegenerateAll(); void Regenerate(Powers power); void RegenerateHealth(); diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index f3873c6c351..b16e32d40a7 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -9611,8 +9611,8 @@ void ObjectMgr::LoadGossipMenuItems() _gossipMenuItemsStore.clear(); QueryResult result = WorldDatabase.Query( - // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 - "SELECT MenuID, OptionID, OptionIcon, OptionText, OptionBroadcastTextID, OptionType, OptionNpcFlag, Language, ActionMenuID, ActionPoiID, BoxCoded, BoxMoney, BoxText, BoxBroadcastTextID " + // 0 1 2 3 4 5 6 7 8 9 10 11 12 + "SELECT MenuID, OptionID, OptionNpc, OptionText, OptionBroadcastTextID, OptionNpcFlag, Language, ActionMenuID, ActionPoiID, BoxCoded, BoxMoney, BoxText, BoxBroadcastTextID " "FROM gossip_menu_option ORDER BY MenuID, OptionID"); if (!result) @@ -9629,23 +9629,22 @@ void ObjectMgr::LoadGossipMenuItems() gMenuItem.MenuID = fields[0].GetUInt32(); gMenuItem.OptionID = fields[1].GetUInt32(); - gMenuItem.OptionIcon = GossipOptionIcon(fields[2].GetUInt8()); + gMenuItem.OptionNpc = GossipOptionNpc(fields[2].GetUInt8()); gMenuItem.OptionText = fields[3].GetString(); gMenuItem.OptionBroadcastTextID = fields[4].GetUInt32(); - gMenuItem.OptionType = fields[5].GetUInt32(); - gMenuItem.OptionNpcFlag = fields[6].GetUInt64(); - gMenuItem.Language = fields[7].GetUInt32(); - gMenuItem.ActionMenuID = fields[8].GetUInt32(); - gMenuItem.ActionPoiID = fields[9].GetUInt32(); - gMenuItem.BoxCoded = fields[10].GetBool(); - gMenuItem.BoxMoney = fields[11].GetUInt32(); - gMenuItem.BoxText = fields[12].GetString(); - gMenuItem.BoxBroadcastTextID = fields[13].GetUInt32(); + gMenuItem.OptionNpcFlag = fields[5].GetUInt64(); + gMenuItem.Language = fields[6].GetUInt32(); + gMenuItem.ActionMenuID = fields[7].GetUInt32(); + gMenuItem.ActionPoiID = fields[8].GetUInt32(); + gMenuItem.BoxCoded = fields[9].GetBool(); + gMenuItem.BoxMoney = fields[10].GetUInt32(); + gMenuItem.BoxText = fields[11].GetString(); + gMenuItem.BoxBroadcastTextID = fields[12].GetUInt32(); - if (gMenuItem.OptionIcon >= GossipOptionIcon::Count) + if (gMenuItem.OptionNpc >= GossipOptionNpc::Count) { - TC_LOG_ERROR("sql.sql", "Table `gossip_menu_option` for menu %u, id %u has unknown icon id %u. Replacing with GossipOptionIcon::None", gMenuItem.MenuID, gMenuItem.OptionID, uint32(gMenuItem.OptionIcon)); - gMenuItem.OptionIcon = GossipOptionIcon::None; + TC_LOG_ERROR("sql.sql", "Table `gossip_menu_option` for menu %u, id %u has unknown NPC option id %u. Replacing with GossipOptionNpc::None", gMenuItem.MenuID, gMenuItem.OptionID, AsUnderlyingType(gMenuItem.OptionNpc)); + gMenuItem.OptionNpc = GossipOptionNpc::None; } if (gMenuItem.OptionBroadcastTextID) @@ -9657,18 +9656,25 @@ void ObjectMgr::LoadGossipMenuItems() } } - if (gMenuItem.OptionType >= GOSSIP_OPTION_MAX) - TC_LOG_ERROR("sql.sql", "Table `gossip_menu_option` for menu %u, id %u has unknown option id %u. Option will not be used", gMenuItem.MenuID, gMenuItem.OptionID, gMenuItem.OptionType); - if (gMenuItem.Language && !sLanguagesStore.LookupEntry(gMenuItem.Language)) { TC_LOG_ERROR("sql.sql", "Table `gossip_menu_option` for menu %u, id %u use non-existing Language %u, ignoring", gMenuItem.MenuID, gMenuItem.OptionID, gMenuItem.Language); gMenuItem.Language = 0; } - if (gMenuItem.ActionPoiID && !GetPointOfInterest(gMenuItem.ActionPoiID)) + if (gMenuItem.ActionMenuID && gMenuItem.OptionNpc != GossipOptionNpc::None) { - TC_LOG_ERROR("sql.sql", "Table `gossip_menu_option` for menu %u, id %u use non-existing ActionPoiID %u, ignoring", gMenuItem.MenuID, gMenuItem.OptionID, gMenuItem.ActionPoiID); + TC_LOG_ERROR("sql.sql", "Table `gossip_menu_option` for menu %u, id %u can not use ActionMenuID for GossipOptionNpc different from GossipOptionNpc::None, ignoring", gMenuItem.MenuID, gMenuItem.OptionID); + gMenuItem.ActionMenuID = 0; + } + + if (gMenuItem.ActionPoiID) + { + if (gMenuItem.OptionNpc != GossipOptionNpc::None) + TC_LOG_ERROR("sql.sql", "Table `gossip_menu_option` for menu %u, id %u can not use ActionPoiID for GossipOptionNpc different from GossipOptionNpc::None, ignoring", gMenuItem.MenuID, gMenuItem.OptionID); + else if (!GetPointOfInterest(gMenuItem.ActionPoiID)) + TC_LOG_ERROR("sql.sql", "Table `gossip_menu_option` for menu %u, id %u use non-existing ActionPoiID %u, ignoring", gMenuItem.MenuID, gMenuItem.OptionID, gMenuItem.ActionPoiID); + gMenuItem.ActionPoiID = 0; } diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index afa0c90f2d7..d90701a8c31 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -44,7 +44,7 @@ class Item; class Unit; class Vehicle; class Map; -enum class GossipOptionIcon : uint8; +enum class GossipOptionNpc : uint8; struct AccessRequirement; struct DeclinedName; struct DungeonEncounterEntry; @@ -744,10 +744,9 @@ struct GossipMenuItems { uint32 MenuID; uint32 OptionID; - GossipOptionIcon OptionIcon; + GossipOptionNpc OptionNpc; std::string OptionText; uint32 OptionBroadcastTextID; - uint32 OptionType; uint32 OptionNpcFlag; uint32 Language; uint32 ActionMenuID; diff --git a/src/server/game/Handlers/SkillHandler.cpp b/src/server/game/Handlers/SkillHandler.cpp index 6079ed8c757..e4461af9337 100644 --- a/src/server/game/Handlers/SkillHandler.cpp +++ b/src/server/game/Handlers/SkillHandler.cpp @@ -92,18 +92,12 @@ void WorldSession::HandleConfirmRespecWipeOpcode(WorldPackets::Talent::ConfirmRe if (!unit->CanResetTalents(_player)) return; - if (!_player->PlayerTalkClass->GetGossipMenu().HasMenuItemType(GOSSIP_OPTION_UNLEARNTALENTS)) - return; - // remove fake death if (GetPlayer()->HasUnitState(UNIT_STATE_DIED)) GetPlayer()->RemoveAurasByType(SPELL_AURA_FEIGN_DEATH); if (!_player->ResetTalents()) - { - GetPlayer()->SendRespecWipeConfirm(ObjectGuid::Empty, 0); return; - } _player->SendTalentsInfoData(); unit->CastSpell(_player, 14867, true); //spell: "Untalent Visual Effect" diff --git a/src/server/game/Server/Packets/NPCPackets.h b/src/server/game/Server/Packets/NPCPackets.h index f6740feb703..5147b46798d 100644 --- a/src/server/game/Server/Packets/NPCPackets.h +++ b/src/server/game/Server/Packets/NPCPackets.h @@ -24,7 +24,7 @@ #include "Position.h" #include <array> -enum class GossipOptionIcon : uint8; +enum class GossipOptionNpc : uint8; enum class GossipOptionStatus : uint8; enum class GossipOptionRewardType : uint8; @@ -64,7 +64,7 @@ namespace WorldPackets struct ClientGossipOptions { int32 ClientOption = 0; - GossipOptionIcon OptionNPC = GossipOptionIcon(0); + GossipOptionNpc OptionNPC = GossipOptionNpc(0); uint8 OptionFlags = 0; int32 OptionCost = 0; uint32 OptionLanguage = 0; diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index f79e0b6e11b..4c6474c2d38 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -2266,7 +2266,7 @@ void Spell::EffectUntrainTalents() if (!unitTarget || m_caster->GetTypeId() == TYPEID_PLAYER) return; - unitTarget->ToPlayer()->SendRespecWipeConfirm(m_caster->GetGUID(), sWorld->getBoolConfig(CONFIG_NO_RESET_TALENT_COST) ? 0 : unitTarget->ToPlayer()->GetNextResetTalentsCost()); + unitTarget->ToPlayer()->SendRespecWipeConfirm(m_caster->GetGUID(), sWorld->getBoolConfig(CONFIG_NO_RESET_TALENT_COST) ? 0 : unitTarget->ToPlayer()->GetNextResetTalentsCost(), SPEC_RESET_TALENTS); } void Spell::EffectTeleUnitsFaceCaster() diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.cpp index e72e7f0ce80..d8b6f8c97eb 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.cpp @@ -478,7 +478,7 @@ class npc_lokhtos_darkbargainer : public CreatureScript !player->HasItemCount(ITEM_THRORIUM_BROTHERHOOD_CONTRACT, 1, true) && player->HasItemCount(ITEM_SULFURON_INGOT)) { - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_ITEM_GET_CONTRACT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_ITEM_GET_CONTRACT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); } if (player->GetReputationRank(59) < REP_FRIENDLY) diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_tomb_of_seven.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_tomb_of_seven.cpp index e2e2908c5ab..4cbdf0498d2 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_tomb_of_seven.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_tomb_of_seven.cpp @@ -67,7 +67,7 @@ class boss_gloomrel : public CreatureScript switch (action) { case GOSSIP_ACTION_INFO_DEF + 1: - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_ITEM_TEACH_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 11); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_ITEM_TEACH_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 11); SendGossipMenuFor(player, 2606, me->GetGUID()); break; case GOSSIP_ACTION_INFO_DEF + 11: @@ -75,7 +75,7 @@ class boss_gloomrel : public CreatureScript player->CastSpell(player, SPELL_LEARN_SMELT, false); break; case GOSSIP_ACTION_INFO_DEF + 2: - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_ITEM_TEACH_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 22); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_ITEM_TEACH_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 22); SendGossipMenuFor(player, 2604, me->GetGUID()); break; case GOSSIP_ACTION_INFO_DEF + 22: @@ -90,10 +90,10 @@ class boss_gloomrel : public CreatureScript bool OnGossipHello(Player* player) override { if (player->GetQuestRewardStatus(QUEST_SPECTRAL_CHALICE) == 1 && player->GetSkillValue(SKILL_MINING) >= DATA_SKILLPOINT_MIN && !player->HasSpell(SPELL_SMELT_DARK_IRON)) - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_ITEM_TEACH_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_ITEM_TEACH_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); if (player->GetQuestRewardStatus(QUEST_SPECTRAL_CHALICE) == 0 && player->GetSkillValue(SKILL_MINING) >= DATA_SKILLPOINT_MIN) - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_ITEM_TRIBUTE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_ITEM_TRIBUTE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); SendGossipMenuFor(player, player->GetGossipTextId(me), me->GetGUID()); return true; diff --git a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp index 0cd14fd2efd..35deae16e73 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp @@ -377,9 +377,9 @@ public: if (player->IsGameMaster()) { - AddGossipItemFor(player, GossipOptionIcon::Auctioneer, OZ_GM_GOSSIP1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); - AddGossipItemFor(player, GossipOptionIcon::Auctioneer, OZ_GM_GOSSIP2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4); - AddGossipItemFor(player, GossipOptionIcon::Auctioneer, OZ_GM_GOSSIP3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5); + AddGossipItemFor(player, GossipOptionNpc::None, OZ_GM_GOSSIP1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); + AddGossipItemFor(player, GossipOptionNpc::None, OZ_GM_GOSSIP2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4); + AddGossipItemFor(player, GossipOptionNpc::None, OZ_GM_GOSSIP3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5); } if (!RaidWiped) diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp index 7382f0be781..04fe6ee6ebb 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp @@ -1620,7 +1620,7 @@ public: player->PrepareQuestMenu(me->GetGUID()); if (player->GetQuestStatus(12801) == QUEST_STATUS_INCOMPLETE) - AddGossipItemFor(player, GossipOptionIcon::None, "I am ready.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); + AddGossipItemFor(player, GossipOptionNpc::None, "I am ready.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); SendGossipMenuFor(player, player->GetGossipTextId(me), me->GetGUID()); diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp index 891db86be55..6723f93233c 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp @@ -119,7 +119,7 @@ class npc_jaina_proudmoore : public CreatureScript AddGossipItemFor(player, GOSSIP_ITEM_ALLY_RETREAT_MID, GOSSIP_ITEM_ALLY_RETREAT_OID, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); if (player->IsGameMaster()) - AddGossipItemFor(player, GossipOptionIcon::Trainer, GOSSIP_ITEM_GM1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_ITEM_GM1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); SendGossipMenuFor(player, 907, me->GetGUID()); return true; @@ -196,7 +196,7 @@ class npc_thrall : public CreatureScript } if (player->IsGameMaster()) - AddGossipItemFor(player, GossipOptionIcon::Trainer, GOSSIP_ITEM_GM1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_ITEM_GM1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); SendGossipMenuFor(player, 907, me->GetGUID()); return true; diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp index 4c4b124407e..fa3b41dd071 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp @@ -306,7 +306,7 @@ class npc_chromie_start : public CreatureScript if (InstanceScript* instance = me->GetInstanceScript()) { if (player->CanBeGameMaster()) // GM instance state override menu - AddGossipItemFor(player, GossipOptionIcon::SpiritHealer, "[GM] Access instance control panel", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + GOSSIP_OFFSET_OPEN_GM_MENU); + AddGossipItemFor(player, GossipOptionNpc::None, "[GM] Access instance control panel", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + GOSSIP_OFFSET_OPEN_GM_MENU); uint32 state = instance->GetData(DATA_INSTANCE_PROGRESS); if (state < PURGE_STARTING) @@ -376,16 +376,16 @@ class npc_chromie_start : public CreatureScript me->CastSpell(player, SPELL_SUMMON_ARCANE_DISRUPTOR); break; case GOSSIP_OFFSET_OPEN_GM_MENU: - AddGossipItemFor(player, GossipOptionIcon::SpiritHealer, "Teleport all players to Arthas", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + GOSSIP_OFFSET_GM_INITIAL); + AddGossipItemFor(player, GossipOptionNpc::None, "Teleport all players to Arthas", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + GOSSIP_OFFSET_GM_INITIAL); for (uint32 state = 1; state <= COMPLETE; state = state << 1) { if (GetStableStateFor(COSProgressStates(state)) == state) - AddGossipItemFor(player, GossipOptionIcon::SpiritHealer, Trinity::StringFormat("Set instance progress to 0x%05X", state), GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + GOSSIP_OFFSET_GM_INITIAL + state); + AddGossipItemFor(player, GossipOptionNpc::None, Trinity::StringFormat("Set instance progress to 0x%05X", state), GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + GOSSIP_OFFSET_GM_INITIAL + state); } for (uint32 state = 1; state <= COMPLETE; state = state << 1) { if (GetStableStateFor(COSProgressStates(state)) != state) - AddGossipItemFor(player, GossipOptionIcon::SpiritHealer, Trinity::StringFormat("Force state to 0x%05X (UNSTABLE)", state), GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + GOSSIP_OFFSET_GM_INITIAL + state); + AddGossipItemFor(player, GossipOptionNpc::None, Trinity::StringFormat("Force state to 0x%05X (UNSTABLE)", state), GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + GOSSIP_OFFSET_GM_INITIAL + state); } SendGossipMenuFor(player, GOSSIP_TEXT_SKIP_1, me->GetGUID()); break; diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp index 87b3318ef40..951d3bf60b3 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp @@ -92,7 +92,7 @@ public: AddGossipItemFor(player, GOSSIP_MENU_EROZION, GOSSIP_OPTION_BOMB, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); if (player->GetQuestStatus(QUEST_ENTRY_RETURN) == QUEST_STATUS_COMPLETE) - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_HELLO_EROZION2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_HELLO_EROZION2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); SendGossipMenuFor(player, 9778, me->GetGUID()); diff --git a/src/server/scripts/Northrend/zone_borean_tundra.cpp b/src/server/scripts/Northrend/zone_borean_tundra.cpp index b282ae2f22d..82ab8101184 100644 --- a/src/server/scripts/Northrend/zone_borean_tundra.cpp +++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp @@ -1404,7 +1404,7 @@ struct npc_hidden_cultist : public ScriptedAI AddGossipItemFor(player, charGossipItem, GOSSIP_ITEM_HIDDEN_CULTIST_OPTIONID, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); if (me->IsVendor()) - AddGossipItemFor(player, GossipOptionIcon::Vendor, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); + AddGossipItemFor(player, GossipOptionNpc::Vendor, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); SendGossipMenuFor(player, uiGossipText, me->GetGUID()); diff --git a/src/server/scripts/Northrend/zone_wintergrasp.cpp b/src/server/scripts/Northrend/zone_wintergrasp.cpp index fb981b037aa..e4a53d4c57f 100644 --- a/src/server/scripts/Northrend/zone_wintergrasp.cpp +++ b/src/server/scripts/Northrend/zone_wintergrasp.cpp @@ -129,16 +129,16 @@ struct npc_wg_demolisher_engineer : public ScriptedAI if (CanBuild()) { if (player->HasAura(SPELL_CORPORAL)) - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_HELLO_DEMO1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_HELLO_DEMO1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); else if (player->HasAura(SPELL_LIEUTENANT)) { - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_HELLO_DEMO1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_HELLO_DEMO2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_HELLO_DEMO3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_HELLO_DEMO1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_HELLO_DEMO2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_HELLO_DEMO3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); } } else - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_HELLO_DEMO4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 9); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_HELLO_DEMO4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 9); SendGossipMenuFor(player, player->GetGossipTextId(me), me->GetGUID()); return true; @@ -210,7 +210,7 @@ struct npc_wg_spirit_guide : public ScriptedAI GraveyardVect graveyard = wintergrasp->GetGraveyardVector(); for (uint8 i = 0; i < graveyard.size(); i++) if (graveyard[i]->GetControlTeamId() == player->GetTeamId()) - AddGossipItemFor(player, GossipOptionIcon::None, player->GetSession()->GetTrinityString(((BfGraveyardWG*)graveyard[i])->GetTextId()), GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + i); + AddGossipItemFor(player, GossipOptionNpc::None, player->GetSession()->GetTrinityString(((BfGraveyardWG*)graveyard[i])->GetTextId()), GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + i); SendGossipMenuFor(player, player->GetGossipTextId(me), me->GetGUID()); return true; @@ -278,7 +278,7 @@ struct npc_wg_queue : public ScriptedAI if (wintergrasp->IsWarTime()) { - AddGossipItemFor(player, GossipOptionIcon::None, player->GetSession()->GetTrinityString(WG_NPCQUEUE_TEXTOPTION_JOIN), GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); + AddGossipItemFor(player, GossipOptionNpc::None, player->GetSession()->GetTrinityString(WG_NPCQUEUE_TEXTOPTION_JOIN), GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); SendGossipMenuFor(player, wintergrasp->GetDefenderTeam() ? WG_NPCQUEUE_TEXT_H_WAR : WG_NPCQUEUE_TEXT_A_WAR, me->GetGUID()); } else @@ -287,7 +287,7 @@ struct npc_wg_queue : public ScriptedAI player->SendUpdateWorldState(4354, GameTime::GetGameTime() + timer); if (timer < 15 * MINUTE) { - AddGossipItemFor(player, GossipOptionIcon::None, player->GetSession()->GetTrinityString(WG_NPCQUEUE_TEXTOPTION_JOIN), GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); + AddGossipItemFor(player, GossipOptionNpc::None, player->GetSession()->GetTrinityString(WG_NPCQUEUE_TEXTOPTION_JOIN), GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); SendGossipMenuFor(player, wintergrasp->GetDefenderTeam() ? WG_NPCQUEUE_TEXT_H_QUEUE : WG_NPCQUEUE_TEXT_A_QUEUE, me->GetGUID()); } else diff --git a/src/server/scripts/World/go_scripts.cpp b/src/server/scripts/World/go_scripts.cpp index 6c54b193ff8..05b77388d63 100644 --- a/src/server/scripts/World/go_scripts.cpp +++ b/src/server/scripts/World/go_scripts.cpp @@ -454,7 +454,7 @@ public: QuestStatus status = player->GetQuestStatus(QUEST_DOING_YOUR_DUTY); if (status == QUEST_STATUS_INCOMPLETE || status == QUEST_STATUS_COMPLETE || status == QUEST_STATUS_REWARDED) { - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_USE_OUTHOUSE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_USE_OUTHOUSE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); SendGossipMenuFor(player, GOSSIP_OUTHOUSE_VACANT, me->GetGUID()); } else diff --git a/src/server/scripts/World/npc_professions.cpp b/src/server/scripts/World/npc_professions.cpp index 6a7895d38a9..f7304de7a77 100644 --- a/src/server/scripts/World/npc_professions.cpp +++ b/src/server/scripts/World/npc_professions.cpp @@ -444,10 +444,10 @@ public: player->PrepareQuestMenu(me->GetGUID()); if (me->IsVendor()) - AddGossipItemFor(player, GossipOptionIcon::Vendor, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); + AddGossipItemFor(player, GossipOptionNpc::Vendor, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); if (me->IsTrainer()) - AddGossipItemFor(player, GossipOptionIcon::Trainer, GOSSIP_TEXT_TRAIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN); + AddGossipItemFor(player, GossipOptionNpc::Trainer, GOSSIP_TEXT_TRAIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN); if (player->HasSkill(SKILL_ALCHEMY) && player->GetBaseSkillValue(SKILL_ALCHEMY) >= 350 && player->GetLevel() > 67) { @@ -457,21 +457,21 @@ public: { case N_TRAINER_TRANSMUTE: //Zarevhi if (!HasAlchemySpell(player)) - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_LEARN_TRANSMUTE, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 1); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_LEARN_TRANSMUTE, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 1); if (player->HasSpell(S_TRANSMUTE)) - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_UNLEARN_TRANSMUTE, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 4); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_UNLEARN_TRANSMUTE, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 4); break; case N_TRAINER_ELIXIR: //Lorokeem if (!HasAlchemySpell(player)) - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_LEARN_ELIXIR, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 2); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_LEARN_ELIXIR, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 2); if (player->HasSpell(S_ELIXIR)) - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_UNLEARN_ELIXIR, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 5); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_UNLEARN_ELIXIR, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 5); break; case N_TRAINER_POTION: //Lauranna Thar'well if (!HasAlchemySpell(player)) - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_LEARN_POTION, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 3); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_LEARN_POTION, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 3); if (player->HasSpell(S_POTION)) - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_UNLEARN_POTION, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 6); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_UNLEARN_POTION, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 6); break; } } @@ -521,17 +521,17 @@ public: switch (me->GetEntry()) { case N_TRAINER_TRANSMUTE: - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_LEARN_TRANSMUTE, GOSSIP_SENDER_CHECK, action); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_LEARN_TRANSMUTE, GOSSIP_SENDER_CHECK, action); //unknown textID () SendGossipMenuFor(player, player->GetGossipTextId(me), me->GetGUID()); break; case N_TRAINER_ELIXIR: - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_LEARN_ELIXIR, GOSSIP_SENDER_CHECK, action); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_LEARN_ELIXIR, GOSSIP_SENDER_CHECK, action); //unknown textID () SendGossipMenuFor(player, player->GetGossipTextId(me), me->GetGUID()); break; case N_TRAINER_POTION: - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_LEARN_POTION, GOSSIP_SENDER_CHECK, action); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_LEARN_POTION, GOSSIP_SENDER_CHECK, action); //unknown textID () SendGossipMenuFor(player, player->GetGossipTextId(me), me->GetGUID()); break; @@ -546,17 +546,17 @@ public: switch (me->GetEntry()) { case N_TRAINER_TRANSMUTE: - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_UNLEARN_TRANSMUTE, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_ALCHEMY_SPEC, DoHighUnlearnCost(player), false); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_UNLEARN_TRANSMUTE, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_ALCHEMY_SPEC, DoHighUnlearnCost(player), false); //unknown textID () SendGossipMenuFor(player, player->GetGossipTextId(me), me->GetGUID()); break; case N_TRAINER_ELIXIR: - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_UNLEARN_ELIXIR, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_ALCHEMY_SPEC, DoHighUnlearnCost(player), false); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_UNLEARN_ELIXIR, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_ALCHEMY_SPEC, DoHighUnlearnCost(player), false); //unknown textID () SendGossipMenuFor(player, player->GetGossipTextId(me), me->GetGUID()); break; case N_TRAINER_POTION: - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_UNLEARN_POTION, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_ALCHEMY_SPEC, DoHighUnlearnCost(player), false); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_UNLEARN_POTION, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_ALCHEMY_SPEC, DoHighUnlearnCost(player), false); //unknown textID () SendGossipMenuFor(player, player->GetGossipTextId(me), me->GetGUID()); break; @@ -621,10 +621,10 @@ public: player->PrepareQuestMenu(me->GetGUID()); if (me->IsVendor()) - AddGossipItemFor(player, GossipOptionIcon::Vendor, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); + AddGossipItemFor(player, GossipOptionNpc::Vendor, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); if (me->IsTrainer()) - AddGossipItemFor(player, GossipOptionIcon::Trainer, GOSSIP_TEXT_TRAIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN); + AddGossipItemFor(player, GossipOptionNpc::Trainer, GOSSIP_TEXT_TRAIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN); uint32 creatureId = me->GetEntry(); //WEAPONSMITH & ARMORSMITH @@ -635,19 +635,19 @@ public: case N_TRAINER_SMITHOMNI1: case N_TRAINER_SMITHOMNI2: if (!player->HasSpell(S_ARMOR) && !player->HasSpell(S_WEAPON) && player->GetReputationRank(REP_ARMOR) >= REP_FRIENDLY) - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_ARMOR_LEARN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_ARMOR_LEARN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); if (!player->HasSpell(S_WEAPON) && !player->HasSpell(S_ARMOR) && player->GetReputationRank(REP_WEAPON) >= REP_FRIENDLY) - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_WEAPON_LEARN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_WEAPON_LEARN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); break; case N_TRAINER_WEAPON1: case N_TRAINER_WEAPON2: if (player->HasSpell(S_WEAPON)) - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_WEAPON_UNLEARN, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 3); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_WEAPON_UNLEARN, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 3); break; case N_TRAINER_ARMOR1: case N_TRAINER_ARMOR2: if (player->HasSpell(S_ARMOR)) - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_ARMOR_UNLEARN, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 4); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_ARMOR_UNLEARN, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 4); break; } } @@ -658,21 +658,21 @@ public: { case N_TRAINER_HAMMER: if (!HasWeaponSub(player)) - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_LEARN_HAMMER, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 5); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_LEARN_HAMMER, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 5); if (player->HasSpell(S_HAMMER)) - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_UNLEARN_HAMMER, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 8); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_UNLEARN_HAMMER, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 8); break; case N_TRAINER_AXE: if (!HasWeaponSub(player)) - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_LEARN_AXE, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 6); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_LEARN_AXE, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 6); if (player->HasSpell(S_AXE)) - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_UNLEARN_AXE, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 9); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_UNLEARN_AXE, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 9); break; case N_TRAINER_SWORD: if (!HasWeaponSub(player)) - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_LEARN_SWORD, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 7); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_LEARN_SWORD, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 7); if (player->HasSpell(S_SWORD)) - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_UNLEARN_SWORD, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 10); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_UNLEARN_SWORD, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 10); break; } } @@ -754,17 +754,17 @@ public: switch (me->GetEntry()) { case N_TRAINER_HAMMER: - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_LEARN_HAMMER, GOSSIP_SENDER_CHECK, action); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_LEARN_HAMMER, GOSSIP_SENDER_CHECK, action); //unknown textID (TALK_HAMMER_LEARN) SendGossipMenuFor(player, player->GetGossipTextId(me), me->GetGUID()); break; case N_TRAINER_AXE: - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_LEARN_AXE, GOSSIP_SENDER_CHECK, action); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_LEARN_AXE, GOSSIP_SENDER_CHECK, action); //unknown textID (TALK_AXE_LEARN) SendGossipMenuFor(player, player->GetGossipTextId(me), me->GetGUID()); break; case N_TRAINER_SWORD: - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_LEARN_SWORD, GOSSIP_SENDER_CHECK, action); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_LEARN_SWORD, GOSSIP_SENDER_CHECK, action); //unknown textID (TALK_SWORD_LEARN) SendGossipMenuFor(player, player->GetGossipTextId(me), me->GetGUID()); break; @@ -782,23 +782,23 @@ public: case N_TRAINER_WEAPON2: case N_TRAINER_ARMOR1: case N_TRAINER_ARMOR2: - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_UNLEARN_SMITH_SPEC, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_ARMORORWEAPON, DoLowUnlearnCost(player), false); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_UNLEARN_SMITH_SPEC, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_ARMORORWEAPON, DoLowUnlearnCost(player), false); //unknown textID (TALK_UNLEARN_AXEORWEAPON) SendGossipMenuFor(player, player->GetGossipTextId(me), me->GetGUID()); break; case N_TRAINER_HAMMER: - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_UNLEARN_HAMMER, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_WEAPON_SPEC, DoMedUnlearnCost(player), false); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_UNLEARN_HAMMER, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_WEAPON_SPEC, DoMedUnlearnCost(player), false); //unknown textID (TALK_HAMMER_UNLEARN) SendGossipMenuFor(player, player->GetGossipTextId(me), me->GetGUID()); break; case N_TRAINER_AXE: - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_UNLEARN_AXE, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_WEAPON_SPEC, DoMedUnlearnCost(player), false); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_UNLEARN_AXE, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_WEAPON_SPEC, DoMedUnlearnCost(player), false); //unknown textID (TALK_AXE_UNLEARN) SendGossipMenuFor(player, player->GetGossipTextId(me), me->GetGUID()); break; case N_TRAINER_SWORD: - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_UNLEARN_SWORD, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_WEAPON_SPEC, DoMedUnlearnCost(player), false); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_UNLEARN_SWORD, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_WEAPON_SPEC, DoMedUnlearnCost(player), false); //unknown textID (TALK_SWORD_UNLEARN) SendGossipMenuFor(player, player->GetGossipTextId(me), me->GetGUID()); break; @@ -922,7 +922,7 @@ public: } if (canLearn) - AddGossipItemFor(player, GossipOptionIcon::None, gossipItem, me->GetEntry(), GOSSIP_ACTION_INFO_DEF + 1); + AddGossipItemFor(player, GossipOptionNpc::None, gossipItem, me->GetEntry(), GOSSIP_ACTION_INFO_DEF + 1); SendGossipMenuFor(player, npcTextId ? npcTextId : player->GetGossipTextId(me), me->GetGUID()); return true; @@ -984,10 +984,10 @@ public: player->PrepareQuestMenu(me->GetGUID()); if (me->IsVendor()) - AddGossipItemFor(player, GossipOptionIcon::Vendor, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); + AddGossipItemFor(player, GossipOptionNpc::Vendor, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); if (me->IsTrainer()) - AddGossipItemFor(player, GossipOptionIcon::Trainer, GOSSIP_TEXT_TRAIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN); + AddGossipItemFor(player, GossipOptionNpc::Trainer, GOSSIP_TEXT_TRAIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN); if (player->HasSkill(SKILL_LEATHERWORKING) && player->GetBaseSkillValue(SKILL_LEATHERWORKING) >= 250 && player->GetLevel() > 49) { @@ -996,17 +996,17 @@ public: case N_TRAINER_DRAGON1: case N_TRAINER_DRAGON2: if (player->HasSpell(S_DRAGON)) - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_UNLEARN_DRAGON, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 1); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_UNLEARN_DRAGON, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 1); break; case N_TRAINER_ELEMENTAL1: case N_TRAINER_ELEMENTAL2: if (player->HasSpell(S_ELEMENTAL)) - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_UNLEARN_ELEMENTAL, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 2); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_UNLEARN_ELEMENTAL, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 2); break; case N_TRAINER_TRIBAL1: case N_TRAINER_TRIBAL2: if (player->HasSpell(S_TRIBAL)) - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_UNLEARN_TRIBAL, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 3); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_UNLEARN_TRIBAL, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 3); break; } } @@ -1046,19 +1046,19 @@ public: { case N_TRAINER_DRAGON1: case N_TRAINER_DRAGON2: - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_UNLEARN_DRAGON, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_LEATHER_SPEC, DoMedUnlearnCost(player), false); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_UNLEARN_DRAGON, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_LEATHER_SPEC, DoMedUnlearnCost(player), false); //unknown textID () SendGossipMenuFor(player, player->GetGossipTextId(me), me->GetGUID()); break; case N_TRAINER_ELEMENTAL1: case N_TRAINER_ELEMENTAL2: - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_UNLEARN_ELEMENTAL, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_LEATHER_SPEC, DoMedUnlearnCost(player), false); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_UNLEARN_ELEMENTAL, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_LEATHER_SPEC, DoMedUnlearnCost(player), false); //unknown textID () SendGossipMenuFor(player, player->GetGossipTextId(me), me->GetGUID()); break; case N_TRAINER_TRIBAL1: case N_TRAINER_TRIBAL2: - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_UNLEARN_TRIBAL, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_LEATHER_SPEC, DoMedUnlearnCost(player), false); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_UNLEARN_TRIBAL, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_LEATHER_SPEC, DoMedUnlearnCost(player), false); //unknown textID () SendGossipMenuFor(player, player->GetGossipTextId(me), me->GetGUID()); break; @@ -1119,10 +1119,10 @@ public: player->PrepareQuestMenu(me->GetGUID()); if (me->IsVendor()) - AddGossipItemFor(player, GossipOptionIcon::Vendor, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); + AddGossipItemFor(player, GossipOptionNpc::Vendor, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE); if (me->IsTrainer()) - AddGossipItemFor(player, GossipOptionIcon::Trainer, GOSSIP_TEXT_TRAIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN); + AddGossipItemFor(player, GossipOptionNpc::Trainer, GOSSIP_TEXT_TRAIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN); //TAILORING SPEC if (player->HasSkill(SKILL_TAILORING) && player->GetBaseSkillValue(SKILL_TAILORING) >= 350 && player->GetLevel() > 59) @@ -1133,21 +1133,21 @@ public: { case N_TRAINER_SPELLFIRE: if (!HasTailorSpell(player)) - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_LEARN_SPELLFIRE, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 1); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_LEARN_SPELLFIRE, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 1); if (player->HasSpell(S_SPELLFIRE)) - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_UNLEARN_SPELLFIRE, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 4); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_UNLEARN_SPELLFIRE, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 4); break; case N_TRAINER_MOONCLOTH: if (!HasTailorSpell(player)) - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_LEARN_MOONCLOTH, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 2); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_LEARN_MOONCLOTH, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 2); if (player->HasSpell(S_MOONCLOTH)) - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_UNLEARN_MOONCLOTH, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 5); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_UNLEARN_MOONCLOTH, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 5); break; case N_TRAINER_SHADOWEAVE: if (!HasTailorSpell(player)) - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_LEARN_SHADOWEAVE, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 3); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_LEARN_SHADOWEAVE, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 3); if (player->HasSpell(S_SHADOWEAVE)) - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_UNLEARN_SHADOWEAVE, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 6); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_UNLEARN_SHADOWEAVE, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 6); break; } } @@ -1197,17 +1197,17 @@ public: switch (me->GetEntry()) { case N_TRAINER_SPELLFIRE: - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_LEARN_SPELLFIRE, GOSSIP_SENDER_CHECK, action); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_LEARN_SPELLFIRE, GOSSIP_SENDER_CHECK, action); //unknown textID () SendGossipMenuFor(player, player->GetGossipTextId(me), me->GetGUID()); break; case N_TRAINER_MOONCLOTH: - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_LEARN_MOONCLOTH, GOSSIP_SENDER_CHECK, action); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_LEARN_MOONCLOTH, GOSSIP_SENDER_CHECK, action); //unknown textID () SendGossipMenuFor(player, player->GetGossipTextId(me), me->GetGUID()); break; case N_TRAINER_SHADOWEAVE: - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_LEARN_SHADOWEAVE, GOSSIP_SENDER_CHECK, action); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_LEARN_SHADOWEAVE, GOSSIP_SENDER_CHECK, action); //unknown textID () SendGossipMenuFor(player, player->GetGossipTextId(me), me->GetGUID()); break; @@ -1222,17 +1222,17 @@ public: switch (me->GetEntry()) { case N_TRAINER_SPELLFIRE: - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_UNLEARN_SPELLFIRE, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_TAILOR_SPEC, DoHighUnlearnCost(player), false); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_UNLEARN_SPELLFIRE, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_TAILOR_SPEC, DoHighUnlearnCost(player), false); //unknown textID () SendGossipMenuFor(player, player->GetGossipTextId(me), me->GetGUID()); break; case N_TRAINER_MOONCLOTH: - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_UNLEARN_MOONCLOTH, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_TAILOR_SPEC, DoHighUnlearnCost(player), false); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_UNLEARN_MOONCLOTH, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_TAILOR_SPEC, DoHighUnlearnCost(player), false); //unknown textID () SendGossipMenuFor(player, player->GetGossipTextId(me), me->GetGUID()); break; case N_TRAINER_SHADOWEAVE: - AddGossipItemFor(player, GossipOptionIcon::None, GOSSIP_UNLEARN_SHADOWEAVE, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_TAILOR_SPEC, DoHighUnlearnCost(player), false); + AddGossipItemFor(player, GossipOptionNpc::None, GOSSIP_UNLEARN_SHADOWEAVE, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_TAILOR_SPEC, DoHighUnlearnCost(player), false); //unknown textID () SendGossipMenuFor(player, player->GetGossipTextId(me), me->GetGUID()); break; diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp index 201fcb4f741..16103698dd9 100644 --- a/src/server/scripts/World/npcs_special.cpp +++ b/src/server/scripts/World/npcs_special.cpp @@ -1705,66 +1705,6 @@ class npc_wormhole : public CreatureScript } }; -/*###### -## npc_experience -######*/ - -enum BehstenSlahtz -{ - MENU_ID_XP_ON_OFF = 10638, - NPC_TEXT_XP_ON_OFF = 14736, - OPTION_ID_XP_OFF = 0, // "I no longer wish to gain experience." - OPTION_ID_XP_ON = 1 // "I wish to start gaining experience again." -}; - -class npc_experience : public CreatureScript -{ -public: - npc_experience() : CreatureScript("npc_experience") { } - - struct npc_experienceAI : public ScriptedAI - { - npc_experienceAI(Creature* creature) : ScriptedAI(creature) { } - - bool OnGossipHello(Player* player) override - { - if (player->HasPlayerFlag(PLAYER_FLAGS_NO_XP_GAIN)) // not gaining XP - { - AddGossipItemFor(player, MENU_ID_XP_ON_OFF, OPTION_ID_XP_ON, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - SendGossipMenuFor(player, NPC_TEXT_XP_ON_OFF, me->GetGUID()); - } - else // currently gaining XP - { - AddGossipItemFor(player, MENU_ID_XP_ON_OFF, OPTION_ID_XP_OFF, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - SendGossipMenuFor(player, NPC_TEXT_XP_ON_OFF, me->GetGUID()); - } - return true; - } - - bool OnGossipSelect(Player* player, uint32 /*menuId*/, uint32 gossipListId) override - { - uint32 const action = player->PlayerTalkClass->GetGossipOptionAction(gossipListId); - - switch (action) - { - case GOSSIP_ACTION_INFO_DEF + 1: // XP ON selected - player->RemovePlayerFlag(PLAYER_FLAGS_NO_XP_GAIN); // turn on XP gain - break; - case GOSSIP_ACTION_INFO_DEF + 2: // XP OFF selected - player->SetPlayerFlag(PLAYER_FLAGS_NO_XP_GAIN); // turn off XP gain - break; - } - CloseGossipMenuFor(player); - return false; - } - }; - - CreatureAI* GetAI(Creature* creature) const override - { - return new npc_experienceAI(creature); - } -}; - /*##### # npc_spring_rabbit #####*/ @@ -2368,7 +2308,6 @@ void AddSC_npcs_special() RegisterCreatureAI(npc_brewfest_reveler_2); RegisterCreatureAI(npc_training_dummy); new npc_wormhole(); - new npc_experience(); new npc_spring_rabbit(); new npc_imp_in_a_ball(); new npc_train_wrecker(); |