aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorMeji <alvaro.megias@outlook.com>2022-09-08 14:49:03 +0200
committerGitHub <noreply@github.com>2022-09-08 14:49:03 +0200
commit69e0249807f5a8f351e6be6f7350ebace3d2997a (patch)
tree0d47494cd68fd4cbff226d2c4a9eee055cd3839d /src/server
parent6e9a6700d83f0ad07c7c56becfc3a62434707208 (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/server')
-rw-r--r--src/server/game/AI/ScriptedAI/ScriptedGossip.cpp8
-rw-r--r--src/server/game/AI/ScriptedAI/ScriptedGossip.h4
-rw-r--r--src/server/game/Entities/Creature/GossipDef.cpp21
-rw-r--r--src/server/game/Entities/Creature/GossipDef.h128
-rw-r--r--src/server/game/Entities/Player/Player.cpp191
-rw-r--r--src/server/game/Entities/Player/Player.h2
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp46
-rw-r--r--src/server/game/Globals/ObjectMgr.h5
-rw-r--r--src/server/game/Handlers/SkillHandler.cpp6
-rw-r--r--src/server/game/Server/Packets/NPCPackets.h4
-rw-r--r--src/server/game/Spells/SpellEffects.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_tomb_of_seven.cpp8
-rw-r--r--src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp6
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp2
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.cpp4
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp8
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp2
-rw-r--r--src/server/scripts/Northrend/zone_borean_tundra.cpp2
-rw-r--r--src/server/scripts/Northrend/zone_wintergrasp.cpp16
-rw-r--r--src/server/scripts/World/go_scripts.cpp2
-rw-r--r--src/server/scripts/World/npc_professions.cpp112
-rw-r--r--src/server/scripts/World/npcs_special.cpp61
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();