diff --git a/data/sql/updates/pending_db_world/rev_1620836088005817700.sql b/data/sql/updates/pending_db_world/rev_1620836088005817700.sql new file mode 100644 index 000000000..91e13b1b4 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1620836088005817700.sql @@ -0,0 +1,6 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1620836088005817700'); + +DELETE FROM `gossip_menu` WHERE (`MenuID` = 4042) AND `TextID` IN (4917, 4918); +INSERT INTO `gossip_menu` (`MenuID`, `TextID`) VALUES +(4042, 4917), +(4042, 4918); diff --git a/data/sql/updates/pending_db_world/rev_1621544089475974100.sql b/data/sql/updates/pending_db_world/rev_1621544089475974100.sql new file mode 100644 index 000000000..82b11f5a2 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1621544089475974100.sql @@ -0,0 +1,9 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1621544089475974100'); + +DELETE FROM `gossip_menu` WHERE (`MenuID` = 9676) AND (`TextID` IN (13287)); +INSERT INTO `gossip_menu` (`MenuID`, `TextID`) VALUES +(9676, 13287); + +DELETE FROM `gossip_menu_option` WHERE (`MenuID` = 9676) AND (`OptionID` IN (0)); +INSERT INTO `gossip_menu_option` (`MenuID`, `OptionID`, `OptionIcon`, `OptionText`, `OptionBroadcastTextID`, `OptionType`, `OptionNpcFlag`, `ActionMenuID`, `ActionPoiID`, `BoxCoded`, `BoxMoney`, `BoxText`, `BoxBroadcastTextID`, `VerifiedBuild`) VALUES +(9676, 0, 0, 'I''m ready to battle the dreadlord, sire.', 28508, 1, 1, 0, 0, 0, 0, '', 0, 0); diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp index bb9366f09..68263014a 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp @@ -16,6 +16,7 @@ */ #include "BattlegroundAV.h" +#include "CreatureTextMgr.h" #include "Formulas.h" #include "GameEventMgr.h" #include "GameGraveyard.h" @@ -391,9 +392,13 @@ void BattlegroundAV::PostUpdateImpl(uint32 diff) for (uint8 i = 0; i <= 1; i++) //0=alliance, 1=horde { if (!m_CaptainAlive[i]) + { continue; + } if (m_CaptainBuffTimer[i] > diff) + { m_CaptainBuffTimer[i] -= diff; + } else { if (i == 0) @@ -401,14 +406,20 @@ void BattlegroundAV::PostUpdateImpl(uint32 diff) CastSpellOnTeam(AV_BUFF_A_CAPTAIN, TEAM_ALLIANCE); Creature* creature = GetBGCreature(AV_CPLACE_MAX + 61); if (creature) - YellToAll(creature, LANG_BG_AV_A_CAPTAIN_BUFF, LANG_COMMON); + { + std::string creatureText = sCreatureTextMgr->GetLocalizedChatString(creature->GetEntry(), creature->getGender(), 0, 0, DEFAULT_LOCALE); + YellToAll(creature, creatureText.c_str(), LANG_COMMON); + } } else { CastSpellOnTeam(AV_BUFF_H_CAPTAIN, TEAM_HORDE); Creature* creature = GetBGCreature(AV_CPLACE_MAX + 59); //TODO: make the captains a dynamic creature if (creature) - YellToAll(creature, LANG_BG_AV_H_CAPTAIN_BUFF, LANG_ORCISH); + { + std::string creatureText = sCreatureTextMgr->GetLocalizedChatString(creature->GetEntry(), creature->getGender(), 2, 0, DEFAULT_LOCALE); + YellToAll(creature, creatureText.c_str(), LANG_ORCISH); + } } m_CaptainBuffTimer[i] = 120000 + urand(0, 4) * 60000; //as far as i could see, the buff is randomly so i make 2minutes (thats the duration of the buff itself) + 0-4minutes TODO get the right times } @@ -729,7 +740,10 @@ void BattlegroundAV::ChangeMineOwner(uint8 mine, TeamId teamId, bool initial) if (mine == AV_SOUTH_MINE) //i think this gets called all the time { if (Creature* creature = GetBGCreature(AV_CPLACE_MINE_S_3)) - YellToAll(creature, LANG_BG_AV_S_MINE_BOSS_CLAIMS, LANG_UNIVERSAL); + { + std::string creatureText = sCreatureTextMgr->GetLocalizedChatString(creature->GetEntry(), creature->getGender(), 0, 0, DEFAULT_LOCALE); + YellToAll(creature, creatureText.c_str(), LANG_UNIVERSAL); + } } } } diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAV.h b/src/server/game/Battlegrounds/Zones/BattlegroundAV.h index faef47175..95b3e146a 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundAV.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundAV.h @@ -21,10 +21,6 @@ #include "Battleground.h" #include "BattlegroundScore.h" -#define LANG_BG_AV_A_CAPTAIN_BUFF "Begone. Uncouth scum! The Alliance shall prevail in Alterac Valley!" -#define LANG_BG_AV_H_CAPTAIN_BUFF "Now is the time to attack! For the Horde!" -#define LANG_BG_AV_S_MINE_BOSS_CLAIMS "Snivvle is here! Snivvle claims the Coldtooth Mine!" - #define BG_AV_CAPTIME 240000 //4:00 #define BG_AV_SNOWFALL_FIRSTCAP 300000 //5:00 but i also have seen 4:05 diff --git a/src/server/scripts/EasternKingdoms/zone_undercity.cpp b/src/server/scripts/EasternKingdoms/zone_undercity.cpp index 636d3bdf9..15956aeed 100644 --- a/src/server/scripts/EasternKingdoms/zone_undercity.cpp +++ b/src/server/scripts/EasternKingdoms/zone_undercity.cpp @@ -307,13 +307,13 @@ public: enum ParqualFintallas { - SPELL_MARK_OF_SHAME = 6767 + SPELL_MARK_OF_SHAME = 6767, + QUEST_ID_TEST_OF_LORE = 6628, + GOSSIP_MENU_ID_TEST_OF_LORE = 4764, + GOSSIP_TEXTID_PARQUAL_FINTALLAS = 5821, + GOSSIP_TEXTID_TEST_OF_LORE = 5822, }; -#define GOSSIP_HPF1 "Gul'dan" -#define GOSSIP_HPF2 "Kel'Thuzad" -#define GOSSIP_HPF3 "Ner'zhul" - class npc_parqual_fintallas : public CreatureScript { public: @@ -338,17 +338,21 @@ public: bool OnGossipHello(Player* player, Creature* creature) override { if (creature->IsQuestGiver()) - player->PrepareQuestMenu(creature->GetGUID()); - - if (player->GetQuestStatus(6628) == QUEST_STATUS_INCOMPLETE && !player->HasAura(SPELL_MARK_OF_SHAME)) { - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HPF1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HPF2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HPF3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - SendGossipMenuFor(player, 5822, creature->GetGUID()); + player->PrepareQuestMenu(creature->GetGUID()); + } + + if (player->GetQuestStatus(QUEST_ID_TEST_OF_LORE) == QUEST_STATUS_INCOMPLETE && !player->HasAura(SPELL_MARK_OF_SHAME)) + { + AddGossipItemFor(player, GOSSIP_MENU_ID_TEST_OF_LORE, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); + AddGossipItemFor(player, GOSSIP_MENU_ID_TEST_OF_LORE, 1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); + AddGossipItemFor(player, GOSSIP_MENU_ID_TEST_OF_LORE, 3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); + SendGossipMenuFor(player, GOSSIP_TEXTID_TEST_OF_LORE, creature->GetGUID()); } else - SendGossipMenuFor(player, 5821, creature->GetGUID()); + { + SendGossipMenuFor(player, GOSSIP_TEXTID_PARQUAL_FINTALLAS, creature->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 d664c4c3a..ac96a22ae 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp @@ -148,13 +148,6 @@ enum Spells SPELL_ARTHAS_CRUSADER_STRIKE = 50773, }; -#define GOSSIP_ITEM_ARTHAS_1 "Yes, my Prince. We're ready." -#define GOSSIP_ITEM_ARTHAS_2 "We're only doing what is best for Loarderon your Highness." -#define GOSSIP_ITEM_ARTHAS_3 "Lead the way Prince Arthas." -#define GOSSIP_ITEM_ARTHAS_4 "I'm ready." -#define GOSSIP_ITEM_ARTHAS_5 "For Lordaeron!" -#define GOSSIP_ITEM_ARTHAS_6 "I'm ready to battle the dreadlord, sire." - enum GossipMenuArthas { GOSSIP_MENU_ARTHAS_1 = 13076, @@ -303,7 +296,7 @@ public: break; case GOSSIP_ACTION_INFO_DEF+2: ClearGossipMenuFor(player); - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_ARTHAS_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); + AddGossipItemFor(player, 9681, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); SendGossipMenuFor(player, GOSSIP_MENU_ARTHAS_3, creature->GetGUID()); break; case GOSSIP_ACTION_INFO_DEF+3: @@ -344,23 +337,23 @@ public: switch (pInstance->GetData(DATA_ARTHAS_EVENT)) { case COS_PROGRESS_FINISHED_INTRO: - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_ARTHAS_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); + AddGossipItemFor(player, 9653, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); SendGossipMenuFor(player, GOSSIP_MENU_ARTHAS_1, creature->GetGUID()); break; case COS_PROGRESS_REACHED_TOWN_HALL: - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_ARTHAS_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); + AddGossipItemFor(player, 9680, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); SendGossipMenuFor(player, GOSSIP_MENU_ARTHAS_2, creature->GetGUID()); break; case COS_PROGRESS_KILLED_EPOCH: - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_ARTHAS_4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4); + AddGossipItemFor(player, 9695, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4); SendGossipMenuFor(player, GOSSIP_MENU_ARTHAS_4, creature->GetGUID()); break; case COS_PROGRESS_LAST_CITY: - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_ARTHAS_5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5); + AddGossipItemFor(player, 9696, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5); SendGossipMenuFor(player, GOSSIP_MENU_ARTHAS_5, creature->GetGUID()); break; case COS_PROGRESS_BEFORE_MALGANIS: - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_ARTHAS_6, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6); + AddGossipItemFor(player, 9676, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6); SendGossipMenuFor(player, GOSSIP_MENU_ARTHAS_6, creature->GetGUID()); break; } diff --git a/src/server/scripts/Kalimdor/zone_moonglade.cpp b/src/server/scripts/Kalimdor/zone_moonglade.cpp index f4325f61d..f00a4ebe7 100644 --- a/src/server/scripts/Kalimdor/zone_moonglade.cpp +++ b/src/server/scripts/Kalimdor/zone_moonglade.cpp @@ -53,9 +53,6 @@ enum Bunthen TAXI_PATH_ID_HORDE = 316 }; -#define GOSSIP_ITEM_THUNDER "I'd like to fly to Thunder Bluff." -#define GOSSIP_ITEM_AQ_END "Do you know where I can find Half Pendant of Aquatic Endurance?" - class npc_bunthen_plainswind : public CreatureScript { public: @@ -75,7 +72,7 @@ public: SendGossipMenuFor(player, 5373, creature->GetGUID()); break; case GOSSIP_ACTION_INFO_DEF + 3: - SendGossipMenuFor(player, 5376, creature->GetGUID()); + SendGossipMenuFor(player, 5374, creature->GetGUID()); break; } return true; @@ -84,20 +81,26 @@ public: bool OnGossipHello(Player* player, Creature* creature) override { if (player->getClass() != CLASS_DRUID) + { SendGossipMenuFor(player, 4916, creature->GetGUID()); + } else if (player->GetTeamId() != TEAM_HORDE) { if (player->GetQuestStatus(QUEST_SEA_LION_ALLY) == QUEST_STATUS_INCOMPLETE) - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_AQ_END, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); + { + AddGossipItemFor(player, 4042, 2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); + } SendGossipMenuFor(player, 4917, creature->GetGUID()); } else if (player->getClass() == CLASS_DRUID && player->GetTeamId() == TEAM_HORDE) { - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_THUNDER, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); + AddGossipItemFor(player, 4042, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); if (player->GetQuestStatus(QUEST_SEA_LION_HORDE) == QUEST_STATUS_INCOMPLETE) - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_AQ_END, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); + { + AddGossipItemFor(player, 4042, 1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); + } SendGossipMenuFor(player, 4918, creature->GetGUID()); } @@ -109,11 +112,6 @@ public: ## npc_great_bear_spirit ######*/ -#define GOSSIP_BEAR1 "What do you represent, spirit?" -#define GOSSIP_BEAR2 "I seek to understand the importance of strength of the body." -#define GOSSIP_BEAR3 "I seek to understand the importance of strength of the heart." -#define GOSSIP_BEAR4 "I have heard your words, Great Bear Spirit, and I understand. I now seek your blessings to fully learn the way of the Claw." - class npc_great_bear_spirit : public CreatureScript { public: @@ -125,15 +123,15 @@ public: switch (action) { case GOSSIP_ACTION_INFO_DEF: - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_BEAR2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); + AddGossipItemFor(player, 3881, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); SendGossipMenuFor(player, 4721, creature->GetGUID()); break; case GOSSIP_ACTION_INFO_DEF + 1: - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_BEAR3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); + AddGossipItemFor(player, 3883, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); SendGossipMenuFor(player, 4733, creature->GetGUID()); break; case GOSSIP_ACTION_INFO_DEF + 2: - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_BEAR4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); + AddGossipItemFor(player, 3884, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); SendGossipMenuFor(player, 4734, creature->GetGUID()); break; case GOSSIP_ACTION_INFO_DEF + 3: @@ -152,7 +150,7 @@ public: //ally or horde quest if (player->GetQuestStatus(5929) == QUEST_STATUS_INCOMPLETE || player->GetQuestStatus(5930) == QUEST_STATUS_INCOMPLETE) { - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_BEAR1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); + AddGossipItemFor(player, 3882, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); SendGossipMenuFor(player, 4719, creature->GetGUID()); } else @@ -166,9 +164,6 @@ public: ## npc_silva_filnaveth ######*/ -#define GOSSIP_ITEM_RUTHERAN "I'd like to fly to Rut'theran Village." -#define GOSSIP_ITEM_AQ_AGI "Do you know where I can find Half Pendant of Aquatic Agility?" - class npc_silva_filnaveth : public CreatureScript { public: @@ -185,7 +180,7 @@ public: player->ActivateTaxiPathTo(TAXI_PATH_ID_ALLY); break; case GOSSIP_ACTION_INFO_DEF + 2: - SendGossipMenuFor(player, 5374, creature->GetGUID()); + SendGossipMenuFor(player, 5376, creature->GetGUID()); break; case GOSSIP_ACTION_INFO_DEF + 3: SendGossipMenuFor(player, 5375, creature->GetGUID()); @@ -197,20 +192,26 @@ public: bool OnGossipHello(Player* player, Creature* creature) override { if (player->getClass() != CLASS_DRUID) + { SendGossipMenuFor(player, 4913, creature->GetGUID()); + } else if (player->GetTeamId() != TEAM_ALLIANCE) { if (player->GetQuestStatus(QUEST_SEA_LION_HORDE) == QUEST_STATUS_INCOMPLETE) - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_AQ_AGI, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); + { + AddGossipItemFor(player, 4041, 2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); + } SendGossipMenuFor(player, 4915, creature->GetGUID()); } else if (player->getClass() == CLASS_DRUID && player->GetTeamId() == TEAM_ALLIANCE) { - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_RUTHERAN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); + AddGossipItemFor(player, 4041, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); if (player->GetQuestStatus(QUEST_SEA_LION_ALLY) == QUEST_STATUS_INCOMPLETE) - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_AQ_AGI, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); + { + AddGossipItemFor(player, 4041, 1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); + } SendGossipMenuFor(player, 4914, creature->GetGUID()); } diff --git a/src/server/scripts/Kalimdor/zone_tanaris.cpp b/src/server/scripts/Kalimdor/zone_tanaris.cpp index 8b0380896..49d1c6caf 100644 --- a/src/server/scripts/Kalimdor/zone_tanaris.cpp +++ b/src/server/scripts/Kalimdor/zone_tanaris.cpp @@ -284,8 +284,6 @@ public: ## npc_steward_of_time ######*/ -#define GOSSIP_ITEM_FLIGHT "Please take me to the master's lair." - class npc_steward_of_time : public CreatureScript { public: @@ -311,15 +309,19 @@ public: bool OnGossipHello(Player* player, Creature* creature) override { if (creature->IsQuestGiver()) + { player->PrepareQuestMenu(creature->GetGUID()); + } if (player->GetQuestStatus(10279) == QUEST_STATUS_INCOMPLETE || player->GetQuestRewardStatus(10279)) { - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_FLIGHT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); + AddGossipItemFor(player, 8072, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); SendGossipMenuFor(player, 9978, creature->GetGUID()); } else + { SendGossipMenuFor(player, 9977, creature->GetGUID()); + } return true; } @@ -329,13 +331,6 @@ public: ## npc_stone_watcher_of_norgannon ######*/ -#define GOSSIP_ITEM_NORGANNON_1 "What function do you serve?" -#define GOSSIP_ITEM_NORGANNON_2 "What are the Plates of Uldum?" -#define GOSSIP_ITEM_NORGANNON_3 "Where are the Plates of Uldum?" -#define GOSSIP_ITEM_NORGANNON_4 "Excuse me? We've been \"reschedueled for visitations\"? What does that mean?!" -#define GOSSIP_ITEM_NORGANNON_5 "So, what's inside Uldum?" -#define GOSSIP_ITEM_NORGANNON_6 "I will return when i have the Plates of Uldum." - class npc_stone_watcher_of_norgannon : public CreatureScript { public: @@ -347,23 +342,23 @@ public: switch (action) { case GOSSIP_ACTION_INFO_DEF: - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_NORGANNON_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); + AddGossipItemFor(player, 57001, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); SendGossipMenuFor(player, 1675, creature->GetGUID()); break; case GOSSIP_ACTION_INFO_DEF+1: - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_NORGANNON_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); + AddGossipItemFor(player, 57002, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); SendGossipMenuFor(player, 1676, creature->GetGUID()); break; case GOSSIP_ACTION_INFO_DEF+2: - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_NORGANNON_4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); + AddGossipItemFor(player, 57003, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3); SendGossipMenuFor(player, 1677, creature->GetGUID()); break; case GOSSIP_ACTION_INFO_DEF+3: - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_NORGANNON_5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4); + AddGossipItemFor(player, 57004, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4); SendGossipMenuFor(player, 1678, creature->GetGUID()); break; case GOSSIP_ACTION_INFO_DEF+4: - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_NORGANNON_6, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5); + AddGossipItemFor(player, 57005, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5); SendGossipMenuFor(player, 1679, creature->GetGUID()); break; case GOSSIP_ACTION_INFO_DEF+5: @@ -377,10 +372,14 @@ public: bool OnGossipHello(Player* player, Creature* creature) override { if (creature->IsQuestGiver()) + { player->PrepareQuestMenu(creature->GetGUID()); + } if (player->GetQuestStatus(2954) == QUEST_STATUS_INCOMPLETE) - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_NORGANNON_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); + { + AddGossipItemFor(player, 57000, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); + } SendGossipMenuFor(player, 1674, creature->GetGUID()); diff --git a/src/server/scripts/Northrend/zone_howling_fjord.cpp b/src/server/scripts/Northrend/zone_howling_fjord.cpp index 96c282517..8f34561b9 100644 --- a/src/server/scripts/Northrend/zone_howling_fjord.cpp +++ b/src/server/scripts/Northrend/zone_howling_fjord.cpp @@ -310,9 +310,6 @@ public: ## npc_razael_and_lyana ######*/ -#define GOSSIP_RAZAEL_REPORT "High Executor Anselm wants a report on the situation." -#define GOSSIP_LYANA_REPORT "High Executor Anselm requests your report." - enum Razael { QUEST_REPORTS_FROM_THE_FIELD = 11221, @@ -340,7 +337,7 @@ public: case NPC_RAZAEL: if (!player->GetReqKillOrCastCurrentCount(QUEST_REPORTS_FROM_THE_FIELD, NPC_RAZAEL)) { - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_RAZAEL_REPORT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); + AddGossipItemFor(player, 8870, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); SendGossipMenuFor(player, GOSSIP_TEXTID_RAZAEL1, creature->GetGUID()); return true; } @@ -348,7 +345,7 @@ public: case NPC_LYANA: if (!player->GetReqKillOrCastCurrentCount(QUEST_REPORTS_FROM_THE_FIELD, NPC_LYANA)) { - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LYANA_REPORT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); + AddGossipItemFor(player, 8879, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); SendGossipMenuFor(player, GOSSIP_TEXTID_LYANA1, creature->GetGUID()); return true; } diff --git a/src/server/scripts/Northrend/zone_wintergrasp.cpp b/src/server/scripts/Northrend/zone_wintergrasp.cpp index a708a8ec8..51a445f2b 100644 --- a/src/server/scripts/Northrend/zone_wintergrasp.cpp +++ b/src/server/scripts/Northrend/zone_wintergrasp.cpp @@ -32,11 +32,6 @@ #include "Vehicle.h" #include "World.h" -#define GOSSIP_HELLO_DEMO1 "Build catapult." -#define GOSSIP_HELLO_DEMO2 "Build demolisher." -#define GOSSIP_HELLO_DEMO3 "Build siege engine." -#define GOSSIP_HELLO_DEMO4 "I cannot build more!" - enum eWGqueuenpctext { WG_NPCQUEUE_TEXT_H_NOWAR = 14775, @@ -134,21 +129,20 @@ public: bool OnGossipHello(Player* player, Creature* creature) override { if (creature->IsQuestGiver()) - player->PrepareQuestMenu(creature->GetGUID()); - - if (canBuild(creature)) { - if (player->HasAura(SPELL_CORPORAL)) - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HELLO_DEMO1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); - else if (player->HasAura(SPELL_LIEUTENANT)) - { - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HELLO_DEMO1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HELLO_DEMO2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HELLO_DEMO3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); - } + player->PrepareQuestMenu(creature->GetGUID()); + } + + if (player->HasAura(SPELL_CORPORAL)) + { + AddGossipItemFor(player, 9923, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); + } + else if (player->HasAura(SPELL_LIEUTENANT)) + { + AddGossipItemFor(player, 9923, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); + AddGossipItemFor(player, 9923, 1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); + AddGossipItemFor(player, 9923, 2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); } - else - AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HELLO_DEMO4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 9); SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID()); return true; @@ -158,22 +152,34 @@ public: { CloseGossipMenuFor(player); + uint32 spellId = 0; + switch (action - GOSSIP_ACTION_INFO_DEF) + { + case 0: + spellId = SPELL_BUILD_CATAPULT_FORCE; + break; + case 1: + spellId = SPELL_BUILD_DEMOLISHER_FORCE; + break; + case 2: + spellId = player->GetTeamId() == TEAM_ALLIANCE ? SPELL_BUILD_SIEGE_VEHICLE_FORCE_ALLIANCE : SPELL_BUILD_SIEGE_VEHICLE_FORCE_HORDE; + break; + } + if (canBuild(creature)) { - switch (action - GOSSIP_ACTION_INFO_DEF) - { - case 0: - creature->CastSpell(player, SPELL_BUILD_CATAPULT_FORCE, true); - break; - case 1: - creature->CastSpell(player, SPELL_BUILD_DEMOLISHER_FORCE, true); - break; - case 2: - creature->CastSpell(player, player->GetTeamId() == TEAM_ALLIANCE ? SPELL_BUILD_SIEGE_VEHICLE_FORCE_ALLIANCE : SPELL_BUILD_SIEGE_VEHICLE_FORCE_HORDE, true); - break; - } + creature->CastSpell(player, spellId, true); creature->CastSpell(creature, SPELL_ACTIVATE_CONTROL_ARMS, true); } + else + { + WorldPacket data(SMSG_CAST_FAILED, 1 + 4 + 1 + 4); + data << uint8(0); + data << spellId; + data << uint8(SPELL_FAILED_CUSTOM_ERROR); + data << uint32(SPELL_CUSTOM_ERROR_CANT_BUILD_MORE_VEHICLES); + player->GetSession()->SendPacket(&data); + } return true; }