Refactor(Core/Gossip): Replacing old macros with new (#1338)

* Correct support new macro
This commit is contained in:
Kargatum 2019-03-25 21:10:57 +07:00 committed by GitHub
parent 4abe082190
commit b6cb9247ba
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
99 changed files with 2840 additions and 2775 deletions

View file

@ -8,13 +8,41 @@
#include "Player.h"
#include "Creature.h"
void ClearGossipMenuFor(Player* player) { player->PlayerTalkClass->ClearMenus(); }
void ClearGossipMenuFor(Player* player)
{
player->PlayerTalkClass->ClearMenus();
}
// Using provided text, not from DB
void AddGossipItemFor(Player* player, uint32 icon, const char* text, uint32 sender, uint32 action) { player->PlayerTalkClass->GetGossipMenu().AddMenuItem(-1, icon, text, sender, action, "", 0); }
void AddGossipItemFor(Player* player, uint32 icon, std::string const& text, uint32 sender, uint32 action)
{
player->PlayerTalkClass->GetGossipMenu().AddMenuItem(-1, icon, text, sender, action, "", 0);
}
// Using provided texts, not from DB
void AddGossipItemFor(Player* player, uint32 icon, const char* text, uint32 sender, uint32 action, const char* popupText, uint32 popupMoney, bool coded) { player->PlayerTalkClass->GetGossipMenu().AddMenuItem(-1, icon, text, sender, action, popupText, popupMoney, coded); }
void AddGossipItemFor(Player* player, uint32 icon, 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);
}
// Uses gossip item info from DB
void AddGossipItemFor(Player* player, uint32 gossipMenuID, uint32 gossipMenuItemID, uint32 sender, uint32 action) { player->PlayerTalkClass->GetGossipMenu().AddMenuItem(gossipMenuID, gossipMenuItemID, sender, action); }
void SendGossipMenuFor(Player* player, uint32 npcTextID, uint64 const& guid) { player->PlayerTalkClass->SendGossipMenu(npcTextID, guid); }
void SendGossipMenuFor(Player* player, uint32 npcTextID, Creature const* creature) { if (creature) SendGossipMenuFor(player, npcTextID, creature->GetGUID()); }
void CloseGossipMenuFor(Player* player) { player->PlayerTalkClass->SendCloseGossip(); }
void AddGossipItemFor(Player* player, uint32 gossipMenuID, uint32 gossipMenuItemID, uint32 sender, uint32 action)
{
player->PlayerTalkClass->GetGossipMenu().AddMenuItem(gossipMenuID, gossipMenuItemID, sender, action);
}
void SendGossipMenuFor(Player* player, uint32 npcTextID, uint64 const& guid)
{
player->PlayerTalkClass->SendGossipMenu(npcTextID, guid);
}
void SendGossipMenuFor(Player* player, uint32 npcTextID, Creature const* creature)
{
if (creature)
SendGossipMenuFor(player, npcTextID, creature->GetGUID());
}
void CloseGossipMenuFor(Player* player)
{
player->PlayerTalkClass->SendCloseGossip();
}

View file

@ -1,5 +1,5 @@
/* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-GPL2
*
*
*
* This program is free software licensed under GPL version 2
* Please see the included DOCS/LICENSE.TXT for more information */
@ -69,19 +69,27 @@ enum eTradeskill
};
class Creature;
// Clear menu
void ClearGossipMenuFor(Player* player);
// Using provided text, not from DB
void AddGossipItemFor(Player* player, uint32 icon, const char* text, uint32 sender, uint32 action);
void AddGossipItemFor(Player* player, uint32 icon, std::string const& text, uint32 sender, uint32 action);
// Using provided texts, not from DB
void AddGossipItemFor(Player* player, uint32 icon, const char* text, uint32 sender, uint32 action, const char* popupText, uint32 popupMoney, bool coded);
void AddGossipItemFor(Player* player, uint32 icon, std::string const& text, uint32 sender, uint32 action, std::string const& popupText, uint32 popupMoney, bool coded);
// Uses gossip item info from DB
void AddGossipItemFor(Player* player, uint32 gossipMenuID, uint32 gossipMenuItemID, uint32 sender, uint32 action);
// Send menu text
void SendGossipMenuFor(Player* player, uint32 npcTextID, uint64 const& guid);
void SendGossipMenuFor(Player* player, uint32 npcTextID, Creature const* creature);
// Close menu
void CloseGossipMenuFor(Player* player);
// Defined fuctions to use with player.
/// Old macro. Need delete later
// This fuction add's a menu item,
// a - Icon Id
// b - Text
@ -89,13 +97,13 @@ void CloseGossipMenuFor(Player* player);
// d - Action (identifys this Menu Item)
// e - Text to be displayed in pop up box
// f - Money value in pop up box
#define ADD_GOSSIP_ITEM(a, b, c, d) PlayerTalkClass->GetGossipMenu().AddMenuItem(-1, a, b, c, d, "", 0)
#define ADD_GOSSIP_ITEM(a, b, c, d) PlayerTalkClass->GetGossipMenu().AddMenuItem(-1, a, b, c, d, "", 0)
#define ADD_GOSSIP_ITEM_EXTENDED(a, b, c, d, e, f, g) PlayerTalkClass->GetGossipMenu().AddMenuItem(-1, a, b, c, d, e, f, g)
// This fuction Sends the current menu to show to client, a - NPCTEXTID(uint32), b - npc guid(uint64)
#define SEND_GOSSIP_MENU(a, b) PlayerTalkClass->SendGossipMenu(a, b)
#define SEND_GOSSIP_MENU(a, b) PlayerTalkClass->SendGossipMenu(a, b)
// Closes the Menu
#define CLOSE_GOSSIP_MENU() PlayerTalkClass->SendCloseGossip()
#define CLOSE_GOSSIP_MENU() PlayerTalkClass->SendCloseGossip()
#endif

View file

@ -2508,9 +2508,9 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
if (e.action.sendGossipMenu.gossipMenuId)
player->PrepareGossipMenu(GetBaseObject(), e.action.sendGossipMenu.gossipMenuId, true);
else
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
player->SEND_GOSSIP_MENU(e.action.sendGossipMenu.gossipNpcTextId, GetBaseObject()->GetGUID());
SendGossipMenuFor(player, e.action.sendGossipMenu.gossipNpcTextId, GetBaseObject()->GetGUID());
}
delete targets;

View file

@ -15,6 +15,7 @@
#include "Formulas.h"
#include "GameEventMgr.h"
#include "GossipDef.h"
#include "ScriptedGossip.h"
#include "GridNotifiers.h"
#include "GridNotifiersImpl.h"
#include "Group.h"
@ -914,12 +915,12 @@ bool Creature::isCanInteractWithBattleMaster(Player* player, bool msg) const
if (!player->GetBGAccessByLevel(bgTypeId))
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (bgTypeId)
{
case BATTLEGROUND_AV: player->PlayerTalkClass->SendGossipMenu(7616, GetGUID()); break;
case BATTLEGROUND_WS: player->PlayerTalkClass->SendGossipMenu(7599, GetGUID()); break;
case BATTLEGROUND_AB: player->PlayerTalkClass->SendGossipMenu(7642, GetGUID()); break;
case BATTLEGROUND_AV: SendGossipMenuFor(player, 7616, this); break;
case BATTLEGROUND_WS: SendGossipMenuFor(player, 7599, this); break;
case BATTLEGROUND_AB: SendGossipMenuFor(player, 7642, this); break;
case BATTLEGROUND_EY:
case BATTLEGROUND_NA:
case BATTLEGROUND_BE:
@ -927,7 +928,7 @@ bool Creature::isCanInteractWithBattleMaster(Player* player, bool msg) const
case BATTLEGROUND_RL:
case BATTLEGROUND_SA:
case BATTLEGROUND_DS:
case BATTLEGROUND_RV: player->PlayerTalkClass->SendGossipMenu(10024, GetGUID()); break;
case BATTLEGROUND_RV: SendGossipMenuFor(player, 10024, this); break;
default: break;
}
return false;

View file

@ -17,6 +17,7 @@
#include "SpellInfo.h"
#include "SpellScript.h"
#include "GossipDef.h"
#include "ScriptedGossip.h"
#include "CreatureAI.h"
#include "Player.h"
#include "WorldPacket.h"
@ -765,7 +766,7 @@ bool ScriptMgr::OnQuestAccept(Player* player, Item* item, Quest const* quest)
#endif
GET_SCRIPT_RET(ItemScript, item->GetScriptId(), tmpscript, false);
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
return tmpscript->OnQuestAccept(player, item, quest);
}
@ -857,7 +858,7 @@ bool ScriptMgr::OnGossipHello(Player* player, Creature* creature)
return true;
#endif
GET_SCRIPT_RET(CreatureScript, creature->GetScriptId(), tmpscript, false);
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
return tmpscript->OnGossipHello(player, creature);
}
@ -893,7 +894,7 @@ bool ScriptMgr::OnQuestAccept(Player* player, Creature* creature, Quest const* q
ASSERT(quest);
GET_SCRIPT_RET(CreatureScript, creature->GetScriptId(), tmpscript, false);
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
return tmpscript->OnQuestAccept(player, creature, quest);
}
@ -904,7 +905,7 @@ bool ScriptMgr::OnQuestSelect(Player* player, Creature* creature, Quest const* q
ASSERT(quest);
GET_SCRIPT_RET(CreatureScript, creature->GetScriptId(), tmpscript, false);
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
return tmpscript->OnQuestSelect(player, creature, quest);
}
@ -915,7 +916,7 @@ bool ScriptMgr::OnQuestComplete(Player* player, Creature* creature, Quest const*
ASSERT(quest);
GET_SCRIPT_RET(CreatureScript, creature->GetScriptId(), tmpscript, false);
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
return tmpscript->OnQuestComplete(player, creature, quest);
}
@ -927,12 +928,12 @@ bool ScriptMgr::OnQuestReward(Player* player, Creature* creature, Quest const* q
#ifdef ELUNA
if (sEluna->OnQuestReward(player, creature, quest, opt))
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
return false;
}
#endif
GET_SCRIPT_RET(CreatureScript, creature->GetScriptId(), tmpscript, false);
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
return tmpscript->OnQuestReward(player, creature, quest, opt);
}
@ -942,7 +943,7 @@ uint32 ScriptMgr::GetDialogStatus(Player* player, Creature* creature)
ASSERT(creature);
GET_SCRIPT_RET(CreatureScript, creature->GetScriptId(), tmpscript, DIALOG_STATUS_SCRIPTED_NO_STATUS);
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
return tmpscript->GetDialogStatus(player, creature);
}
@ -980,7 +981,7 @@ bool ScriptMgr::OnGossipHello(Player* player, GameObject* go)
return true;
#endif
GET_SCRIPT_RET(GameObjectScript, go->GetScriptId(), tmpscript, false);
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
return tmpscript->OnGossipHello(player, go);
}
@ -1016,7 +1017,7 @@ bool ScriptMgr::OnQuestAccept(Player* player, GameObject* go, Quest const* quest
ASSERT(quest);
GET_SCRIPT_RET(GameObjectScript, go->GetScriptId(), tmpscript, false);
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
return tmpscript->OnQuestAccept(player, go, quest);
}
@ -1034,7 +1035,7 @@ bool ScriptMgr::OnQuestReward(Player* player, GameObject* go, Quest const* quest
return false;
#endif
GET_SCRIPT_RET(GameObjectScript, go->GetScriptId(), tmpscript, false);
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
return tmpscript->OnQuestReward(player, go, quest, opt);
}
@ -1044,7 +1045,7 @@ uint32 ScriptMgr::GetDialogStatus(Player* player, GameObject* go)
ASSERT(go);
GET_SCRIPT_RET(GameObjectScript, go->GetScriptId(), tmpscript, DIALOG_STATUS_SCRIPTED_NO_STATUS);
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
return tmpscript->GetDialogStatus(player, go);
}

View file

@ -20,7 +20,7 @@ class go_shadowforge_brazier : public GameObjectScript
public:
go_shadowforge_brazier() : GameObjectScript("go_shadowforge_brazier") { }
bool OnGossipHello(Player* /*player*/, GameObject* go)
bool OnGossipHello(Player* /*player*/, GameObject* go) override
{
if (InstanceScript* instance = go->GetInstanceScript())
{
@ -398,46 +398,46 @@ class npc_kharan_mighthammer : public CreatureScript
public:
npc_kharan_mighthammer() : CreatureScript("npc_kharan_mighthammer") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (action)
{
case GOSSIP_ACTION_INFO_DEF+1:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KHARAN_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
player->SEND_GOSSIP_MENU(2475, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_KHARAN_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
SendGossipMenuFor(player, 2475, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+2:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KHARAN_4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3);
player->SEND_GOSSIP_MENU(2476, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_KHARAN_4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3);
SendGossipMenuFor(player, 2476, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+3:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KHARAN_5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+4);
player->SEND_GOSSIP_MENU(2477, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_KHARAN_5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+4);
SendGossipMenuFor(player, 2477, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+4:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KHARAN_6, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5);
player->SEND_GOSSIP_MENU(2478, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_KHARAN_6, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5);
SendGossipMenuFor(player, 2478, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+5:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KHARAN_7, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+6);
player->SEND_GOSSIP_MENU(2479, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_KHARAN_7, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+6);
SendGossipMenuFor(player, 2479, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+6:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KHARAN_8, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+7);
player->SEND_GOSSIP_MENU(2480, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_KHARAN_8, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+7);
SendGossipMenuFor(player, 2480, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+7:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KHARAN_9, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+8);
player->SEND_GOSSIP_MENU(2481, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_KHARAN_9, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+8);
SendGossipMenuFor(player, 2481, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+8:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KHARAN_10, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+9);
player->SEND_GOSSIP_MENU(2482, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_KHARAN_10, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+9);
SendGossipMenuFor(player, 2482, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+9:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
if (player->GetTeamId() == TEAM_HORDE)
player->AreaExploredOrEventHappens(QUEST_4001);
else
@ -447,21 +447,21 @@ public:
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
if (player->GetQuestStatus(QUEST_4001) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KHARAN_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_KHARAN_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
if (player->GetQuestStatus(4342) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KHARAN_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_KHARAN_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3);
if (player->GetTeamId() == TEAM_HORDE)
player->SEND_GOSSIP_MENU(2473, creature->GetGUID());
SendGossipMenuFor(player, 2473, creature->GetGUID());
else
player->SEND_GOSSIP_MENU(2474, creature->GetGUID());
SendGossipMenuFor(player, 2474, creature->GetGUID());
return true;
}
@ -492,12 +492,12 @@ class npc_lokhtos_darkbargainer : public CreatureScript
public:
npc_lokhtos_darkbargainer() : CreatureScript("npc_lokhtos_darkbargainer") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_INFO_DEF + 1)
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->CastSpell(player, SPELL_CREATE_THORIUM_BROTHERHOOD_CONTRACT_DND, false);
}
if (action == GOSSIP_ACTION_TRADE)
@ -506,25 +506,25 @@ public:
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
if (creature->IsVendor() && player->GetReputationRank(59) >= REP_FRIENDLY)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_ITEM_SHOW_ACCESS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
AddGossipItemFor(player, GOSSIP_ICON_VENDOR, GOSSIP_ITEM_SHOW_ACCESS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
if (player->GetQuestRewardStatus(QUEST_A_BINDING_CONTRACT) != 1 &&
!player->HasItemCount(ITEM_THRORIUM_BROTHERHOOD_CONTRACT, 1, true) &&
player->HasItemCount(ITEM_SULFURON_INGOT))
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_GET_CONTRACT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_GET_CONTRACT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
}
if (player->GetReputationRank(59) < REP_FRIENDLY)
player->SEND_GOSSIP_MENU(3673, creature->GetGUID());
SendGossipMenuFor(player, 3673, creature->GetGUID());
else
player->SEND_GOSSIP_MENU(3677, creature->GetGUID());
SendGossipMenuFor(player, 3677, creature->GetGUID());
return true;
}
@ -556,12 +556,12 @@ public:
return dughal_stormwingAI;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 sender, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 sender, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_INFO_DEF + 1)
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
CAST_AI(npc_escort::npc_escortAI, (creature->AI()))->Start(false, true, player->GetGUID());
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
instance->SetData(DATA_QUEST_JAIL_BREAK, ENCOUNTER_STATE_IN_PROGRESS);
@ -569,12 +569,12 @@ public:
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (player->GetQuestStatus(QUEST_JAIL_BREAK) == QUEST_STATUS_INCOMPLETE && instance->GetData(DATA_QUEST_JAIL_BREAK) == ENCOUNTER_STATE_IN_PROGRESS)
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_DUGHAL, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
player->SEND_GOSSIP_MENU(2846, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_DUGHAL, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
SendGossipMenuFor(player, 2846, creature->GetGUID());
}
return true;
}
@ -1070,10 +1070,10 @@ public:
bool OnGossipSelect(Player* player, Creature* creature, uint32 sender, uint32 action)
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_INFO_DEF + 1)
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
CAST_AI(npc_escort::npc_escortAI, (creature->AI()))->Start(false, true, player->GetGUID());
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
instance->SetData(DATA_TOBIAS, ENCOUNTER_STATE_IN_PROGRESS);
@ -1081,12 +1081,12 @@ public:
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (player->GetQuestStatus(QUEST_JAIL_BREAK) == QUEST_STATUS_INCOMPLETE && instance->GetData(DATA_QUEST_JAIL_BREAK) == ENCOUNTER_STATE_IN_PROGRESS)
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Get out of here, Tobias, you're free!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
player->SEND_GOSSIP_MENU(2847, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, "Get out of here, Tobias, you're free!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
SendGossipMenuFor(player, 2847, creature->GetGUID());
}
return true;
}

View file

@ -36,25 +36,25 @@ class boss_gloomrel : public CreatureScript
public:
boss_gloomrel() : CreatureScript("boss_gloomrel") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (action)
{
case GOSSIP_ACTION_INFO_DEF+1:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_TEACH_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 11);
player->SEND_GOSSIP_MENU(2606, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_TEACH_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 11);
SendGossipMenuFor(player, 2606, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+11:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->CastSpell(player, SPELL_LEARN_SMELT, false);
break;
case GOSSIP_ACTION_INFO_DEF+2:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_TEACH_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 22);
player->SEND_GOSSIP_MENU(2604, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_TEACH_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 22);
SendGossipMenuFor(player, 2604, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+22:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
if (InstanceScript* instance = creature->GetInstanceScript())
{
//are 5 minutes expected? go template may have data to despawn when used at quest
@ -65,15 +65,15 @@ public:
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (player->GetQuestRewardStatus(QUEST_SPECTRAL_CHALICE) == 1 && player->GetSkillValue(SKILL_MINING) >= DATA_SKILLPOINT_MIN && !player->HasSpell(SPELL_SMELT_DARK_IRON))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_TEACH_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, 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)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_TRIBUTE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_TRIBUTE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
};
@ -95,17 +95,17 @@ class boss_doomrel : public CreatureScript
public:
boss_doomrel() : CreatureScript("boss_doomrel") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (action)
{
case GOSSIP_ACTION_INFO_DEF+1:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SELECT_DOOMREL, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
player->SEND_GOSSIP_MENU(2605, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_SELECT_DOOMREL, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
SendGossipMenuFor(player, 2605, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+2:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
//start event here
creature->setFaction(FACTION_HOSTILE);
creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
@ -118,15 +118,15 @@ public:
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_CHALLENGE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
player->SEND_GOSSIP_MENU(2601, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_CHALLENGE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
SendGossipMenuFor(player, 2601, creature->GetGUID());
return true;
}
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return GetInstanceAI<boss_doomrelAI>(creature);
}
@ -145,7 +145,7 @@ public:
uint32 DemonArmor_Timer;
bool Voidwalkers;
void Reset()
void Reset() override
{
ShadowVolley_Timer = 10000;
Immolate_Timer = 18000;
@ -164,11 +164,11 @@ public:
me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
}
void EnterCombat(Unit* /*who*/)
void EnterCombat(Unit* /*who*/) override
{
}
void EnterEvadeMode()
void EnterEvadeMode() override
{
me->RemoveAllAuras();
me->DeleteThreatList();
@ -180,12 +180,12 @@ public:
instance->SetData64(DATA_EVENSTARTER, 0);
}
void JustDied(Unit* /*killer*/)
void JustDied(Unit* /*killer*/) override
{
instance->SetData(DATA_GHOSTKILL, 1);
}
void UpdateAI(uint32 diff)
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
return;

View file

@ -372,7 +372,7 @@ public:
if (!instance || instance->GetBossState(BOSS_NEFARIAN) == DONE)
return;
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
Talk(SAY_GAMESBEGIN_1);
BeginEvent(player);
}

View file

@ -151,7 +151,7 @@ class go_orb_of_domination : public GameObjectScript
public:
go_orb_of_domination() : GameObjectScript("go_orb_of_domination") { }
bool OnGossipHello(Player* player, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
if (InstanceScript* instance = go->GetInstanceScript())
if (instance->GetData(DATA_EGG_EVENT) != DONE)

View file

@ -208,7 +208,7 @@ public:
{
if (sender == GOSSIP_ID && action == 0)
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
BeginSpeech(player);
}
}

View file

@ -66,13 +66,13 @@ class boss_majordomo : public CreatureScript
{
}
void KilledUnit(Unit* /*victim*/)
void KilledUnit(Unit* /*victim*/) override
{
if (urand(0, 99) < 25)
Talk(SAY_SLAY);
}
void EnterCombat(Unit* who)
void EnterCombat(Unit* who) override
{
BossAI::EnterCombat(who);
Talk(SAY_AGGRO);
@ -84,7 +84,7 @@ class boss_majordomo : public CreatureScript
me->CallForHelp(30);
}
void UpdateAI(uint32 diff)
void UpdateAI(uint32 diff) override
{
if (instance->GetBossState(BOSS_MAJORDOMO_EXECUTUS) != DONE)
{
@ -163,7 +163,7 @@ class boss_majordomo : public CreatureScript
}
}
void DoAction(int32 action)
void DoAction(int32 action) override
{
if (action == ACTION_START_RAGNAROS && events.GetNextEventTime(EVENT_OUTRO_2) == 0)
{
@ -180,21 +180,21 @@ class boss_majordomo : public CreatureScript
}
};
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SELECT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->SEND_GOSSIP_MENU(GOSSIP_HELLO, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_SELECT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
SendGossipMenuFor(player, GOSSIP_HELLO, creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 /*action*/)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 /*action*/) override
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
creature->AI()->DoAction(ACTION_START_RAGNAROS);
return true;
}
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return GetInstanceAI<boss_majordomoAI>(creature);
}

View file

@ -272,7 +272,7 @@ public:
}
else
me->GetMotionMaster()->MovePoint(MovePhase, IntroWay[MovePhase][0], IntroWay[MovePhase][1], IntroWay[MovePhase][2]);
MovePhase = 0;
}
@ -295,14 +295,14 @@ public:
{
DoCastVictim(SPELL_BELLOWING_ROAR);
BellowingRoarTimer = urand(30000, 40000);
} else
} else
BellowingRoarTimer -= diff;
if (SmolderingBreathTimer <= diff)
{
DoCastVictim(SPELL_SMOLDERING_BREATH);
SmolderingBreathTimer = 20000;
} else
} else
SmolderingBreathTimer -= diff;
if (CharredEarthTimer <= diff)
@ -310,7 +310,7 @@ public:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(target, SPELL_CHARRED_EARTH);
CharredEarthTimer = 20000;
} else
} else
CharredEarthTimer -= diff;
if (TailSweepTimer <= diff)
@ -319,7 +319,7 @@ public:
if (!me->HasInArc(M_PI, target))
DoCast(target, SPELL_TAIL_SWEEP);
TailSweepTimer = 15000;
} else
} else
TailSweepTimer -= diff;
if (SearingCindersTimer <= diff)
@ -327,7 +327,7 @@ public:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(target, SPELL_SEARING_CINDERS);
SearingCindersTimer = 10000;
} else
} else
SearingCindersTimer -= diff;
uint32 Prozent = uint32(me->GetHealthPct());
@ -363,7 +363,7 @@ public:
DoCastVictim(SPELL_RAIN_OF_BONES);
RainBones = true;
SmokingBlastTimer = 20000;
} else
} else
RainofBonesTimer -= diff;
if (DistractingAshTimer <= diff)
@ -371,7 +371,7 @@ public:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(target, SPELL_DISTRACTING_ASH);
DistractingAshTimer = 2000; //timer wrong
} else
} else
DistractingAshTimer -= diff;
}
@ -381,7 +381,7 @@ public:
{
DoCastVictim(SPELL_SMOKING_BLAST);
SmokingBlastTimer = 1500; //timer wrong
} else
} else
SmokingBlastTimer -= diff;
}
@ -390,7 +390,7 @@ public:
if (Unit* target = SelectTarget(SELECT_TARGET_FARTHEST, 0))
DoCast(target, SPELL_FIREBALL_BARRAGE);
FireballBarrageTimer = 20000;
} else
} else
FireballBarrageTimer -= diff;
if (FlyTimer <= diff) //landing
@ -401,7 +401,7 @@ public:
me->GetMotionMaster()->MovePoint(3, IntroWay[3][0], IntroWay[3][1], IntroWay[3][2]);
Flying = true;
} else
} else
FlyTimer -= diff;
}
}
@ -414,14 +414,15 @@ class go_blackened_urn : public GameObjectScript
public:
go_blackened_urn() : GameObjectScript("go_blackened_urn") { }
bool OnGossipHello(Player* pPlayer, GameObject *pGo)
bool OnGossipHello(Player* player, GameObject* go) override
{
if (InstanceScript* pInstance = pGo->GetInstanceScript())
if (InstanceScript* pInstance = go->GetInstanceScript())
{
if (pInstance->GetData(DATA_NIGHTBANE) != DONE && !pGo->FindNearestCreature(NPC_NIGHTBANE, 40.0f))
if (Creature *cr = ObjectAccessor::GetCreature(*pPlayer, pInstance->GetData64(DATA_NIGHTBANE)))
if (pInstance->GetData(DATA_NIGHTBANE) != DONE && !go->FindNearestCreature(NPC_NIGHTBANE, 40.0f))
if (Creature *cr = ObjectAccessor::GetCreature(*player, pInstance->GetData64(DATA_NIGHTBANE)))
cr->GetMotionMaster()->MovePoint(0, IntroWay[0][0], IntroWay[0][1], IntroWay[0][2]);
}
return false;
}
};

View file

@ -193,7 +193,7 @@ public:
{
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
AggroTimer = 0;
} else
} else
AggroTimer -= diff;
}
@ -204,21 +204,21 @@ public:
{
DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0), SPELL_WATERBOLT);
WaterBoltTimer = TitoDied ? 1500 : 5000;
} else
} else
WaterBoltTimer -= diff;
if (FearTimer <= diff)
{
DoCastVictim(SPELL_SCREAM);
FearTimer = 30000;
} else
} else
FearTimer -= diff;
if (!SummonedTito)
{
if (SummonTitoTimer <= diff)
SummonTito();
else
else
SummonTitoTimer -= diff;
}
@ -250,7 +250,7 @@ public:
YipTimer = 10000;
}
void EnterCombat(Unit* /*who*/)
void EnterCombat(Unit* /*who*/)
{
DoZoneInCombat();
}
@ -277,7 +277,7 @@ public:
{
DoCastVictim(SPELL_YIPPING);
YipTimer = 10000;
} else
} else
YipTimer -= diff;
DoMeleeAttackIfReady();
@ -388,7 +388,7 @@ public:
{
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
AggroTimer = 0;
} else
} else
AggroTimer -= diff;
}
@ -399,7 +399,7 @@ public:
{
DoCastVictim(SPELL_BRAIN_BASH);
BrainBashTimer = 15000;
} else
} else
BrainBashTimer -= diff;
if (BrainWipeTimer <= diff)
@ -407,7 +407,7 @@ public:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(target, SPELL_BRAIN_WIPE);
BrainWipeTimer = 20000;
} else
} else
BrainWipeTimer -= diff;
DoMeleeAttackIfReady();
@ -497,7 +497,7 @@ public:
{
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
AggroTimer = 0;
} else
} else
AggroTimer -= diff;
}
@ -508,7 +508,7 @@ public:
{
DoCastVictim(SPELL_CLEAVE);
CleaveTimer = 5000;
} else
} else
CleaveTimer -= diff;
if (RustCount < 8)
@ -519,7 +519,7 @@ public:
Talk(EMOTE_RUST);
DoCast(me, SPELL_RUST);
RustTimer = 6000;
} else
} else
RustTimer -= diff;
}
@ -608,7 +608,7 @@ public:
{
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
AggroTimer = 0;
} else
} else
AggroTimer -= diff;
}
@ -619,21 +619,21 @@ public:
{
DoCastVictim(SPELL_MANGLE);
MangleTimer = urand(5000, 8000);
} else
} else
MangleTimer -= diff;
if (ShredTimer <= diff)
{
DoCastVictim(SPELL_SHRED);
ShredTimer = urand(10000, 15000);
} else
} else
ShredTimer -= diff;
if (ScreamTimer <= diff)
{
DoCastVictim(SPELL_FRIGHTENED_SCREAM);
ScreamTimer = urand(20000, 30000);
} else
} else
ScreamTimer -= diff;
DoMeleeAttackIfReady();
@ -710,14 +710,14 @@ public:
if (Creature* Cyclone = DoSpawnCreature(CREATURE_CYCLONE, float(urand(0, 9)), float(urand(0, 9)), 0, 0, TEMPSUMMON_TIMED_DESPAWN, 15000))
Cyclone->CastSpell(Cyclone, SPELL_CYCLONE_VISUAL, true);
CycloneTimer = 22000;
} else
} else
CycloneTimer -= diff;
if (ChainLightningTimer <= diff)
{
DoCastVictim(SPELL_CHAIN_LIGHTNING);
ChainLightningTimer = 8000;
} else
} else
ChainLightningTimer -= diff;
DoMeleeAttackIfReady();
@ -764,7 +764,7 @@ public:
me->GetRandomNearPosition(pos, 10);
me->GetMotionMaster()->MovePoint(0, pos);
MoveTimer = urand(3000, 5000);
} else
} else
MoveTimer -= diff;
}
};
@ -797,9 +797,9 @@ class npc_grandmother : public CreatureScript
public:
npc_grandmother() : CreatureScript("npc_grandmother") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_INFO_DEF)
{
if (Creature* pBigBadWolf = creature->SummonCreature(CREATURE_BIG_BAD_WOLF, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, HOUR*2*IN_MILLISECONDS))
@ -811,10 +811,10 @@ public:
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_GRANDMA, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
player->SEND_GOSSIP_MENU(8990, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_GRANDMA, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
SendGossipMenuFor(player, 8990, creature->GetGUID());
return true;
}
@ -927,7 +927,7 @@ public:
ChaseTimer = 40000;
}
} else
} else
ChaseTimer -= diff;
if (IsChasing)
@ -937,14 +937,14 @@ public:
{
DoCastVictim(SPELL_TERRIFYING_HOWL);
FearTimer = urand(25000, 35000);
} else
} else
FearTimer -= diff;
if (SwipeTimer <= diff)
{
DoCastVictim(SPELL_WIDE_SWIPE);
SwipeTimer = urand(25000, 30000);
} else
} else
SwipeTimer -= diff;
}
};
@ -1314,7 +1314,7 @@ public:
JulianneDead = false;
ResurrectTimer = 10000;
}
} else
} else
ResurrectTimer -= diff;
}
@ -1326,14 +1326,14 @@ public:
DoCast(target, SPELL_BACKWARD_LUNGE);
BackwardLungeTimer = urand(15000, 30000);
}
} else
} else
BackwardLungeTimer -= diff;
if (DaringTimer <= diff)
{
DoCast(me, SPELL_DARING);
DaringTimer = urand(20000, 40000);
} else
} else
DaringTimer -= diff;
if (DeadlySwatheTimer <= diff)
@ -1341,14 +1341,14 @@ public:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(target, SPELL_DEADLY_SWATHE);
DeadlySwatheTimer = urand(15000, 25000);
} else
} else
DeadlySwatheTimer -= diff;
if (PoisonThrustTimer <= diff)
{
DoCastVictim(SPELL_POISON_THRUST);
PoisonThrustTimer = urand(10000, 20000);
} else
} else
PoisonThrustTimer -= diff;
DoMeleeAttackIfReady();
@ -1364,7 +1364,7 @@ void boss_julianne::boss_julianneAI::UpdateAI(uint32 diff)
{
Talk(SAY_JULIANNE_ENTER);
EntryYellTimer = 0;
} else
} else
EntryYellTimer -= diff;
}
@ -1376,7 +1376,7 @@ void boss_julianne::boss_julianneAI::UpdateAI(uint32 diff)
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
me->setFaction(16);
AggroYellTimer = 0;
} else
} else
AggroYellTimer -= diff;
}
@ -1389,7 +1389,7 @@ void boss_julianne::boss_julianneAI::UpdateAI(uint32 diff)
Phase = PHASE_ROMULO;
SummonRomuloTimer = 10000;
DrinkPoisonTimer = 0;
} else
} else
DrinkPoisonTimer -= diff;
}
@ -1407,7 +1407,7 @@ void boss_julianne::boss_julianneAI::UpdateAI(uint32 diff)
pRomulo->setFaction(16);
}
SummonedRomulo = true;
} else
} else
SummonRomuloTimer -= diff;
}
@ -1424,7 +1424,7 @@ void boss_julianne::boss_julianneAI::UpdateAI(uint32 diff)
ResurrectSelfTimer = 0;
ResurrectTimer = 1000;
} else
} else
ResurrectSelfTimer -= diff;
}
@ -1444,7 +1444,7 @@ void boss_julianne::boss_julianneAI::UpdateAI(uint32 diff)
RomuloDead = false;
ResurrectTimer = 10000;
}
} else
} else
ResurrectTimer -= diff;
}
@ -1453,21 +1453,21 @@ void boss_julianne::boss_julianneAI::UpdateAI(uint32 diff)
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
DoCast(target, SPELL_BLINDING_PASSION);
BlindingPassionTimer = urand(30000, 45000);
} else
} else
BlindingPassionTimer -= diff;
if (DevotionTimer <= diff)
{
DoCast(me, SPELL_DEVOTION);
DevotionTimer = urand(15000, 45000);
} else
} else
DevotionTimer -= diff;
if (PowerfulAttractionTimer <= diff)
{
DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0), SPELL_POWERFUL_ATTRACTION);
PowerfulAttractionTimer = urand(5000, 30000);
} else
} else
PowerfulAttractionTimer -= diff;
if (EternalAffectionTimer <= diff)
@ -1480,7 +1480,7 @@ void boss_julianne::boss_julianneAI::UpdateAI(uint32 diff)
} else DoCast(me, SPELL_ETERNAL_AFFECTION);
EternalAffectionTimer = urand(45000, 60000);
} else
} else
EternalAffectionTimer -= diff;
DoMeleeAttackIfReady();

View file

@ -136,7 +136,7 @@ public:
bool PerformanceReady;
bool RaidWiped;
void Reset()
void Reset() override
{
m_uiSpotlightGUID = 0;
@ -160,9 +160,9 @@ public:
Start(false, false);
}
void EnterCombat(Unit* /*who*/) { }
void EnterCombat(Unit* /*who*/) override { }
void WaypointReached(uint32 waypointId)
void WaypointReached(uint32 waypointId) override
{
switch (waypointId)
{
@ -266,7 +266,7 @@ public:
RaidWiped = false;
}
void UpdateAI(uint32 diff)
void UpdateAI(uint32 diff) override
{
npc_escortAI::UpdateAI(diff);
@ -326,31 +326,31 @@ public:
}
};
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
npc_barnesAI* pBarnesAI = CAST_AI(npc_barnes::npc_barnesAI, creature->AI());
switch (action)
{
case GOSSIP_ACTION_INFO_DEF+1:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, OZ_GOSSIP2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
player->SEND_GOSSIP_MENU(8971, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, OZ_GOSSIP2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
SendGossipMenuFor(player, 8971, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+2:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
pBarnesAI->StartEvent();
break;
case GOSSIP_ACTION_INFO_DEF+3:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
pBarnesAI->m_uiEventId = EVENT_OZ;
break;
case GOSSIP_ACTION_INFO_DEF+4:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
pBarnesAI->m_uiEventId = EVENT_HOOD;
break;
case GOSSIP_ACTION_INFO_DEF+5:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
pBarnesAI->m_uiEventId = EVENT_RAJ;
break;
}
@ -358,39 +358,39 @@ public:
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (InstanceScript* instance = creature->GetInstanceScript())
{
// Check for death of Moroes and if opera event is not done already
if (instance->GetBossState(DATA_MOROES) == DONE && instance->GetBossState(DATA_OPERA_PERFORMANCE) != DONE)
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, OZ_GOSSIP1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, OZ_GOSSIP1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
if (player->IsGameMaster())
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_DOT, OZ_GM_GOSSIP1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_DOT, OZ_GM_GOSSIP2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_DOT, OZ_GM_GOSSIP3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
AddGossipItemFor(player, GOSSIP_ICON_DOT, OZ_GM_GOSSIP1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
AddGossipItemFor(player, GOSSIP_ICON_DOT, OZ_GM_GOSSIP2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
AddGossipItemFor(player, GOSSIP_ICON_DOT, OZ_GM_GOSSIP3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
}
if (npc_barnesAI* pBarnesAI = CAST_AI(npc_barnes::npc_barnesAI, creature->AI()))
{
if (!pBarnesAI->RaidWiped)
player->SEND_GOSSIP_MENU(8970, creature->GetGUID());
SendGossipMenuFor(player, 8970, creature->GetGUID());
else
player->SEND_GOSSIP_MENU(8975, creature->GetGUID());
SendGossipMenuFor(player, 8975, creature->GetGUID());
return true;
}
}
}
player->SEND_GOSSIP_MENU(8978, creature->GetGUID());
SendGossipMenuFor(player, 8978, creature->GetGUID());
return true;
}
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_barnesAI(creature);
}
@ -550,7 +550,7 @@ public:
arca->DespawnOrUnsummon(100);
return 5000;
default:
default:
return 2000;
}

View file

@ -164,12 +164,12 @@ class npc_death_knight_initiate : public CreatureScript
public:
npc_death_knight_initiate() : CreatureScript("npc_death_knight_initiate") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_INFO_DEF)
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
if (player->IsInCombat() || creature->IsInCombat())
return true;
@ -186,7 +186,7 @@ public:
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (player->GetQuestStatus(QUEST_DEATH_CHALLENGE) == QUEST_STATUS_INCOMPLETE && creature->IsFullHealth())
{
@ -197,14 +197,14 @@ public:
return true;
if (!creature->AI()->GetData(player->GetGUIDLow()))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ACCEPT_DUEL, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ACCEPT_DUEL, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
}
return true;
}
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_death_knight_initiateAI(creature);
}
@ -219,7 +219,7 @@ public:
std::set<uint32> playerGUIDs;
uint32 timer = 0;
uint32 GetData(uint32 data) const
uint32 GetData(uint32 data) const override
{
if (data == DATA_IN_PROGRESS)
return _duelInProgress;
@ -227,7 +227,7 @@ public:
return playerGUIDs.find(data) != playerGUIDs.end();
}
void Reset()
void Reset() override
{
_duelInProgress = false;
_duelGUID = 0;
@ -237,7 +237,7 @@ public:
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_UNK_15);
}
void SpellHit(Unit* caster, const SpellInfo* pSpell)
void SpellHit(Unit* caster, const SpellInfo* pSpell) override
{
if (!_duelInProgress && pSpell->Id == SPELL_DUEL)
{
@ -257,7 +257,7 @@ public:
}
}
void DamageTaken(Unit* attacker, uint32& damage, DamageEffectType, SpellSchoolMask)
void DamageTaken(Unit* attacker, uint32& damage, DamageEffectType, SpellSchoolMask) override
{
if (attacker && _duelInProgress && attacker->IsControlledByPlayer())
{
@ -281,7 +281,7 @@ public:
}
}
void UpdateAI(uint32 diff)
void UpdateAI(uint32 diff) override
{
if (timer != 0)
{
@ -508,7 +508,7 @@ public:
events.RepeatEvent(1000);
return;
}
if (!UpdateVictim())
return;
@ -894,7 +894,7 @@ class go_acherus_soul_prison : public GameObjectScript
public:
go_acherus_soul_prison() : GameObjectScript("go_acherus_soul_prison") { }
bool OnGossipHello(Player* player, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
if (Creature* anchor = go->FindNearestCreature(29521, 15))
if (uint64 prisonerGUID = anchor->AI()->GetGUID())
@ -1121,7 +1121,7 @@ class go_inconspicuous_mine_car : public GameObjectScript
public:
go_inconspicuous_mine_car() : GameObjectScript("go_inconspicuous_mine_car") { }
bool OnGossipHello(Player* player, GameObject* /*go*/)
bool OnGossipHello(Player* player, GameObject* /*go*/) override
{
if (player->GetQuestStatus(12701) == QUEST_STATUS_INCOMPLETE)
{
@ -1139,6 +1139,7 @@ public:
}
}
}
return true;
}

View file

@ -286,7 +286,7 @@ const Position LightOfDawnPos[] =
{2270.99f, -5278.00f, 81.89f, 0} // 15 Tirion Fordring loc4
};
const Position LightOfDawnFightPos[] =
const Position LightOfDawnFightPos[] =
{
{2279.68f, -5256.75f, 79.79f, 4.8f},
{2280.40f, -5276.56f, 82.11f, 4.8f},
@ -322,30 +322,30 @@ class npc_highlord_darion_mograine : public CreatureScript
public:
npc_highlord_darion_mograine() : CreatureScript("npc_highlord_darion_mograine") { }
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_highlord_darion_mograineAI(creature);
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
if (player->GetQuestStatus(12801) == QUEST_STATUS_INCOMPLETE && !creature->AI()->GetData(WORLD_STATE_SOLDIERS_ENABLE))
player->ADD_GOSSIP_ITEM(0, "I am ready, Highlord. Let the siege of Light's Hope begin!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
AddGossipItemFor(player, 0, "I am ready, Highlord. Let the siege of Light's Hope begin!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
if (action == GOSSIP_ACTION_INFO_DEF+1)
{
player->PlayerTalkClass->ClearMenus();
player->CLOSE_GOSSIP_MENU();
ClearGossipMenuFor(player);
CloseGossipMenuFor(player);
creature->AI()->DoAction(ACTION_START_EVENT);
}
return true;
@ -667,7 +667,7 @@ public:
summons.DespawnEntry(NPC_ACHERUS_GHOUL);
summons.DespawnEntry(NPC_WARRIOR_OF_THE_FROZEN_WASTES);
summons.DespawnEntry(NPC_FLESH_BEHEMOTH);
summons.DespawnEntry(NPC_DEFENDER_OF_THE_LIGHT);
summons.DespawnEntry(NPC_DEFENDER_OF_THE_LIGHT);
if (Creature* orbaz = GetEntryFromSummons(NPC_ORBAZ_BLOODBANE))
{

View file

@ -646,100 +646,100 @@ class npc_fairbanks : public CreatureScript
public:
npc_fairbanks() : CreatureScript("npc_fairbanks") { }
bool OnGossipHello(Player* plr, Creature* npc)
bool OnGossipHello(Player* player, Creature* creature) override
{
plr->ADD_GOSSIP_ITEM(0, "Curse? What's going on here, Fairbanks?", GOSSIP_SENDER_MAIN, 1);
plr->SEND_GOSSIP_MENU(100100, npc->GetGUID());
AddGossipItemFor(player, 0, "Curse? What's going on here, Fairbanks?", GOSSIP_SENDER_MAIN, 1);
SendGossipMenuFor(player, 100100, creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* plr, Creature* npc, uint32 /*Sender*/, uint32 uiAction)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*Sender*/, uint32 uiAction) override
{
plr->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (uiAction)
{
case 1:
npc->HandleEmoteCommand(1);
plr->ADD_GOSSIP_ITEM(0, "Mograine?", GOSSIP_SENDER_MAIN, 2);
plr->SEND_GOSSIP_MENU(100101, npc->GetGUID());
creature->HandleEmoteCommand(1);
AddGossipItemFor(player, 0, "Mograine?", GOSSIP_SENDER_MAIN, 2);
SendGossipMenuFor(player, 100101, creature->GetGUID());
return true;
case 2:
npc->HandleEmoteCommand(1);
plr->ADD_GOSSIP_ITEM(0, "What do you mean?", GOSSIP_SENDER_MAIN, 3);
plr->SEND_GOSSIP_MENU(100102, npc->GetGUID());
creature->HandleEmoteCommand(1);
AddGossipItemFor(player, 0, "What do you mean?", GOSSIP_SENDER_MAIN, 3);
SendGossipMenuFor(player, 100102, creature->GetGUID());
return true;
case 3:
npc->HandleEmoteCommand(1);
plr->ADD_GOSSIP_ITEM(0, "I still do not fully understand.", GOSSIP_SENDER_MAIN, 4);
plr->SEND_GOSSIP_MENU(100103, npc->GetGUID());
creature->HandleEmoteCommand(1);
AddGossipItemFor(player, 0, "I still do not fully understand.", GOSSIP_SENDER_MAIN, 4);
SendGossipMenuFor(player, 100103, creature->GetGUID());
return true;
case 4:
npc->HandleEmoteCommand(1);
plr->ADD_GOSSIP_ITEM(0, "Incredible story. So how did he die?", GOSSIP_SENDER_MAIN, 5);
plr->SEND_GOSSIP_MENU(100104, npc->GetGUID());
creature->HandleEmoteCommand(1);
AddGossipItemFor(player, 0, "Incredible story. So how did he die?", GOSSIP_SENDER_MAIN, 5);
SendGossipMenuFor(player, 100104, creature->GetGUID());
return true;
case 5:
npc->HandleEmoteCommand(1);
plr->ADD_GOSSIP_ITEM(0, "You mean...", GOSSIP_SENDER_MAIN, 6);
plr->SEND_GOSSIP_MENU(100105, npc->GetGUID());
creature->HandleEmoteCommand(1);
AddGossipItemFor(player, 0, "You mean...", GOSSIP_SENDER_MAIN, 6);
SendGossipMenuFor(player, 100105, creature->GetGUID());
return true;
case 6:
npc->HandleEmoteCommand(1);
plr->ADD_GOSSIP_ITEM(0, "How do you know all of this?", GOSSIP_SENDER_MAIN, 7);
plr->SEND_GOSSIP_MENU(100106, npc->GetGUID());
creature->HandleEmoteCommand(1);
AddGossipItemFor(player, 0, "How do you know all of this?", GOSSIP_SENDER_MAIN, 7);
SendGossipMenuFor(player, 100106, creature->GetGUID());
return true;
case 7:
npc->HandleEmoteCommand(1);
plr->ADD_GOSSIP_ITEM(0, "A thousand? For one man?", GOSSIP_SENDER_MAIN, 8);
plr->SEND_GOSSIP_MENU(100107, npc->GetGUID());
creature->HandleEmoteCommand(1);
AddGossipItemFor(player, 0, "A thousand? For one man?", GOSSIP_SENDER_MAIN, 8);
SendGossipMenuFor(player, 100107, creature->GetGUID());
return true;
case 8:
npc->HandleEmoteCommand(5);
plr->ADD_GOSSIP_ITEM(0, "Yet? Yet what?", GOSSIP_SENDER_MAIN, 9);
plr->SEND_GOSSIP_MENU(100108, npc->GetGUID());
creature->HandleEmoteCommand(5);
AddGossipItemFor(player, 0, "Yet? Yet what?", GOSSIP_SENDER_MAIN, 9);
SendGossipMenuFor(player, 100108, creature->GetGUID());
return true;
case 9:
npc->HandleEmoteCommand(1);
plr->ADD_GOSSIP_ITEM(0, "And did he?", GOSSIP_SENDER_MAIN, 10);
plr->SEND_GOSSIP_MENU(100109, npc->GetGUID());
creature->HandleEmoteCommand(1);
AddGossipItemFor(player, 0, "And did he?", GOSSIP_SENDER_MAIN, 10);
SendGossipMenuFor(player, 100109, creature->GetGUID());
return true;
case 10:
npc->HandleEmoteCommand(274);
plr->ADD_GOSSIP_ITEM(0, "Continue please, Fairbanks.", GOSSIP_SENDER_MAIN, 11);
plr->SEND_GOSSIP_MENU(100110, npc->GetGUID());
creature->HandleEmoteCommand(274);
AddGossipItemFor(player, 0, "Continue please, Fairbanks.", GOSSIP_SENDER_MAIN, 11);
SendGossipMenuFor(player, 100110, creature->GetGUID());
return true;
case 11:
npc->HandleEmoteCommand(1);
plr->ADD_GOSSIP_ITEM(0, "You mean...", GOSSIP_SENDER_MAIN, 12);
plr->SEND_GOSSIP_MENU(100111, npc->GetGUID());
creature->HandleEmoteCommand(1);
AddGossipItemFor(player, 0, "You mean...", GOSSIP_SENDER_MAIN, 12);
SendGossipMenuFor(player, 100111, creature->GetGUID());
return true;
case 12:
npc->HandleEmoteCommand(1);
plr->ADD_GOSSIP_ITEM(0, "You were right, Fairbanks. That is tragic.", GOSSIP_SENDER_MAIN, 13);
plr->SEND_GOSSIP_MENU(100112, npc->GetGUID());
creature->HandleEmoteCommand(1);
AddGossipItemFor(player, 0, "You were right, Fairbanks. That is tragic.", GOSSIP_SENDER_MAIN, 13);
SendGossipMenuFor(player, 100112, creature->GetGUID());
return true;
case 13:
npc->HandleEmoteCommand(1);
plr->ADD_GOSSIP_ITEM(0, "And you did...", GOSSIP_SENDER_MAIN, 14);
plr->SEND_GOSSIP_MENU(100113, npc->GetGUID());
creature->HandleEmoteCommand(1);
AddGossipItemFor(player, 0, "And you did...", GOSSIP_SENDER_MAIN, 14);
SendGossipMenuFor(player, 100113, creature->GetGUID());
return true;
case 14:
npc->HandleEmoteCommand(1);
plr->ADD_GOSSIP_ITEM(0, "You tell an incredible tale, Fairbanks. What of the blade? Is it beyond redemption?", GOSSIP_SENDER_MAIN, 15);
plr->SEND_GOSSIP_MENU(100114, npc->GetGUID());
creature->HandleEmoteCommand(1);
AddGossipItemFor(player, 0, "You tell an incredible tale, Fairbanks. What of the blade? Is it beyond redemption?", GOSSIP_SENDER_MAIN, 15);
SendGossipMenuFor(player, 100114, creature->GetGUID());
return true;
case 15:
npc->HandleEmoteCommand(1);
plr->ADD_GOSSIP_ITEM(0, "But his son is dead.", GOSSIP_SENDER_MAIN, 16);
plr->SEND_GOSSIP_MENU(100115, npc->GetGUID());
creature->HandleEmoteCommand(1);
AddGossipItemFor(player, 0, "But his son is dead.", GOSSIP_SENDER_MAIN, 16);
SendGossipMenuFor(player, 100115, creature->GetGUID());
return true;
case 16:
plr->SEND_GOSSIP_MENU(100116, npc->GetGUID());
SendGossipMenuFor(player, 100116, creature->GetGUID());
// todo: we need to play these 3 emote in sequence, we play only the last one right now.
npc->HandleEmoteCommand(274);
npc->HandleEmoteCommand(1);
npc->HandleEmoteCommand(397);
creature->HandleEmoteCommand(274);
creature->HandleEmoteCommand(1);
creature->HandleEmoteCommand(397);
return true;
}
@ -750,12 +750,12 @@ public:
{
npc_fairbanksAI(Creature* creature) : SmartAI(creature) { }
void Reset()
void Reset() override
{
SayAshbringer = false;
}
void MoveInLineOfSight(Unit* who)
void MoveInLineOfSight(Unit* who) override
{
if (who && who->GetDistance2d(me) < 2.0f)
if (Player* player = who->ToPlayer())
@ -776,7 +776,7 @@ public:
bool SayAshbringer = false;
};
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_fairbanksAI(creature);
}

View file

@ -131,41 +131,41 @@ class npc_zulaman_hostage : public CreatureScript
bool IsLoot;
uint64 PlayerGUID;
void Reset() { }
void Reset() override { }
void EnterCombat(Unit* /*who*/) { }
void EnterCombat(Unit* /*who*/) override { }
void JustDied(Unit* /*killer*/)
void JustDied(Unit* /*killer*/) override
{
if (Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID))
player->SendLoot(me->GetGUID(), LOOT_CORPSE);
}
void UpdateAI(uint32 /*diff*/)
void UpdateAI(uint32 /*diff*/) override
{
if (IsLoot)
DoCast(me, 7, false);
}
};
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_zulaman_hostageAI(creature);
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_HOSTAGE1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HOSTAGE1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_INFO_DEF + 1)
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
if (!creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP))
return true;
@ -189,6 +189,7 @@ class npc_zulaman_hostage : public CreatureScript
}
}
}
return true;
}
};
@ -256,195 +257,195 @@ enum Weapons
class npc_harrison_jones : public CreatureScript
{
public:
public:
npc_harrison_jones() : CreatureScript("npc_harrison_jones")
npc_harrison_jones() : CreatureScript("npc_harrison_jones")
{
}
struct npc_harrison_jonesAI : public ScriptedAI
{
npc_harrison_jonesAI(Creature* creature) : ScriptedAI(creature)
{
instance = creature->GetInstanceScript();
}
struct npc_harrison_jonesAI : public ScriptedAI
InstanceScript* instance;
uint8 _gongEvent;
uint32 _gongTimer;
uint64 uiTargetGUID;
void Reset()
{
npc_harrison_jonesAI(Creature* creature) : ScriptedAI(creature)
_gongEvent = 0;
_gongTimer = 0;
uiTargetGUID = 0;
}
void EnterCombat(Unit* /*who*/) { }
void sGossipSelect(Player* player, uint32 sender, uint32 action)
{
if (me->GetCreatureTemplate()->GossipMenuId == sender && !action)
{
instance = creature->GetInstanceScript();
CloseGossipMenuFor(player);
me->SetFacingToObject(player);
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
Talk(SAY_HARRISON_0);
_gongEvent = GONG_EVENT_1;
_gongTimer = 4000;
}
}
InstanceScript* instance;
uint8 _gongEvent;
uint32 _gongTimer;
uint64 uiTargetGUID;
void Reset()
void SpellHit(Unit*, const SpellInfo* spell)
{
if (spell->Id == SPELL_COSMETIC_SPEAR_THROW)
{
_gongEvent = 0;
_gongTimer = 0;
uiTargetGUID = 0;
me->RemoveAllAuras();
me->SetEntry(NPC_HARRISON_JONES_2);
me->SetDisplayId(MODEL_HARRISON_JONES_2);
me->SetTarget(0);
me->SetByteValue(UNIT_FIELD_BYTES_1, 0, UNIT_STAND_STATE_DEAD);
me->SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_DEAD);
instance->SetData(DATA_GONGEVENT, DONE);
}
}
void EnterCombat(Unit* /*who*/) { }
void sGossipSelect(Player* player, uint32 sender, uint32 action)
void UpdateAI(uint32 diff)
{
if (_gongEvent)
{
if (me->GetCreatureTemplate()->GossipMenuId == sender && !action)
{
player->CLOSE_GOSSIP_MENU();
me->SetFacingToObject(player);
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
Talk(SAY_HARRISON_0);
_gongEvent = GONG_EVENT_1;
_gongTimer = 4000;
}
}
void SpellHit(Unit*, const SpellInfo* spell)
{
if (spell->Id == SPELL_COSMETIC_SPEAR_THROW)
if (_gongTimer <= diff)
{
me->RemoveAllAuras();
me->SetEntry(NPC_HARRISON_JONES_2);
me->SetDisplayId(MODEL_HARRISON_JONES_2);
me->SetTarget(0);
me->SetByteValue(UNIT_FIELD_BYTES_1, 0, UNIT_STAND_STATE_DEAD);
me->SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_DEAD);
instance->SetData(DATA_GONGEVENT, DONE);
}
}
void UpdateAI(uint32 diff)
{
if (_gongEvent)
{
if (_gongTimer <= diff)
switch (_gongEvent)
{
switch (_gongEvent)
{
case GONG_EVENT_1:
me->GetMotionMaster()->MovePath(HARRISON_MOVE_1, false);
_gongEvent = GONG_EVENT_2;
_gongTimer = 12000;
break;
case GONG_EVENT_2:
me->SetFacingTo(6.235659f);
Talk(SAY_HARRISON_1);
DoCast(me, SPELL_BANGING_THE_GONG);
me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, uint32(WEAPON_MACE));
me->SetSheath(SHEATH_STATE_MELEE);
_gongEvent = GONG_EVENT_3;
_gongTimer = 4000;
break;
case GONG_EVENT_3:
if (GameObject* gong = me->GetMap()->GetGameObject(instance->GetData64(GO_STRANGE_GONG)))
gong->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
_gongEvent = GONG_EVENT_4;
_gongTimer = 105000;
break;
case GONG_EVENT_4:
me->RemoveAura(SPELL_BANGING_THE_GONG);
if (GameObject* gong = me->GetMap()->GetGameObject(instance->GetData64(GO_STRANGE_GONG)))
gong->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
case GONG_EVENT_1:
me->GetMotionMaster()->MovePath(HARRISON_MOVE_1, false);
_gongEvent = GONG_EVENT_2;
_gongTimer = 12000;
break;
case GONG_EVENT_2:
me->SetFacingTo(6.235659f);
Talk(SAY_HARRISON_1);
DoCast(me, SPELL_BANGING_THE_GONG);
me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, uint32(WEAPON_MACE));
me->SetSheath(SHEATH_STATE_MELEE);
_gongEvent = GONG_EVENT_3;
_gongTimer = 4000;
break;
case GONG_EVENT_3:
if (GameObject* gong = me->GetMap()->GetGameObject(instance->GetData64(GO_STRANGE_GONG)))
gong->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
_gongEvent = GONG_EVENT_4;
_gongTimer = 105000;
break;
case GONG_EVENT_4:
me->RemoveAura(SPELL_BANGING_THE_GONG);
if (GameObject* gong = me->GetMap()->GetGameObject(instance->GetData64(GO_STRANGE_GONG)))
gong->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
// trigger or gong will need to be scripted to set IN_PROGRESS after enough hits.
// This is temp workaround.
instance->SetData(DATA_GONGEVENT, IN_PROGRESS); // to be removed.
// trigger or gong will need to be scripted to set IN_PROGRESS after enough hits.
// This is temp workaround.
instance->SetData(DATA_GONGEVENT, IN_PROGRESS); // to be removed.
if (instance->GetData(DATA_GONGEVENT) == IN_PROGRESS)
if (instance->GetData(DATA_GONGEVENT) == IN_PROGRESS)
{
// Players are Now Saved to instance at SPECIAL (Player should be notified?)
me->GetMotionMaster()->MovePath(HARRISON_MOVE_2, false);
_gongEvent = GONG_EVENT_5;
_gongTimer = 5000;
}
else
{
_gongTimer = 1000;
_gongEvent = GONG_EVENT_9;
}
break;
case GONG_EVENT_5:
me->SetEntry(NPC_HARRISON_JONES_1);
me->SetDisplayId(MODEL_HARRISON_JONES_1);
Talk(SAY_HARRISON_2);
_gongTimer = 12000;
_gongEvent = GONG_EVENT_6;
break;
case GONG_EVENT_6:
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_USE_STANDING);
Talk(SAY_HARRISON_3);
_gongTimer = 7000;
_gongEvent = GONG_EVENT_7;
break;
case GONG_EVENT_7:
if (!uiTargetGUID)
{
std::list<Creature*> targetList;
GetCreatureListWithEntryInGrid(targetList, me, NPC_AMANISHI_GUARDIAN, 26.0f);
if (!targetList.empty())
{
// Players are Now Saved to instance at SPECIAL (Player should be notified?)
me->GetMotionMaster()->MovePath(HARRISON_MOVE_2, false);
_gongEvent = GONG_EVENT_5;
_gongTimer = 5000;
}
else
{
_gongTimer = 1000;
_gongEvent = GONG_EVENT_9;
}
break;
case GONG_EVENT_5:
me->SetEntry(NPC_HARRISON_JONES_1);
me->SetDisplayId(MODEL_HARRISON_JONES_1);
Talk(SAY_HARRISON_2);
_gongTimer = 12000;
_gongEvent = GONG_EVENT_6;
break;
case GONG_EVENT_6:
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_USE_STANDING);
Talk(SAY_HARRISON_3);
_gongTimer = 7000;
_gongEvent = GONG_EVENT_7;
break;
case GONG_EVENT_7:
if (!uiTargetGUID)
{
std::list<Creature*> targetList;
GetCreatureListWithEntryInGrid(targetList, me, NPC_AMANISHI_GUARDIAN, 26.0f);
if (!targetList.empty())
for (std::list<Creature*>::const_iterator itr = targetList.begin(); itr != targetList.end(); ++itr)
{
for (std::list<Creature*>::const_iterator itr = targetList.begin(); itr != targetList.end(); ++itr)
if (Creature* ptarget = *itr)
{
if (Creature* ptarget = *itr)
if (ptarget->GetPositionX() > 120)
{
if (ptarget->GetPositionX() > 120)
{
ptarget->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, uint32(WEAPON_SPEAR));
ptarget->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
ptarget->SetReactState(REACT_PASSIVE);
ptarget->AI()->SetData(0, 1);
}
else
{
ptarget->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
ptarget->SetReactState(REACT_PASSIVE);
ptarget->AI()->SetData(0, 2);
}
ptarget->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, uint32(WEAPON_SPEAR));
ptarget->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
ptarget->SetReactState(REACT_PASSIVE);
ptarget->AI()->SetData(0, 1);
}
else
{
ptarget->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
ptarget->SetReactState(REACT_PASSIVE);
ptarget->AI()->SetData(0, 2);
}
}
}
}
}
if (GameObject* gate = me->GetMap()->GetGameObject(instance->GetData64(GO_MASSIVE_GATE)))
gate->SetGoState(GO_STATE_ACTIVE);
_gongTimer = 2000;
_gongEvent = GONG_EVENT_8;
break;
case GONG_EVENT_8:
DoCast(me, SPELL_STEALTH);
me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, uint32(0));
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
me->GetMotionMaster()->MovePath(HARRISON_MOVE_3, false);
_gongTimer = 1000;
_gongEvent = 0;
break;
case GONG_EVENT_9:
me->GetMotionMaster()->MovePoint(0, 120.687f, 1674.0f, 42.0217f);
_gongTimer = 12000;
_gongEvent = GONG_EVENT_10;
break;
case GONG_EVENT_10:
me->SetFacingTo(1.59044f);
_gongEvent = 11;
_gongTimer = 6000;
break;
case GONG_EVENT_11:
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
if (GameObject* gate = me->GetMap()->GetGameObject(instance->GetData64(GO_MASSIVE_GATE)))
gate->SetGoState(GO_STATE_ACTIVE);
_gongTimer = 2000;
_gongEvent = GONG_EVENT_8;
break;
case GONG_EVENT_8:
DoCast(me, SPELL_STEALTH);
me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, uint32(0));
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
me->GetMotionMaster()->MovePath(HARRISON_MOVE_3, false);
_gongTimer = 1000;
_gongEvent = 0;
break;
case GONG_EVENT_9:
me->GetMotionMaster()->MovePoint(0, 120.687f, 1674.0f, 42.0217f);
_gongTimer = 12000;
_gongEvent = GONG_EVENT_10;
break;
case GONG_EVENT_10:
me->SetFacingTo(1.59044f);
_gongEvent = 11;
_gongTimer = 6000;
break;
case GONG_EVENT_11:
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
instance->SetData(DATA_GONGEVENT, NOT_STARTED);
_gongEvent = 0;
_gongTimer = 1000;
break;
}
instance->SetData(DATA_GONGEVENT, NOT_STARTED);
_gongEvent = 0;
_gongTimer = 1000;
break;
}
else
_gongTimer -= diff;
}
else
_gongTimer -= diff;
}
};
CreatureAI* GetAI(Creature* creature) const
{
return GetInstanceAI<npc_harrison_jonesAI>(creature);
}
};
CreatureAI* GetAI(Creature* creature) const
{
return GetInstanceAI<npc_harrison_jonesAI>(creature);
}
};
class spell_banging_the_gong : public SpellScriptLoader

View file

@ -410,7 +410,7 @@ class go_gong_of_bethekk : public GameObjectScript
{
public: go_gong_of_bethekk() : GameObjectScript("go_gong_of_bethekk") { }
bool OnGossipHello(Player* /*player*/, GameObject* go)
bool OnGossipHello(Player* /*player*/, GameObject* go) override
{
if (go->GetInstanceScript())
{
@ -418,6 +418,7 @@ class go_gong_of_bethekk : public GameObjectScript
go->SendCustomAnim(0);
go->SummonCreature(NPC_ARLOKK, PosSummonArlokk[0], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 600000);
}
return true;
}
};

View file

@ -340,23 +340,23 @@ class npc_augustus_the_touched : public CreatureScript
public:
npc_augustus_the_touched() : CreatureScript("npc_augustus_the_touched") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_TRADE)
player->GetSession()->SendListInventory(creature->GetGUID());
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
if (creature->IsVendor() && player->GetQuestRewardStatus(6164))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
AddGossipItemFor(player, GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
};
@ -375,15 +375,15 @@ class npc_darrowshire_spirit : public CreatureScript
public:
npc_darrowshire_spirit() : CreatureScript("npc_darrowshire_spirit") { }
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
player->SEND_GOSSIP_MENU(3873, creature->GetGUID());
SendGossipMenuFor(player, 3873, creature->GetGUID());
player->TalkedToCreature(creature->GetEntry(), creature->GetGUID());
creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
return true;
}
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_darrowshire_spiritAI(creature);
}
@ -392,13 +392,13 @@ public:
{
npc_darrowshire_spiritAI(Creature* creature) : ScriptedAI(creature) { }
void Reset()
void Reset() override
{
DoCast(me, SPELL_SPIRIT_SPAWNIN);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
}
void EnterCombat(Unit* /*who*/) { }
void EnterCombat(Unit* /*who*/) override { }
};
};

View file

@ -38,51 +38,51 @@ class npc_mountaineer_pebblebitty : public CreatureScript
public:
npc_mountaineer_pebblebitty() : CreatureScript("npc_mountaineer_pebblebitty") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (action)
{
case GOSSIP_ACTION_INFO_DEF+1:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_MP1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
player->SEND_GOSSIP_MENU(1833, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_MP1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
SendGossipMenuFor(player, 1833, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+2:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_MP2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
player->SEND_GOSSIP_MENU(1834, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_MP2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
SendGossipMenuFor(player, 1834, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+3:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_MP3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
player->SEND_GOSSIP_MENU(1835, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_MP3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
SendGossipMenuFor(player, 1835, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+4:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_MP4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
player->SEND_GOSSIP_MENU(1836, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_MP4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
SendGossipMenuFor(player, 1836, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+5:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_MP5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6);
player->SEND_GOSSIP_MENU(1837, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_MP5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6);
SendGossipMenuFor(player, 1837, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+6:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_MP6, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 7);
player->SEND_GOSSIP_MENU(1838, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_MP6, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 7);
SendGossipMenuFor(player, 1838, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+7:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
break;
}
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
if (!player->GetQuestRewardStatus(3181) == 1)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_MP, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_MP, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}

View file

@ -112,40 +112,40 @@ class npc_lady_katrana_prestor : public CreatureScript
public:
npc_lady_katrana_prestor() : CreatureScript("npc_lady_katrana_prestor") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (action)
{
case GOSSIP_ACTION_INFO_DEF:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAT_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
player->SEND_GOSSIP_MENU(2694, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAT_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
SendGossipMenuFor(player, 2694, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+1:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAT_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
player->SEND_GOSSIP_MENU(2695, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAT_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
SendGossipMenuFor(player, 2695, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+2:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAT_4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
player->SEND_GOSSIP_MENU(2696, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAT_4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
SendGossipMenuFor(player, 2696, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+3:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->AreaExploredOrEventHappens(4185);
break;
}
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
if (player->GetQuestStatus(4185) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAT_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAT_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
player->SEND_GOSSIP_MENU(2693, creature->GetGUID());
SendGossipMenuFor(player, 2693, creature->GetGUID());
return true;
}

View file

@ -43,7 +43,7 @@ enum Sylvanas
SAY_SUNSORROW_WHISPER = 0,
SOUND_CREDIT = 10896,
NPC_HIGHBORNE_LAMENTER = 21628,
NPC_HIGHBORNE_BUNNY = 21641,
NPC_AMBASSADOR_SUNSORROW = 16287,
@ -310,15 +310,15 @@ public:
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_INFO_DEF+1)
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
creature->CastSpell(player, SPELL_MARK_OF_SHAME, false);
}
if (action == GOSSIP_ACTION_INFO_DEF+2)
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->AreaExploredOrEventHappens(6628);
}
return true;
@ -331,13 +331,13 @@ public:
if (player->GetQuestStatus(6628) == QUEST_STATUS_INCOMPLETE && !player->HasAura(SPELL_MARK_OF_SHAME))
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_HPF1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_HPF2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_HPF3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
player->SEND_GOSSIP_MENU(5822, creature->GetGUID());
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());
}
else
player->SEND_GOSSIP_MENU(5821, creature->GetGUID());
SendGossipMenuFor(player, 5821, creature->GetGUID());
return true;
}
@ -937,11 +937,13 @@ public:
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (action)
{
case GOSSIP_ACTION_INFO_DEF + 1:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
if (auto ai = CAST_AI(npc_varian_wrynn::npc_varian_wrynnAI, creature->AI()))
{
ai->Start(true, true, player->GetGUID());
@ -952,8 +954,10 @@ public:
ai->SetDespawnAtEnd(false);
ai->SetDespawnAtFar(false);
}
break;
}
return true;
}
@ -963,9 +967,9 @@ public:
player->PrepareQuestMenu(creature->GetGUID());
if (player->GetQuestStatus(QUEST_BATTLE_A) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_WRYNN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_WRYNN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
@ -2267,12 +2271,14 @@ public:
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (action)
{
case GOSSIP_ACTION_INFO_DEF + 1:
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
if (auto thrall_ai = CAST_AI(npc_thrall_bfu::npc_thrall_bfuAI, creature->AI()))
{
if (Creature* sylvannas = GetClosestCreatureWithEntry(creature, NPC_SYLVANAS, 50.0f))
@ -2288,6 +2294,7 @@ public:
break;
}
}
return true;
}
@ -2297,9 +2304,9 @@ public:
player->PrepareQuestMenu(creature->GetGUID());
if (player->GetQuestStatus(QUEST_BATTLE_H) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_THRALL, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_THRALL, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}

View file

@ -41,56 +41,56 @@ class npcs_dithers_and_arbington : public CreatureScript
public:
npcs_dithers_and_arbington() : CreatureScript("npcs_dithers_and_arbington") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (action)
{
case GOSSIP_ACTION_TRADE:
player->GetSession()->SendListInventory(creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+1:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SDA1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5);
player->SEND_GOSSIP_MENU(3980, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_SDA1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5);
SendGossipMenuFor(player, 3980, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+2:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SDA1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5);
player->SEND_GOSSIP_MENU(3981, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_SDA1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5);
SendGossipMenuFor(player, 3981, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+3:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SDA1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5);
player->SEND_GOSSIP_MENU(3982, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_SDA1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5);
SendGossipMenuFor(player, 3982, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+4:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SDA1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5);
player->SEND_GOSSIP_MENU(3983, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_SDA1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5);
SendGossipMenuFor(player, 3983, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+5:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
creature->CastSpell(player, 17529, false);
break;
}
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
if (creature->IsVendor())
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
AddGossipItemFor(player, GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
if (player->GetQuestRewardStatus(5237) || player->GetQuestRewardStatus(5238))
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_HDA1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_HDA2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_HDA3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_HDA4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+4);
player->SEND_GOSSIP_MENU(3985, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HDA1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HDA2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HDA3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HDA4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+4);
SendGossipMenuFor(player, 3985, creature->GetGUID());
}
else
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
@ -115,18 +115,18 @@ class npc_myranda_the_hag : public CreatureScript
public:
npc_myranda_the_hag() : CreatureScript("npc_myranda_the_hag") { }
bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_INFO_DEF + 1)
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->CastSpell(player, SPELL_SCARLET_ILLUSION, false);
}
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
@ -134,12 +134,12 @@ public:
if (player->GetQuestRewardStatus(QUEST_FIND_MYRANDA) &&
!player->GetQuestRewardStatus(QUEST_IN_DREAMS) && !player->HasAura(SPELL_SCARLET_ILLUSION))
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_ILLUSION, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
player->SEND_GOSSIP_MENU(4773, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_ILLUSION, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
SendGossipMenuFor(player, 4773, creature->GetGUID());
return true;
}
else
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}

File diff suppressed because it is too large Load diff

View file

@ -362,7 +362,7 @@ public:
struct npc_costumed_orphan_matronAI : public ScriptedAI
{
npc_costumed_orphan_matronAI(Creature *c) : ScriptedAI(c)
npc_costumed_orphan_matronAI(Creature *c) : ScriptedAI(c)
{
}
@ -370,7 +370,7 @@ public:
bool allowQuest;
uint64 horseGUID;
void Reset()
void Reset() override
{
eventStarted = 0;
allowQuest = false;
@ -402,7 +402,7 @@ public:
}
}
void DoAction(int32 param)
void DoAction(int32 param) override
{
if (param == ACTION_START_EVENT)
{
@ -420,7 +420,7 @@ public:
}
}
uint32 GetData(uint32 param) const
uint32 GetData(uint32 param) const override
{
if (param == DATA_ALLOW_START)
return allowQuest;
@ -428,7 +428,7 @@ public:
return 0;
}
void UpdateAI(uint32 diff)
void UpdateAI(uint32 diff) override
{
if (eventStarted)
{
@ -442,7 +442,7 @@ public:
}
};
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
QuestRelationBounds pObjectQR = sObjectMgr->GetCreatureQuestRelationBounds(creature->GetEntry());
QuestRelationBounds pObjectQIR = sObjectMgr->GetCreatureQuestInvolvedRelationBounds(creature->GetEntry());
@ -494,7 +494,7 @@ public:
return true;
}
bool OnQuestAccept(Player* /*player*/, Creature* creature, Quest const* quest)
bool OnQuestAccept(Player* /*player*/, Creature* creature, Quest const* quest) override
{
if ((quest->GetQuestId() == QUEST_LET_THE_FIRES_COME_A || quest->GetQuestId() == QUEST_LET_THE_FIRES_COME_H) && !creature->AI()->GetData(DATA_ALLOW_START))
creature->AI()->DoAction(ACTION_START_EVENT);
@ -502,7 +502,7 @@ public:
return true;
}
CreatureAI* GetAI(Creature* pCreature) const
CreatureAI* GetAI(Creature* pCreature) const override
{
return new npc_costumed_orphan_matronAI (pCreature);
}
@ -921,7 +921,7 @@ class boss_headless_horseman : public CreatureScript
for (std::list<Creature*>::iterator itr = unitList.begin(); itr != unitList.end(); ++itr)
(*itr)->ToCreature()->DespawnOrUnsummon(500);
Map::PlayerList const& players = me->GetMap()->GetPlayers();
if (!players.isEmpty() && players.begin()->GetSource() && players.begin()->GetSource()->GetGroup())
sLFGMgr->FinishDungeon(players.begin()->GetSource()->GetGroup()->GetGUID(), 285, me->FindMap());
@ -962,7 +962,7 @@ class boss_headless_horseman : public CreatureScript
events.CancelEvent(EVENT_HORSEMAN_CONFLAGRATION);
events.CancelEvent(EVENT_SUMMON_PUMPKIN);
me->MonsterYell("Here's my body, fit and pure! Now, your blackened souls I'll cure!", LANG_UNIVERSAL, 0);
if (phase == 1)
events.ScheduleEvent(EVENT_HORSEMAN_CONFLAGRATION, 6000);
else if (phase == 2)
@ -980,7 +980,7 @@ class boss_headless_horseman : public CreatureScript
{
me->SetUInt32Value(UNIT_FIELD_FLAGS, 0);
me->StopMoving();
me->SetInCombatWithZone();
inFight = true;
events.ScheduleEvent(EVENT_HORSEMAN_FOLLOW, 500);
@ -1036,7 +1036,7 @@ class boss_headless_horseman : public CreatureScript
phase = 0;
inFight = false;
health = 0;
me->SetDisableGravity(true);
me->SetSpeed(MOVE_WALK, 5.0f, true);
}
@ -1253,7 +1253,7 @@ class boss_headless_horseman_head : public CreatureScript
damage = 0;
me->RemoveAllAuras();
me->CastSpell(me, SPELL_HEAD_DAMAGED_INFO, true);
me->CastSpell(me, SPELL_THROW_HEAD_BACK, true);
me->CastSpell(me, SPELL_THROW_HEAD_BACK, true);
if (Unit* owner = GetOwner())
owner->RemoveAura(SPELL_HORSEMAN_IMMUNITY);
}
@ -1377,7 +1377,7 @@ void AddSC_event_hallows_end_scripts()
new spell_hallows_end_put_costume("spell_hallows_end_leper_costume", SPELL_LEPER_GNOME_COSTUME_MALE, SPELL_LEPER_GNOME_COSTUME_FEMALE);
new spell_hallows_end_put_costume("spell_hallows_end_ghost_costume", SPELL_GHOST_COSTUME_MALE, SPELL_GHOST_COSTUME_FEMALE);
new spell_hallows_end_put_costume("spell_hallows_end_ninja_costume", SPELL_NINJA_COSTUME_MALE, SPELL_NINJA_COSTUME_FEMALE);
// Quests
new npc_hallows_end_train_fire();

View file

@ -21,9 +21,9 @@ class go_midsummer_bonfire : public GameObjectScript
public:
go_midsummer_bonfire() : GameObjectScript("go_midsummer_bonfire") { }
bool OnGossipSelect(Player* player, GameObject* /*go*/, uint32 /*sender*/, uint32 /*action*/)
bool OnGossipSelect(Player* player, GameObject* /*go*/, uint32 /*sender*/, uint32 /*action*/) override
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
// we know that there is only one gossip.
player->CastSpell(player, SPELL_STAMP_OUT_BONFIRE, true);
return true;
@ -37,7 +37,7 @@ class npc_midsummer_bonfire : public CreatureScript
struct npc_midsummer_bonfireAI : public ScriptedAI
{
npc_midsummer_bonfireAI(Creature* c) : ScriptedAI(c)
npc_midsummer_bonfireAI(Creature* c) : ScriptedAI(c)
{
me->IsAIEnabled = true;
goGUID = 0;
@ -47,7 +47,7 @@ class npc_midsummer_bonfire : public CreatureScript
me->RemoveGameObject(go, false);
}
}
uint64 goGUID;
void SpellHit(Unit*, SpellInfo const* spellInfo)
@ -86,7 +86,7 @@ class npc_midsummer_torch_target : public CreatureScript
struct npc_midsummer_torch_targetAI : public ScriptedAI
{
npc_midsummer_torch_targetAI(Creature* c) : ScriptedAI(c)
npc_midsummer_torch_targetAI(Creature* c) : ScriptedAI(c)
{
teleTimer = 0;
startTimer = 1;
@ -114,7 +114,7 @@ class npc_midsummer_torch_target : public CreatureScript
{
return seer->GetGUID() == playerGUID;
}
void SpellHit(Unit* caster, SpellInfo const* spellInfo)
{
if (posVec.empty())
@ -273,7 +273,7 @@ public:
class spell_midsummer_ribbon_pole_AuraScript : public AuraScript
{
PrepareAuraScript(spell_midsummer_ribbon_pole_AuraScript)
void HandleEffectPeriodic(AuraEffect const * /*aurEff*/)
{
PreventDefaultAction();
@ -340,7 +340,7 @@ public:
}
uint64 torchGUID;
void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
Unit* ar = GetTarget();
@ -573,4 +573,4 @@ void AddSC_event_midsummer_scripts()
new spell_midsummer_torch_quest();
new spell_midsummer_fling_torch();
new spell_midsummer_juggling_torch();
}
}

View file

@ -41,9 +41,9 @@ class npc_jaina_proudmoore : public CreatureScript
public:
npc_jaina_proudmoore() : CreatureScript("npc_jaina_proudmoore") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
hyjalAI* ai = CAST_AI(hyjalAI, creature->AI());
switch (action)
{
@ -66,7 +66,7 @@ public:
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
hyjalAI* ai = CAST_AI(hyjalAI, creature->AI());
if (ai->EventBegun)
@ -75,20 +75,20 @@ public:
uint32 RageEncounter = ai->GetInstanceData(DATA_RAGEWINTERCHILLEVENT);
uint32 AnetheronEncounter = ai->GetInstanceData(DATA_ANETHERONEVENT);
if (RageEncounter == NOT_STARTED)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_BEGIN_ALLY, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_BEGIN_ALLY, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
else if (RageEncounter == DONE && AnetheronEncounter == NOT_STARTED)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_ANETHERON, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_ANETHERON, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
else if (RageEncounter == DONE && AnetheronEncounter == DONE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_RETREAT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_RETREAT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
if (player->IsGameMaster())
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, GOSSIP_ITEM_GM1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
AddGossipItemFor(player, GOSSIP_ICON_TRAINER, GOSSIP_ITEM_GM1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
player->SEND_GOSSIP_MENU(907, creature->GetGUID());
SendGossipMenuFor(player, 907, creature->GetGUID());
return true;
}
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
if (!creature->GetInstanceScript())
return NULL;
@ -120,9 +120,9 @@ class npc_thrall : public CreatureScript
public:
npc_thrall() : CreatureScript("npc_thrall") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
hyjalAI* ai = CAST_AI(hyjalAI, creature->AI());
ai->DeSpawnVeins();//despawn the alliance veins
switch (action)
@ -146,7 +146,7 @@ public:
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
hyjalAI* ai = CAST_AI(hyjalAI, creature->AI());
if (ai->EventBegun)
@ -159,21 +159,21 @@ public:
uint32 KazrogalEvent = ai->GetInstanceData(DATA_KAZROGALEVENT);
uint32 AzgalorEvent = ai->GetInstanceData(DATA_AZGALOREVENT);
if (KazrogalEvent == NOT_STARTED)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_BEGIN_HORDE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_BEGIN_HORDE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
else if (KazrogalEvent == DONE && AzgalorEvent == NOT_STARTED)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_AZGALOR, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_AZGALOR, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
else if (AzgalorEvent == DONE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_RETREAT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_RETREAT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
}
if (player->IsGameMaster())
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, GOSSIP_ITEM_GM1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
AddGossipItemFor(player, GOSSIP_ICON_TRAINER, GOSSIP_ITEM_GM1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
player->SEND_GOSSIP_MENU(907, creature->GetGUID());
SendGossipMenuFor(player, 907, creature->GetGUID());
return true;
}
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
if (!creature->GetInstanceScript())
return NULL;
@ -201,7 +201,7 @@ class npc_tyrande_whisperwind : public CreatureScript
public:
npc_tyrande_whisperwind() : CreatureScript("npc_tyrande_whisperwind") { }
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
if (!creature->GetInstanceScript())
return NULL;
@ -212,9 +212,9 @@ public:
return ai;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_INFO_DEF)
{
ItemPosCountVec dest;
@ -223,20 +223,20 @@ public:
if (Item* item = player->StoreNewItem(dest, ITEM_TEAR_OF_GODDESS, true))
player->SendNewItem(item, 1, true, false, true);
player->SEND_GOSSIP_MENU(907, creature->GetGUID());
SendGossipMenuFor(player, 907, creature->GetGUID());
}
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
hyjalAI* ai = CAST_AI(hyjalAI, creature->AI());
uint32 AzgalorEvent = ai->GetInstanceData(DATA_AZGALOREVENT);
// Only let them get item if Azgalor is dead.
if (AzgalorEvent == DONE && !player->HasItemCount(ITEM_TEAR_OF_GODDESS))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_TYRANDE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
player->SEND_GOSSIP_MENU(907, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_TYRANDE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
SendGossipMenuFor(player, 907, creature->GetGUID());
return true;
}

View file

@ -30,7 +30,7 @@ enum Says
SAY_PHASE201 = 10,
SAY_PHASE203 = 11,
SAY_PHASE205 = 12,
SAY_PHASE208 = 13,
SAY_PHASE208 = 13,
SAY_PHASE209 = 14,
SAY_PHASE210 = 15,
@ -83,7 +83,7 @@ enum Says
SAY_PHASE117 = 1,
//Cityman
SAY_PHASE202 = 0,
SAY_PHASE202 = 0,
//Crazyman
SAY_PHASE204 = 0,
@ -278,7 +278,7 @@ class npc_arthas : public CreatureScript
public:
npc_arthas() : CreatureScript("npc_arthas") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
if (creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP))
{
@ -287,35 +287,35 @@ public:
case GOSSIP_ACTION_INFO_DEF+1:
creature->AI()->DoAction(ACTION_START_CITY);
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
break;
case GOSSIP_ACTION_INFO_DEF+2:
player->PlayerTalkClass->ClearMenus();
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_ARTHAS_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3);
player->SEND_GOSSIP_MENU(GOSSIP_MENU_ARTHAS_3, creature->GetGUID());
ClearGossipMenuFor(player);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_ARTHAS_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3);
SendGossipMenuFor(player, GOSSIP_MENU_ARTHAS_3, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+3:
// Start Town Hall part
creature->AI()->DoAction(ACTION_START_TOWN_HALL);
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
break;
case GOSSIP_ACTION_INFO_DEF+4:
// After killing epoch
creature->AI()->DoAction(ACTION_START_SECRET_PASSAGE);
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
creature->SetTarget(0);
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
break;
case GOSSIP_ACTION_INFO_DEF+5:
creature->AI()->DoAction(ACTION_START_LAST_CITY);
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
break;
case GOSSIP_ACTION_INFO_DEF+6:
creature->AI()->DoAction(ACTION_START_MALGANIS);
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
break;
}
}
@ -323,7 +323,7 @@ public:
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
InstanceScript* pInstance = creature->GetInstanceScript();
if (!pInstance)
@ -332,30 +332,30 @@ public:
switch (pInstance->GetData(DATA_ARTHAS_EVENT))
{
case COS_PROGRESS_FINISHED_INTRO:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_ARTHAS_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->SEND_GOSSIP_MENU(GOSSIP_MENU_ARTHAS_1, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_ARTHAS_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
SendGossipMenuFor(player, GOSSIP_MENU_ARTHAS_1, creature->GetGUID());
break;
case COS_PROGRESS_REACHED_TOWN_HALL:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_ARTHAS_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
player->SEND_GOSSIP_MENU(GOSSIP_MENU_ARTHAS_2, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_ARTHAS_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
SendGossipMenuFor(player, GOSSIP_MENU_ARTHAS_2, creature->GetGUID());
break;
case COS_PROGRESS_KILLED_EPOCH:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_ARTHAS_4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+4);
player->SEND_GOSSIP_MENU(GOSSIP_MENU_ARTHAS_4, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_ARTHAS_4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+4);
SendGossipMenuFor(player, GOSSIP_MENU_ARTHAS_4, creature->GetGUID());
break;
case COS_PROGRESS_LAST_CITY:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_ARTHAS_5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5);
player->SEND_GOSSIP_MENU(GOSSIP_MENU_ARTHAS_5, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_ARTHAS_5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5);
SendGossipMenuFor(player, GOSSIP_MENU_ARTHAS_5, creature->GetGUID());
break;
case COS_PROGRESS_BEFORE_MALGANIS:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_ARTHAS_6, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+6);
player->SEND_GOSSIP_MENU(GOSSIP_MENU_ARTHAS_6, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_ARTHAS_6, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+6);
SendGossipMenuFor(player, GOSSIP_MENU_ARTHAS_6, creature->GetGUID());
break;
}
return true;
}
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_arthasAI(creature);
}
@ -380,31 +380,31 @@ public:
void ScheduleNextEvent(uint32 currentEvent, uint32 time);
void SummonNextWave();
void ReorderInstance(uint32 data);
void EnterCombat(Unit* /*who*/);
void EnterCombat(Unit* /*who*/) override ;
void SendNextWave(uint32 entry);
void SpawnTimeRift();
void JustDied(Unit*)
void JustDied(Unit*) override
{
RemoveEscortState(STATE_ESCORT_ESCORTING);
if (pInstance)
pInstance->SetData(DATA_ARTHAS_REPOSITION, 2);
}
void JustSummoned(Creature* cr)
void JustSummoned(Creature* cr) override
{
summons.Summon(cr);
}
void SummonedCreatureDespawn(Creature* cr) { summons.Despawn(cr); }
void SummonedCreatureDespawn(Creature* cr) override { summons.Despawn(cr); }
void SummonedCreatureDies(Creature* cr, Unit*)
void SummonedCreatureDies(Creature* cr, Unit*) override
{
if (pInstance && pInstance->GetData(DATA_ARTHAS_EVENT) > COS_PROGRESS_FINISHED_INTRO && pInstance->GetData(DATA_ARTHAS_EVENT) < COS_PROGRESS_REACHED_TOWN_HALL)
SendNextWave(cr->GetEntry());
}
void DoAction(int32 param)
void DoAction(int32 param) override
{
if (param == ACTION_START_EVENT)
{
@ -482,7 +482,7 @@ public:
}
}
void Reset()
void Reset() override
{
actionEvents.Reset();
combatEvents.Reset();
@ -503,7 +503,7 @@ public:
}
}
void WaypointReached(uint32 uiPointId)
void WaypointReached(uint32 uiPointId) override
{
switch(uiPointId)
{
@ -652,7 +652,7 @@ public:
}
}
void UpdateAI(uint32 diff)
void UpdateAI(uint32 diff) override
{
npc_escortAI::UpdateAI(diff);
@ -673,7 +673,7 @@ public:
for (int i = 0; i < 3; ++i)
if (Creature *horse = me->SummonCreature(NPC_HORSE_ESCORT, EventPos[EVENT_SRC_HORSE1+i], TEMPSUMMON_DEAD_DESPAWN, 180000))
horse->GetMotionMaster()->MovePoint(0, EventPos[EVENT_DST_HORSE1+i], false);
ScheduleNextEvent(currentEvent, 4000);
break;
case EVENT_ACTION_PHASE1+1:
@ -691,7 +691,7 @@ public:
case EVENT_ACTION_PHASE1+3:
if (Creature* uther = GetEventNpc(NPC_UTHER))
uther->AI()->Talk(SAY_PHASE102);
ScheduleNextEvent(currentEvent, 8000);
break;
case EVENT_ACTION_PHASE1+4:
@ -711,7 +711,7 @@ public:
case EVENT_ACTION_PHASE1+6:
if (Creature* uther = GetEventNpc(NPC_UTHER))
uther->AI()->Talk(SAY_PHASE105);
ScheduleNextEvent(currentEvent, 1000);
break;
case EVENT_ACTION_PHASE1+7:
@ -721,7 +721,7 @@ public:
case EVENT_ACTION_PHASE1+8:
if (Creature* uther = GetEventNpc(NPC_UTHER))
uther->AI()->Talk(SAY_PHASE107);
ScheduleNextEvent(currentEvent, 6000);
break;
case EVENT_ACTION_PHASE1+9:
@ -731,7 +731,7 @@ public:
case EVENT_ACTION_PHASE1+10:
if (Creature* uther = GetEventNpc(NPC_UTHER))
uther->AI()->Talk(SAY_PHASE109);
ScheduleNextEvent(currentEvent, 8000);
break;
case EVENT_ACTION_PHASE1+11:
@ -741,7 +741,7 @@ public:
case EVENT_ACTION_PHASE1+12:
if (Creature* uther = GetEventNpc(NPC_UTHER))
uther->AI()->Talk(SAY_PHASE111);
ScheduleNextEvent(currentEvent, 4000);
break;
case EVENT_ACTION_PHASE1+13:
@ -751,7 +751,7 @@ public:
case EVENT_ACTION_PHASE1+14:
if (Creature* jaina = GetEventNpc(NPC_JAINA))
jaina->AI()->Talk(SAY_PHASE113);
ScheduleNextEvent(currentEvent, 2500);
break;
case EVENT_ACTION_PHASE1+15:
@ -761,7 +761,7 @@ public:
case EVENT_ACTION_PHASE1+16:
if (Creature* uther = GetEventNpc(NPC_UTHER))
uther->AI()->Talk(SAY_PHASE115);
ScheduleNextEvent(currentEvent, 4000);
break;
case EVENT_ACTION_PHASE1+17:
@ -881,7 +881,7 @@ public:
case EVENT_ACTION_PHASE2+5:
if (Creature* malganis = GetEventNpc(NPC_MAL_GANIS))
malganis->AI()->Talk(SAY_PHASE207);
ScheduleNextEvent(currentEvent, 15000);
break;
case EVENT_ACTION_PHASE2+6:
@ -908,7 +908,7 @@ public:
case EVENT_ACTION_PHASE2+8:
if (pInstance)
pInstance->SetData(DATA_START_WAVES, 1);
SummonNextWave();
actionEvents.PopEvent();
break;
@ -1130,7 +1130,7 @@ public:
Talk(SAY_PHASE503);
SetEscortPaused(false);
eventInRun = false;
ScheduleNextEvent(currentEvent, 5000);
ScheduleNextEvent(currentEvent, 5000);
break;
case EVENT_ACTION_PHASE5+2:
me->SetFacingTo(5.28f);
@ -1140,7 +1140,7 @@ public:
pInstance->SetData(DATA_ARTHAS_EVENT, COS_PROGRESS_FINISHED);
if (GameObject* go = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_EXIT_GATE)))
go->SetGoState(GO_STATE_ACTIVE);
if (!me->GetMap()->GetPlayers().isEmpty())
if (Player* player = me->GetMap()->GetPlayers().getFirst()->GetSource())
player->SummonGameObject(DUNGEON_MODE(GO_MALGANIS_CHEST_N, GO_MALGANIS_CHEST_H), 2288.35f, 1498.73f, 128.414f, -0.994837f, 0, 0, 0, 0, 0);
@ -1174,18 +1174,18 @@ public:
case EVENT_COMBAT_HEALTH_CHECK:
if (HealthBelowPct(40))
me->CastSpell(me, SPELL_ARTHAS_HOLY_LIGHT, false);
combatEvents.RepeatEvent(1000);
break;
}
}
DoMeleeAttackIfReady();
}
};
};
Creature* npc_arthas::npc_arthasAI::GetEventNpc(uint32 entry)
{
Creature* npc_arthas::npc_arthasAI::GetEventNpc(uint32 entry)
{
for (SummonList::iterator i = summons.begin(); i != summons.end();)
{
Creature* summon = ObjectAccessor::GetCreature(*me, *i);
@ -1217,7 +1217,7 @@ void npc_arthas::npc_arthasAI::SummonNextWave()
uint32 tableId = waveGroupId;
if (tableId > 4)
tableId--;
for (uint32 i = 0; i < ENCOUNTER_WAVES_MAX_SPAWNS; ++i)
me->SummonCreature(/*entry*/(uint32)WavesLocations[tableId][i][0], WavesLocations[tableId][i][1], WavesLocations[tableId][i][2], WavesLocations[tableId][i][3], WavesLocations[tableId][i][4]);
}
@ -1248,7 +1248,7 @@ void npc_arthas::npc_arthasAI::ReorderInstance(uint32 data)
case COS_PROGRESS_KILLED_SALRAMM:
SetNextWaypoint(12, false);
me->SetReactState(REACT_DEFENSIVE);
if (data == COS_PROGRESS_FINISHED_CITY_INTRO)
{
eventInRun = true;
@ -1400,7 +1400,7 @@ class npc_cos_chromie_start : public CreatureScript
public:
npc_cos_chromie_start() : CreatureScript("npc_cos_chromie_start") { }
bool OnQuestAccept(Player* , Creature* creature, const Quest* pQuest)
bool OnQuestAccept(Player* , Creature* creature, const Quest* pQuest) override
{
if (pQuest->GetQuestId() == QUEST_DISPELLING_ILLUSIONS)
if (InstanceScript* pInstance = creature->GetInstanceScript())
@ -1409,7 +1409,7 @@ class npc_cos_chromie_start : public CreatureScript
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 /*action*/)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 /*action*/) override
{
// final menu id, show crates if hidden and add item if missing
if (player->PlayerTalkClass->GetGossipMenu().GetMenuId() == 9595)
@ -1447,7 +1447,7 @@ class npc_cos_chromie_middle : public CreatureScript
public:
npc_cos_chromie_middle() : CreatureScript("npc_cos_chromie_middle") { }
bool OnQuestAccept(Player* , Creature* creature, const Quest* pQuest)
bool OnQuestAccept(Player* , Creature* creature, const Quest* pQuest) override
{
if (pQuest->GetQuestId() == QUEST_A_ROYAL_ESCORT)
if (InstanceScript* pInstance = creature->GetInstanceScript())
@ -1457,7 +1457,7 @@ class npc_cos_chromie_middle : public CreatureScript
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 /*action*/)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 /*action*/) override
{
if (!creature->GetInstanceScript() || creature->GetInstanceScript()->GetData(DATA_ARTHAS_EVENT) != COS_PROGRESS_CRATES_FOUND)
return true;
@ -1469,7 +1469,7 @@ class npc_cos_chromie_middle : public CreatureScript
return false;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
{
@ -1479,7 +1479,7 @@ class npc_cos_chromie_middle : public CreatureScript
if (!creature->GetInstanceScript() || creature->GetInstanceScript()->GetData(DATA_ARTHAS_EVENT) != COS_PROGRESS_CRATES_FOUND)
return true;
return false;
}
};
@ -1504,7 +1504,7 @@ class npc_cos_stratholme_citizien : public CreatureScript
InstanceScript* pInstance;
uint32 allowTimer;
void Reset()
void Reset()
{
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
locked = false;
@ -1598,7 +1598,7 @@ class npc_cos_stratholme_citizien : public CreatureScript
{
return new npc_cos_stratholme_citizienAI(creature);
}
};
};
void AddSC_culling_of_stratholme()
{

View file

@ -122,7 +122,7 @@ enum Events
EVENT_SET_FACING = 9,
EVENT_KILL_ARMORER = 10,
EVENT_TALK_KILL_ARMORER = 11,
EVENT_DRESSING_KNEEL = 20,
EVENT_DRESSING_ARMOR = 21,
EVENT_DRESSING_STAND = 22,
@ -182,12 +182,12 @@ class npc_thrall_old_hillsbrad : public CreatureScript
public:
npc_thrall_old_hillsbrad() : CreatureScript("npc_thrall_old_hillsbrad") { }
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return GetInstanceAI<npc_thrall_old_hillsbradAI>(creature);
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
InstanceScript* instance = creature->GetInstanceScript();
if (!instance)
@ -206,15 +206,15 @@ public:
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 /*action*/)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 /*action*/) override
{
GossipMenuItemData const* gossipMenuItemData = player->PlayerTalkClass->GetGossipMenu().GetItemData(0);
InstanceScript* instance = creature->GetInstanceScript();
if (!instance || (gossipMenuItemData && gossipMenuItemData->GossipActionMenuId != 0))
return false;
player->PlayerTalkClass->ClearMenus();
player->CLOSE_GOSSIP_MENU();
ClearGossipMenuFor(player);
CloseGossipMenuFor(player);
creature->AI()->DoAction(instance->GetData(DATA_ESCORT_PROGRESS));
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP|UNIT_NPC_FLAG_QUESTGIVER);
@ -228,7 +228,7 @@ public:
instance = creature->GetInstanceScript();
}
void DoAction(int32 param)
void DoAction(int32 param) override
{
switch (param)
{
@ -267,7 +267,7 @@ public:
}
}
void WaypointStart(uint32 waypointId)
void WaypointStart(uint32 waypointId) override
{
switch (waypointId)
{
@ -277,7 +277,7 @@ public:
}
}
void WaypointReached(uint32 waypointId)
void WaypointReached(uint32 waypointId) override
{
switch (waypointId)
{
@ -420,7 +420,7 @@ public:
me->SetSpeed(MOVE_RUN, SPEED_RUNNING);
}
void MovementInform(uint32 type, uint32 point)
void MovementInform(uint32 type, uint32 point) override
{
npc_escortAI::MovementInform(type, point);
if (type == POINT_MOTION_TYPE && point == 0xFFFFFF /*POINT_LAST_POINT*/)
@ -432,7 +432,7 @@ public:
}
}
void EnterCombat(Unit*)
void EnterCombat(Unit*) override
{
combatEvents.Reset();
combatEvents.ScheduleEvent(EVENT_CHECK_HEALTH, 500);
@ -449,7 +449,7 @@ public:
}
}
void Reset()
void Reset() override
{
_mounted = false;
events.Reset();
@ -458,28 +458,29 @@ public:
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP|UNIT_NPC_FLAG_QUESTGIVER);
instance->SetData(DATA_THRALL_REPOSITION, 1);
uint32 data = instance->GetData(DATA_ESCORT_PROGRESS);
if (data >= ENCOUNTER_PROGRESS_THRALL_ARMORED)
ReorderInstance(data);
}
void KilledUnit(Unit*)
void KilledUnit(Unit*) override
{
Talk(SAY_RANDOM_KILL);
}
void JustSummoned(Creature* summon)
void JustSummoned(Creature* summon) override
{
if (summon->GetEntry() == NPC_INFINITE_SLAYER || summon->GetEntry() == NPC_INFINITE_SABOTEUR || summon->GetEntry() == NPC_INFINITE_DEFILER)
summon->GetMotionMaster()->MovePoint(10, 2634.25f, 672.01f, 54.445f);
summons.Summon(summon);
}
void SummonedCreatureDespawn(Creature* summon) { summons.Despawn(summon); }
void SummonedCreatureDies(Creature* summon, Unit*) { summons.Despawn(summon); }
void JustDied(Unit* killer)
void SummonedCreatureDespawn(Creature* summon) override { summons.Despawn(summon); }
void SummonedCreatureDies(Creature* summon, Unit*) override { summons.Despawn(summon); }
void JustDied(Unit* killer) override
{
if (killer == me)
return;
@ -494,7 +495,7 @@ public:
me->SetRespawnTime(DAY);
}
void UpdateAI(uint32 diff)
void UpdateAI(uint32 diff) override
{
npc_escortAI::UpdateAI(diff);
@ -760,7 +761,7 @@ public:
}
}
void UpdateEscortAI(uint32 diff)
void UpdateEscortAI(uint32 diff) override
{
if (!UpdateVictim())
return;
@ -794,7 +795,7 @@ public:
Start(true, true);
SetEscortPaused(true);
SetDespawnAtEnd(false);
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP|UNIT_NPC_FLAG_QUESTGIVER);
if (data < ENCOUNTER_PROGRESS_THRALL_ARMORED)
@ -826,7 +827,7 @@ public:
SetNextWaypoint(61, false);
break;
case ENCOUNTER_PROGRESS_TARETHA_MEET:
SetNextWaypoint(95, false);
SetNextWaypoint(95, false);
if (Creature* Taretha = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_TARETHA_GUID)))
Taretha->SetStandState(UNIT_STAND_STATE_STAND);
break;
@ -848,12 +849,12 @@ class npc_taretha : public CreatureScript
public:
npc_taretha() : CreatureScript("npc_taretha") { }
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return GetInstanceAI<npc_tarethaAI>(creature);
}
bool OnGossipHello(Player* /*player*/, Creature* /*creature*/)
bool OnGossipHello(Player* /*player*/, Creature* /*creature*/) override
{
return true;
}
@ -867,14 +868,14 @@ public:
InstanceScript* instance;
void DoAction(int32 /*param*/)
void DoAction(int32 /*param*/) override
{
me->SetStandState(UNIT_STAND_STATE_STAND);
me->RemoveAllAuras();
Start(false, true);
}
void WaypointReached(uint32 waypointId)
void WaypointReached(uint32 waypointId) override
{
if (waypointId == 7)
{
@ -888,14 +889,14 @@ public:
me->SetVisible(false);
}
void Reset()
void Reset() override
{
me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE);
me->CastSpell(me, SPELL_SHADOW_PRISON, true);
}
void AttackStart(Unit*) { }
void MoveInLineOfSight(Unit*) { }
void AttackStart(Unit*) override { }
void MoveInLineOfSight(Unit*) override { }
};
};

View file

@ -266,22 +266,22 @@ class boss_ossirian : public CreatureScript
class go_ossirian_crystal : public GameObjectScript
{
public:
go_ossirian_crystal() : GameObjectScript("go_ossirian_crystal") { }
public:
go_ossirian_crystal() : GameObjectScript("go_ossirian_crystal") { }
bool OnGossipHello(Player* player, GameObject* /*go*/)
{
InstanceScript* Instance = player->GetInstanceScript();
if (!Instance)
return false;
bool OnGossipHello(Player* player, GameObject* /*go*/) override
{
InstanceScript* Instance = player->GetInstanceScript();
if (!Instance)
return false;
Creature* Ossirian = player->FindNearestCreature(NPC_OSSIRIAN, 30.0f);
if (!Ossirian || Instance->GetBossState(DATA_OSSIRIAN) != IN_PROGRESS)
return false;
Creature* Ossirian = player->FindNearestCreature(NPC_OSSIRIAN, 30.0f);
if (!Ossirian || Instance->GetBossState(DATA_OSSIRIAN) != IN_PROGRESS)
return false;
Ossirian->AI()->DoAction(ACTION_TRIGGER_WEAKNESS);
return true;
}
Ossirian->AI()->DoAction(ACTION_TRIGGER_WEAKNESS);
return true;
}
};
void AddSC_boss_ossirian()

View file

@ -304,24 +304,24 @@ public:
class go_naga_brazier : public GameObjectScript
{
public:
go_naga_brazier() : GameObjectScript("go_naga_brazier") { }
public:
go_naga_brazier() : GameObjectScript("go_naga_brazier") { }
bool OnGossipHello(Player* /*player*/, GameObject* go)
bool OnGossipHello(Player* /*player*/, GameObject* go) override
{
if (Creature* creature = GetClosestCreatureWithEntry(go, NPC_MUGLASH, INTERACTION_DISTANCE*2))
{
if (Creature* creature = GetClosestCreatureWithEntry(go, NPC_MUGLASH, INTERACTION_DISTANCE*2))
if (npc_muglash::npc_muglashAI* pEscortAI = CAST_AI(npc_muglash::npc_muglashAI, creature->AI()))
{
if (npc_muglash::npc_muglashAI* pEscortAI = CAST_AI(npc_muglash::npc_muglashAI, creature->AI()))
{
creature->AI()->Talk(SAY_MUG_BRAZIER_WAIT);
creature->AI()->Talk(SAY_MUG_BRAZIER_WAIT);
pEscortAI->_isBrazierExtinguished = true;
return false;
}
pEscortAI->_isBrazierExtinguished = true;
return false;
}
return true;
}
return true;
}
};
void AddSC_ashenvale()

View file

@ -131,56 +131,56 @@ class npc_loramus_thalipedes : public CreatureScript
public:
npc_loramus_thalipedes() : CreatureScript("npc_loramus_thalipedes") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (action)
{
case GOSSIP_ACTION_INFO_DEF+1:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->AreaExploredOrEventHappens(2744);
break;
case GOSSIP_ACTION_INFO_DEF+2:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SELECT_LT1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 21);
player->SEND_GOSSIP_MENU(1813, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_SELECT_LT1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 21);
SendGossipMenuFor(player, 1813, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+21:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SELECT_LT2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 22);
player->SEND_GOSSIP_MENU(1814, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_SELECT_LT2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 22);
SendGossipMenuFor(player, 1814, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+22:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SELECT_LT3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 23);
player->SEND_GOSSIP_MENU(1815, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_SELECT_LT3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 23);
SendGossipMenuFor(player, 1815, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+23:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SELECT_LT4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 24);
player->SEND_GOSSIP_MENU(1816, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_SELECT_LT4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 24);
SendGossipMenuFor(player, 1816, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+24:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SELECT_LT5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 25);
player->SEND_GOSSIP_MENU(1817, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_SELECT_LT5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 25);
SendGossipMenuFor(player, 1817, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+25:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->AreaExploredOrEventHappens(3141);
break;
}
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
if (player->GetQuestStatus(2744) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_HELLO_LT1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HELLO_LT1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
if (player->GetQuestStatus(3141) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_HELLO_LT2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HELLO_LT2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
@ -282,7 +282,7 @@ public:
{
npc_rizzle_sprysprocketAI(Creature* creature) : ScriptedAI(creature) { }
void Reset()
void Reset() override
{
SpellEscapeTimer = 1300;
TeleportTimer = 3500;
@ -299,9 +299,9 @@ public:
Reached = false;
}
void EnterCombat(Unit* /*who*/) { }
void EnterCombat(Unit* /*who*/) override { }
void AttackStart(Unit* who)
void AttackStart(Unit* who) override
{
if (!who || PlayerGUID)
return;
@ -317,15 +317,15 @@ public:
}
}
void sGossipSelect(Player* player, uint32 /*sender*/, uint32 /*action*/)
void sGossipSelect(Player* player, uint32 /*sender*/, uint32 /*action*/) override
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
me->CastSpell(player, SPELL_GIVE_SOUTHFURY_MOONSTONE, true);
MustDieTimer = 3000;
MustDie = true;
}
void MovementInform(uint32 type, uint32 id)
void MovementInform(uint32 type, uint32 id) override
{
if (type != POINT_MOTION_TYPE)
return;
@ -340,7 +340,7 @@ public:
ContinueWP = true;
}
void UpdateAI(uint32 diff)
void UpdateAI(uint32 diff) override
{
if (MustDie)
{
@ -438,16 +438,18 @@ public:
bool Reached;
};
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (player->GetQuestStatus(QUEST_CHASING_THE_MOONSTONE) != QUEST_STATUS_INCOMPLETE)
return true;
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_GET_MOONSTONE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
player->SEND_GOSSIP_MENU(10811, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_GET_MOONSTONE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
SendGossipMenuFor(player, 10811, creature->GetGUID());
return true;
}
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_rizzle_sprysprocketAI(creature);
}

View file

@ -206,7 +206,7 @@ public:
void sGossipSelect(Player* player, uint32 /*sender*/, uint32 /*action*/)
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
me->setFaction(FACTION_HOSTILE);
me->Attack(player, true);
}
@ -551,7 +551,7 @@ class go_ravager_cage : public GameObjectScript
public:
go_ravager_cage() : GameObjectScript("go_ravager_cage") { }
bool OnGossipHello(Player* player, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
go->UseDoorOrButton();
if (player->GetQuestStatus(QUEST_STRENGTH_ONE) == QUEST_STATUS_INCOMPLETE)
@ -703,23 +703,23 @@ class npc_stillpine_capitive : public CreatureScript
class go_bristlelimb_cage : public GameObjectScript
{
public:
go_bristlelimb_cage() : GameObjectScript("go_bristlelimb_cage") { }
public:
go_bristlelimb_cage() : GameObjectScript("go_bristlelimb_cage") { }
bool OnGossipHello(Player* player, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
go->SetGoState(GO_STATE_READY);
if (player->GetQuestStatus(QUEST_THE_PROPHECY_OF_AKIDA) == QUEST_STATUS_INCOMPLETE)
{
go->SetGoState(GO_STATE_READY);
if (player->GetQuestStatus(QUEST_THE_PROPHECY_OF_AKIDA) == QUEST_STATUS_INCOMPLETE)
if (Creature* capitive = go->FindNearestCreature(NPC_STILLPINE_CAPITIVE, 5.0f, true))
{
if (Creature* capitive = go->FindNearestCreature(NPC_STILLPINE_CAPITIVE, 5.0f, true))
{
go->ResetDoorOrButton();
CAST_AI(npc_stillpine_capitive::npc_stillpine_capitiveAI, capitive->AI())->StartMoving(player);
return false;
}
go->ResetDoorOrButton();
CAST_AI(npc_stillpine_capitive::npc_stillpine_capitiveAI, capitive->AI())->StartMoving(player);
return false;
}
return true;
}
return true;
}
};
void AddSC_azuremyst_isle()

View file

@ -439,10 +439,9 @@ public:
{
npc_threshwackonatorAI(Creature* creature) : FollowerAI(creature) { }
void Reset() { }
void MoveInLineOfSight(Unit* who)
void Reset() override { }
void MoveInLineOfSight(Unit* who) override
{
FollowerAI::MoveInLineOfSight(who);
@ -467,12 +466,12 @@ public:
}
};
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_INFO_DEF+1)
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
if (npc_threshwackonatorAI* pThreshAI = CAST_AI(npc_threshwackonator::npc_threshwackonatorAI, creature->AI()))
{
@ -484,16 +483,16 @@ public:
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (player->GetQuestStatus(QUEST_GYROMAST_REV) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_INSERT_KEY, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_INSERT_KEY, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_threshwackonatorAI(creature);
}

View file

@ -178,7 +178,7 @@ class npc_cork_gizelton : public CreatureScript
{
if (Creature* summon = ObjectAccessor::GetCreature(*me, summons[i]))
summon->DespawnOrUnsummon();
summons[i] = 0;
}
}
@ -198,7 +198,7 @@ class npc_cork_gizelton : public CreatureScript
summons[1] = cr->GetGUID();
if ((cr = me->SummonCreature(NPC_CARAVAN_KODO, *me)))
summons[2] = cr->GetGUID();
SummonsFollow();
}
@ -442,12 +442,12 @@ public:
{
npc_aged_dying_ancient_kodoAI(Creature* creature) : ScriptedAI(creature) {}
void JustRespawned()
void JustRespawned() override
{
me->UpdateEntry(RAND(NPC_AGED_KODO, NPC_DYING_KODO, NPC_ANCIENT_KODO), NULL, false);
}
void MoveInLineOfSight(Unit* who)
void MoveInLineOfSight(Unit* who) override
{
if (who->GetEntry() == NPC_SMEED && me->IsWithinDistInMap(who, 10.0f) && !me->HasAura(SPELL_KODO_KOMBO_GOSSIP))
{
@ -460,7 +460,7 @@ public:
}
}
void SpellHit(Unit* caster, SpellInfo const* spell)
void SpellHit(Unit* caster, SpellInfo const* spell) override
{
if (spell->Id == SPELL_KODO_KOMBO_ITEM)
{
@ -483,7 +483,7 @@ public:
}
};
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (player->HasAura(SPELL_KODO_KOMBO_PLAYER_BUFF) && creature->HasAura(SPELL_KODO_KOMBO_DESPAWN_BUFF))
{
@ -491,11 +491,11 @@ public:
player->RemoveAurasDueToSpell(SPELL_KODO_KOMBO_PLAYER_BUFF);
}
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_aged_dying_ancient_kodoAI(creature);
}
@ -592,7 +592,7 @@ class go_demon_portal : public GameObjectScript
public:
go_demon_portal() : GameObjectScript("go_demon_portal") { }
bool OnGossipHello(Player* player, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
if (player->GetQuestStatus(QUEST_PORTAL_OF_THE_LEGION) == QUEST_STATUS_INCOMPLETE && !go->FindNearestCreature(NPC_DEMON_GUARDIAN, 5.0f, true))
{

View file

@ -43,26 +43,26 @@ class npc_lady_jaina_proudmoore : public CreatureScript
public:
npc_lady_jaina_proudmoore() : CreatureScript("npc_lady_jaina_proudmoore") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_SENDER_INFO)
{
player->SEND_GOSSIP_MENU(7012, creature->GetGUID());
SendGossipMenuFor(player, 7012, creature->GetGUID());
player->CastSpell(player, SPELL_JAINAS_AUTOGRAPH, false);
}
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
if (player->GetQuestStatus(QUEST_JAINAS_AUTOGRAPH) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_JAINA, GOSSIP_SENDER_MAIN, GOSSIP_SENDER_INFO);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_JAINA, GOSSIP_SENDER_MAIN, GOSSIP_SENDER_INFO);
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
@ -83,27 +83,27 @@ class npc_nat_pagle : public CreatureScript
public:
npc_nat_pagle() : CreatureScript("npc_nat_pagle") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_TRADE)
player->GetSession()->SendListInventory(creature->GetGUID());
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
if (creature->IsVendor() && player->GetQuestRewardStatus(QUEST_NATS_MEASURING_TAPE))
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
player->SEND_GOSSIP_MENU(7640, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
SendGossipMenuFor(player, 7640, creature->GetGUID());
}
else
player->SEND_GOSSIP_MENU(7638, creature->GetGUID());
SendGossipMenuFor(player, 7638, creature->GetGUID());
return true;
}

View file

@ -42,18 +42,18 @@ class npcs_riverbreeze_and_silversky : public CreatureScript
public:
npcs_riverbreeze_and_silversky() : CreatureScript("npcs_riverbreeze_and_silversky") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_INFO_DEF+1)
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
creature->CastSpell(player, SPELL_CENARION_BEACON, false);
}
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
@ -64,24 +64,24 @@ public:
{
if (player->GetQuestRewardStatus(QUEST_CLEASING_FELWOOD_A))
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_BEACON, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->SEND_GOSSIP_MENU(2848, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_BEACON, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
SendGossipMenuFor(player, 2848, creature->GetGUID());
} else if (player->GetTeamId() == TEAM_HORDE)
player->SEND_GOSSIP_MENU(2845, creature->GetGUID());
SendGossipMenuFor(player, 2845, creature->GetGUID());
else
player->SEND_GOSSIP_MENU(2844, creature->GetGUID());
SendGossipMenuFor(player, 2844, creature->GetGUID());
}
if (creatureId == NPC_MAYBESS_RIVERBREEZE)
{
if (player->GetQuestRewardStatus(QUEST_CLEASING_FELWOOD_H))
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_BEACON, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->SEND_GOSSIP_MENU(2849, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_BEACON, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
SendGossipMenuFor(player, 2849, creature->GetGUID());
} else if (player->GetTeamId() == TEAM_ALLIANCE)
player->SEND_GOSSIP_MENU(2843, creature->GetGUID());
SendGossipMenuFor(player, 2843, creature->GetGUID());
else
player->SEND_GOSSIP_MENU(2842, creature->GetGUID());
SendGossipMenuFor(player, 2842, creature->GetGUID());
}
return true;

View file

@ -30,28 +30,28 @@ class npc_gregan_brewspewer : public CreatureScript
public:
npc_gregan_brewspewer() : CreatureScript("npc_gregan_brewspewer") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_INFO_DEF+1)
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
player->SEND_GOSSIP_MENU(2434, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
SendGossipMenuFor(player, 2434, creature->GetGUID());
}
if (action == GOSSIP_ACTION_TRADE)
player->GetSession()->SendListInventory(creature->GetGUID());
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
if (creature->IsVendor() && player->GetQuestStatus(3909) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_HELLO, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HELLO, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->SEND_GOSSIP_MENU(2433, creature->GetGUID());
SendGossipMenuFor(player, 2433, creature->GetGUID());
return true;
}

View file

@ -50,45 +50,45 @@ class npc_bunthen_plainswind : public CreatureScript
public:
npc_bunthen_plainswind() : CreatureScript("npc_bunthen_plainswind") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (action)
{
case GOSSIP_ACTION_INFO_DEF + 1:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
if (player->getClass() == CLASS_DRUID && player->GetTeamId() == TEAM_HORDE)
player->ActivateTaxiPathTo(TAXI_PATH_ID_HORDE);
break;
case GOSSIP_ACTION_INFO_DEF + 2:
player->SEND_GOSSIP_MENU(5373, creature->GetGUID());
SendGossipMenuFor(player, 5373, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 3:
player->SEND_GOSSIP_MENU(5376, creature->GetGUID());
SendGossipMenuFor(player, 5376, creature->GetGUID());
break;
}
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (player->getClass() != CLASS_DRUID)
player->SEND_GOSSIP_MENU(4916, creature->GetGUID());
SendGossipMenuFor(player, 4916, creature->GetGUID());
else if (player->GetTeamId() != TEAM_HORDE)
{
if (player->GetQuestStatus(QUEST_SEA_LION_ALLY) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_AQ_END, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_AQ_END, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
player->SEND_GOSSIP_MENU(4917, creature->GetGUID());
SendGossipMenuFor(player, 4917, creature->GetGUID());
}
else if (player->getClass() == CLASS_DRUID && player->GetTeamId() == TEAM_HORDE)
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_THUNDER, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_THUNDER, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
if (player->GetQuestStatus(QUEST_SEA_LION_HORDE) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_AQ_END, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_AQ_END, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
player->SEND_GOSSIP_MENU(4918, creature->GetGUID());
SendGossipMenuFor(player, 4918, creature->GetGUID());
}
return true;
}
@ -109,25 +109,25 @@ class npc_great_bear_spirit : public CreatureScript
public:
npc_great_bear_spirit() : CreatureScript("npc_great_bear_spirit") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (action)
{
case GOSSIP_ACTION_INFO_DEF:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_BEAR2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
player->SEND_GOSSIP_MENU(4721, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_BEAR2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
SendGossipMenuFor(player, 4721, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 1:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_BEAR3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
player->SEND_GOSSIP_MENU(4733, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_BEAR3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
SendGossipMenuFor(player, 4733, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 2:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_BEAR4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
player->SEND_GOSSIP_MENU(4734, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_BEAR4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
SendGossipMenuFor(player, 4734, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 3:
player->SEND_GOSSIP_MENU(4735, creature->GetGUID());
SendGossipMenuFor(player, 4735, creature->GetGUID());
if (player->GetQuestStatus(5929) == QUEST_STATUS_INCOMPLETE)
player->AreaExploredOrEventHappens(5929);
if (player->GetQuestStatus(5930) == QUEST_STATUS_INCOMPLETE)
@ -137,16 +137,16 @@ public:
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
//ally or horde quest
if (player->GetQuestStatus(5929) == QUEST_STATUS_INCOMPLETE || player->GetQuestStatus(5930) == QUEST_STATUS_INCOMPLETE)
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_BEAR1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
player->SEND_GOSSIP_MENU(4719, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_BEAR1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
SendGossipMenuFor(player, 4719, creature->GetGUID());
}
else
player->SEND_GOSSIP_MENU(4718, creature->GetGUID());
SendGossipMenuFor(player, 4718, creature->GetGUID());
return true;
}
@ -165,45 +165,45 @@ class npc_silva_filnaveth : public CreatureScript
public:
npc_silva_filnaveth() : CreatureScript("npc_silva_filnaveth") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (action)
{
case GOSSIP_ACTION_INFO_DEF + 1:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
if (player->getClass() == CLASS_DRUID && player->GetTeamId() == TEAM_ALLIANCE)
player->ActivateTaxiPathTo(TAXI_PATH_ID_ALLY);
break;
case GOSSIP_ACTION_INFO_DEF + 2:
player->SEND_GOSSIP_MENU(5374, creature->GetGUID());
SendGossipMenuFor(player, 5374, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 3:
player->SEND_GOSSIP_MENU(5375, creature->GetGUID());
SendGossipMenuFor(player, 5375, creature->GetGUID());
break;
}
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (player->getClass() != CLASS_DRUID)
player->SEND_GOSSIP_MENU(4913, creature->GetGUID());
SendGossipMenuFor(player, 4913, creature->GetGUID());
else if (player->GetTeamId() != TEAM_ALLIANCE)
{
if (player->GetQuestStatus(QUEST_SEA_LION_HORDE) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_AQ_AGI, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_AQ_AGI, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
player->SEND_GOSSIP_MENU(4915, creature->GetGUID());
SendGossipMenuFor(player, 4915, creature->GetGUID());
}
else if (player->getClass() == CLASS_DRUID && player->GetTeamId() == TEAM_ALLIANCE)
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_RUTHERAN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_RUTHERAN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
if (player->GetQuestStatus(QUEST_SEA_LION_ALLY) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_AQ_AGI, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_AQ_AGI, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
player->SEND_GOSSIP_MENU(4914, creature->GetGUID());
SendGossipMenuFor(player, 4914, creature->GetGUID());
}
return true;
}

View file

@ -143,56 +143,56 @@ class npc_thrall_warchief : public CreatureScript
public:
npc_thrall_warchief() : CreatureScript("npc_thrall_warchief") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (action)
{
case GOSSIP_ACTION_INFO_DEF+1:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_STW1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
player->SEND_GOSSIP_MENU(5733, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_STW1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
SendGossipMenuFor(player, 5733, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+2:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_STW2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3);
player->SEND_GOSSIP_MENU(5734, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_STW2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3);
SendGossipMenuFor(player, 5734, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+3:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_STW3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+4);
player->SEND_GOSSIP_MENU(5735, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_STW3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+4);
SendGossipMenuFor(player, 5735, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+4:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_STW4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5);
player->SEND_GOSSIP_MENU(5736, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_STW4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5);
SendGossipMenuFor(player, 5736, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+5:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_STW5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+6);
player->SEND_GOSSIP_MENU(5737, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_STW5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+6);
SendGossipMenuFor(player, 5737, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+6:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_STW6, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+7);
player->SEND_GOSSIP_MENU(5738, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_STW6, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+7);
SendGossipMenuFor(player, 5738, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+7:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->AreaExploredOrEventHappens(QUEST_6566);
break;
}
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
if (player->GetQuestStatus(QUEST_6566) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_HTW, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HTW, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_thrall_warchiefAI(creature);
}
@ -204,15 +204,15 @@ public:
uint32 ChainLightningTimer;
uint32 ShockTimer;
void Reset()
void Reset() override
{
ChainLightningTimer = 2000;
ShockTimer = 8000;
}
void EnterCombat(Unit* /*who*/) { }
void EnterCombat(Unit* /*who*/) override { }
void UpdateAI(uint32 diff)
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
return;
@ -232,7 +232,6 @@ public:
DoMeleeAttackIfReady();
}
};
};
void AddSC_orgrimmar()

View file

@ -57,63 +57,63 @@ class npcs_rutgar_and_frankal : public CreatureScript
public:
npcs_rutgar_and_frankal() : CreatureScript("npcs_rutgar_and_frankal") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (action)
{
case GOSSIP_ACTION_INFO_DEF:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
player->SEND_GOSSIP_MENU(7755, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
SendGossipMenuFor(player, 7755, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 1:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
player->SEND_GOSSIP_MENU(7756, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
SendGossipMenuFor(player, 7756, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 2:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
player->SEND_GOSSIP_MENU(7757, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
SendGossipMenuFor(player, 7757, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 3:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
player->SEND_GOSSIP_MENU(7758, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
SendGossipMenuFor(player, 7758, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 4:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM6, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
player->SEND_GOSSIP_MENU(7759, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM6, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
SendGossipMenuFor(player, 7759, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 5:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM7, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6);
player->SEND_GOSSIP_MENU(7760, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM7, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6);
SendGossipMenuFor(player, 7760, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 6:
player->SEND_GOSSIP_MENU(7761, creature->GetGUID());
SendGossipMenuFor(player, 7761, creature->GetGUID());
//'kill' our trigger to update quest status
player->KilledMonsterCredit(TRIGGER_RUTGAR, 0);
break;
case GOSSIP_ACTION_INFO_DEF + 9:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM11, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 11);
player->SEND_GOSSIP_MENU(7762, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM11, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 11);
SendGossipMenuFor(player, 7762, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 10:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM12, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 11);
player->SEND_GOSSIP_MENU(7763, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM12, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 11);
SendGossipMenuFor(player, 7763, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 11:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM13, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 12);
player->SEND_GOSSIP_MENU(7764, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM13, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 12);
SendGossipMenuFor(player, 7764, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 12:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM14, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 13);
player->SEND_GOSSIP_MENU(7765, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM14, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 13);
SendGossipMenuFor(player, 7765, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 13:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM15, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 14);
player->SEND_GOSSIP_MENU(7766, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM15, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 14);
SendGossipMenuFor(player, 7766, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 14:
player->SEND_GOSSIP_MENU(7767, creature->GetGUID());
SendGossipMenuFor(player, 7767, creature->GetGUID());
//'kill' our trigger to update quest status
player->KilledMonsterCredit(TRIGGER_FRANKAL, 0);
break;
@ -121,7 +121,7 @@ public:
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
@ -129,14 +129,14 @@ public:
if (player->GetQuestStatus(8304) == QUEST_STATUS_INCOMPLETE &&
creature->GetEntry() == 15170 &&
!player->GetReqKillOrCastCurrentCount(8304, TRIGGER_RUTGAR))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
if (player->GetQuestStatus(8304) == QUEST_STATUS_INCOMPLETE &&
creature->GetEntry() == 15171 &&
player->GetReqKillOrCastCurrentCount(8304, TRIGGER_RUTGAR))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+9);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+9);
player->SEND_GOSSIP_MENU(7754, creature->GetGUID());
SendGossipMenuFor(player, 7754, creature->GetGUID());
return true;
}
@ -1299,7 +1299,7 @@ class go_wind_stone : public GameObjectScript
}
public:
bool OnGossipHello(Player* player, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
uint8 rank = GetPlayerRank(player);
@ -1309,7 +1309,7 @@ class go_wind_stone : public GameObjectScript
case GOSSIPID_LESSER_WS:
{
if (rank >= 1) // 1 or 2 or 3
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_TEMPLAR_RANDOM, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_TEMPLAR_RANDOM, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
else
{
go->CastSpell(player, SPELL_PUNISHMENT);
@ -1318,19 +1318,19 @@ class go_wind_stone : public GameObjectScript
uint8 item = GetItems(player, TEMPLAR);
if (item & FIRE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_TEMPLAR_FIRE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_TEMPLAR_FIRE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
if (item & WATER)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_TEMPLAR_WATER, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_TEMPLAR_WATER, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
if (item & EARTH)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_TEMPLAR_EARTH, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_TEMPLAR_EARTH, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
if (item & AIR)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_TEMPLAR_AIR, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_TEMPLAR_AIR, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
break;
}
case GOSSIPID_WS:
{
if (rank >= 2) // 2 or 3
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_DUKE_RANDOM, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_DUKE_RANDOM, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6);
else
{
go->CastSpell(player, SPELL_PUNISHMENT);
@ -1339,19 +1339,19 @@ class go_wind_stone : public GameObjectScript
uint8 item = GetItems(player, DUKE);
if (item & FIRE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_DUKE_FIRE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 7);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_DUKE_FIRE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 7);
if (item & WATER)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_DUKE_WATER, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 8);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_DUKE_WATER, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 8);
if (item & EARTH)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_DUKE_EARTH, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 9);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_DUKE_EARTH, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 9);
if (item & AIR)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_DUKE_AIR, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 10);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_DUKE_AIR, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 10);
break;
}
case GOSSIPID_GREATER_WS:
{
if (rank == 3) // 3
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ROYAL_RANDOM, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 11);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ROYAL_RANDOM, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 11);
else
{
go->CastSpell(player, SPELL_PUNISHMENT);
@ -1360,26 +1360,26 @@ class go_wind_stone : public GameObjectScript
uint8 item = GetItems(player, ROYAL);
if (item & FIRE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ROYAL_FIRE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 12);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ROYAL_FIRE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 12);
if (item & WATER)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ROYAL_WATER, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 13);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ROYAL_WATER, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 13);
if (item & EARTH)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ROYAL_EARTH, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 14);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ROYAL_EARTH, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 14);
if (item & AIR)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ROYAL_AIR, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 15);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ROYAL_AIR, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 15);
break;
}
default:
break;
}
player->SEND_GOSSIP_MENU(player->GetGossipTextId(gossipId, go), go->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(gossipId, go), go->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, GameObject* go, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, GameObject* go, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
player->PlayerTalkClass->SendCloseGossip();
switch (action)

View file

@ -37,40 +37,40 @@ class npc_braug_dimspirit : public CreatureScript
public:
npc_braug_dimspirit() : CreatureScript("npc_braug_dimspirit") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_INFO_DEF+1)
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
creature->CastSpell(player, 6766, false);
}
if (action == GOSSIP_ACTION_INFO_DEF+2)
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->AreaExploredOrEventHappens(6627);
}
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
if (player->GetQuestStatus(6627) == QUEST_STATUS_INCOMPLETE)
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_HBD1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_HBD2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_HBD3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_HBD4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_HBD5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HBD1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HBD2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HBD3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HBD4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HBD5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->SEND_GOSSIP_MENU(5820, creature->GetGUID());
SendGossipMenuFor(player, 5820, creature->GetGUID());
}
else
player->SEND_GOSSIP_MENU(5819, creature->GetGUID());
SendGossipMenuFor(player, 5819, creature->GetGUID());
return true;
}

View file

@ -279,7 +279,7 @@ class npc_steward_of_time : public CreatureScript
public:
npc_steward_of_time() : CreatureScript("npc_steward_of_time") { }
bool OnQuestAccept(Player* player, Creature* /*creature*/, Quest const* quest)
bool OnQuestAccept(Player* player, Creature* /*creature*/, Quest const* quest) override
{
if (quest->GetQuestId() == 10279) //Quest: To The Master's Lair
player->CastSpell(player, 34891, true); //(Flight through Caverns)
@ -287,27 +287,27 @@ public:
return false;
}
bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_INFO_DEF + 1)
player->CastSpell(player, 34891, true); //(Flight through Caverns)
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
if (player->GetQuestStatus(10279) == QUEST_STATUS_INCOMPLETE || player->GetQuestRewardStatus(10279))
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_FLIGHT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
player->SEND_GOSSIP_MENU(9978, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_FLIGHT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
SendGossipMenuFor(player, 9978, creature->GetGUID());
}
else
player->SEND_GOSSIP_MENU(9977, creature->GetGUID());
SendGossipMenuFor(player, 9977, creature->GetGUID());
return true;
}
@ -330,48 +330,48 @@ class npc_stone_watcher_of_norgannon : public CreatureScript
public:
npc_stone_watcher_of_norgannon() : CreatureScript("npc_stone_watcher_of_norgannon") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (action)
{
case GOSSIP_ACTION_INFO_DEF:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_NORGANNON_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->SEND_GOSSIP_MENU(1675, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_NORGANNON_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
SendGossipMenuFor(player, 1675, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+1:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_NORGANNON_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
player->SEND_GOSSIP_MENU(1676, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_NORGANNON_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
SendGossipMenuFor(player, 1676, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+2:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_NORGANNON_4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3);
player->SEND_GOSSIP_MENU(1677, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_NORGANNON_4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3);
SendGossipMenuFor(player, 1677, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+3:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_NORGANNON_5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+4);
player->SEND_GOSSIP_MENU(1678, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_NORGANNON_5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+4);
SendGossipMenuFor(player, 1678, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+4:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_NORGANNON_6, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5);
player->SEND_GOSSIP_MENU(1679, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_NORGANNON_6, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5);
SendGossipMenuFor(player, 1679, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+5:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->AreaExploredOrEventHappens(2954);
break;
}
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
if (player->GetQuestStatus(2954) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_NORGANNON_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_NORGANNON_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
player->SEND_GOSSIP_MENU(1674, creature->GetGUID());
SendGossipMenuFor(player, 1674, creature->GetGUID());
return true;
}

View file

@ -43,23 +43,23 @@ class npc_beaten_corpse : public CreatureScript
public:
npc_beaten_corpse() : CreatureScript("npc_beaten_corpse") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_INFO_DEF +1)
{
player->SEND_GOSSIP_MENU(3558, creature->GetGUID());
SendGossipMenuFor(player, 3558, creature->GetGUID());
player->TalkedToCreature(creature->GetEntry(), creature->GetGUID());
}
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (player->GetQuestStatus(QUEST_LOST_IN_BATTLE) == QUEST_STATUS_INCOMPLETE || player->GetQuestStatus(QUEST_LOST_IN_BATTLE) == QUEST_STATUS_COMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_CORPSE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_CORPSE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->SEND_GOSSIP_MENU(3557, creature->GetGUID());
SendGossipMenuFor(player, 3557, creature->GetGUID());
return true;
}

View file

@ -282,30 +282,30 @@ class npc_plucky : public CreatureScript
public:
npc_plucky() : CreatureScript("npc_plucky") { }
bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (action)
{
case GOSSIP_ACTION_INFO_DEF+1:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->CompleteQuest(QUEST_SCOOP);
break;
}
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (player->GetQuestStatus(QUEST_SCOOP) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_P, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_P, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->SEND_GOSSIP_MENU(738, creature->GetGUID());
SendGossipMenuFor(player, 738, creature->GetGUID());
return true;
}
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_pluckyAI(creature);
}
@ -317,7 +317,7 @@ public:
uint32 NormFaction;
uint32 ResetTimer;
void Reset()
void Reset() override
{
ResetTimer = 120000;
@ -330,7 +330,7 @@ public:
DoCast(me, SPELL_PLUCKY_CHICKEN, false);
}
void ReceiveEmote(Player* player, uint32 TextEmote)
void ReceiveEmote(Player* player, uint32 TextEmote) override
{
if (player->GetQuestStatus(QUEST_SCOOP) == QUEST_STATUS_INCOMPLETE)
{
@ -356,7 +356,7 @@ public:
}
}
void UpdateAI(uint32 Diff)
void UpdateAI(uint32 Diff) override
{
if (me->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP))
{
@ -392,7 +392,7 @@ class go_panther_cage : public GameObjectScript
public:
go_panther_cage() : GameObjectScript("go_panther_cage") { }
bool OnGossipHello(Player* player, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
go->UseDoorOrButton();
if (player->GetQuestStatus(5151) == QUEST_STATUS_INCOMPLETE)

View file

@ -36,31 +36,31 @@ class npc_cairne_bloodhoof : public CreatureScript
public:
npc_cairne_bloodhoof() : CreatureScript("npc_cairne_bloodhoof") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_SENDER_INFO)
{
player->CastSpell(player, 23123, false);
player->SEND_GOSSIP_MENU(7014, creature->GetGUID());
SendGossipMenuFor(player, 7014, creature->GetGUID());
}
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
if (player->GetQuestStatus(925) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_HCB, GOSSIP_SENDER_MAIN, GOSSIP_SENDER_INFO);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HCB, GOSSIP_SENDER_MAIN, GOSSIP_SENDER_INFO);
player->SEND_GOSSIP_MENU(7013, creature->GetGUID());
SendGossipMenuFor(player, 7013, creature->GetGUID());
return true;
}
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_cairne_bloodhoofAI(creature);
}
@ -75,7 +75,7 @@ public:
uint32 ThunderclapTimer;
uint32 UppercutTimer;
void Reset()
void Reset() override
{
BerserkerChargeTimer = 30000;
CleaveTimer = 5000;
@ -84,9 +84,9 @@ public:
UppercutTimer = 10000;
}
void EnterCombat(Unit* /*who*/) { }
void EnterCombat(Unit* /*who*/) override { }
void UpdateAI(uint32 diff)
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
return;
@ -125,7 +125,6 @@ public:
DoMeleeAttackIfReady();
}
};
};
void AddSC_thunder_bluff()

View file

@ -211,24 +211,24 @@ class npc_rivern_frostwind : public CreatureScript
public:
npc_rivern_frostwind() : CreatureScript("npc_rivern_frostwind") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_TRADE)
player->GetSession()->SendListInventory(creature->GetGUID());
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
if (creature->IsVendor() && player->GetReputationRank(589) == REP_EXALTED)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
AddGossipItemFor(player, GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
@ -762,7 +762,8 @@ class go_elune_fire : public GameObjectScript
{
public:
go_elune_fire() : GameObjectScript("go_elune_fire") { }
bool OnGossipHello(Player* /*player*/, GameObject* go)
bool OnGossipHello(Player* /*player*/, GameObject* go) override
{
// Check if we are using the torches or the altar
bool isAltar = false;
@ -775,6 +776,7 @@ public:
if (npc_ranshalla::npc_ranshallaAI* escortAI = dynamic_cast<npc_ranshalla::npc_ranshallaAI*>(ranshalla->AI()))
escortAI->DoContinueEscort(isAltar);
}
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
return false;

View file

@ -113,7 +113,7 @@ public:
{
if (pInstance)
pInstance->SetData(DATA_PRINCE_TALDARAM_EVENT, IN_PROGRESS);
Talk(SAY_AGGRO);
ScheduleEvents();
@ -253,7 +253,7 @@ public:
if (vanishTarget && victim->GetGUID() == vanishTarget)
ScheduleEvents();
Talk(SAY_SLAY);
}
};
@ -331,17 +331,17 @@ class go_prince_taldaram_sphere : public GameObjectScript
public:
go_prince_taldaram_sphere() : GameObjectScript("go_prince_taldaram_sphere") { }
bool OnGossipHello(Player * /*pPlayer*/, GameObject *pGO)
bool OnGossipHello(Player * /*pPlayer*/, GameObject *go) override
{
InstanceScript *pInstance = pGO->GetInstanceScript();
InstanceScript *pInstance = go->GetInstanceScript();
if (!pInstance)
return false;
Creature *pPrinceTaldaram = ObjectAccessor::GetCreature(*pGO, pInstance->GetData64(DATA_PRINCE_TALDARAM));
Creature *pPrinceTaldaram = ObjectAccessor::GetCreature(*go, pInstance->GetData64(DATA_PRINCE_TALDARAM));
if (pPrinceTaldaram && pPrinceTaldaram->IsAlive())
{
pGO->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
pGO->SetGoState(GO_STATE_ACTIVE);
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->SetGoState(GO_STATE_ACTIVE);
if (pInstance->GetData(DATA_SPHERE_EVENT) == NOT_STARTED)
{

View file

@ -18,12 +18,12 @@ class npc_announcer_toc5 : public CreatureScript
public:
npc_announcer_toc5() : CreatureScript("npc_announcer_toc5") {}
bool OnGossipHello(Player* pPlayer, Creature* pCreature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (!pCreature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP))
if (!creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP))
return true;
InstanceScript* pInstance = pCreature->GetInstanceScript();
InstanceScript* pInstance = creature->GetInstanceScript();
if (!pInstance)
return true;
@ -31,7 +31,7 @@ public:
switch (pInstance->GetData(DATA_INSTANCE_PROGRESS))
{
case INSTANCE_PROGRESS_INITIAL:
if (!pPlayer->GetVehicle())
if (!player->GetVehicle())
{
if (pInstance->GetData(DATA_TEAMID_IN_INSTANCE) == TEAM_HORDE)
gossipTextId = 15043; //Horde text
@ -41,55 +41,55 @@ public:
else
{
gossipTextId = 14688;
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_START_EVENT1a, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1338);
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_START_EVENT1b, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1341);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_START_EVENT1a, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1338);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_START_EVENT1b, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1341);
}
break;
case INSTANCE_PROGRESS_CHAMPIONS_DEAD:
gossipTextId = 14737;
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_START_EVENT2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1339);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_START_EVENT2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1339);
break;
case INSTANCE_PROGRESS_ARGENT_CHALLENGE_DIED:
gossipTextId = 14738;
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_START_EVENT3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1340);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_START_EVENT3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1340);
break;
default:
return true;
}
pPlayer->SEND_GOSSIP_MENU(gossipTextId, pCreature->GetGUID());
SendGossipMenuFor(player, gossipTextId, creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 /*uiSender*/, uint32 uiAction)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*uiSender*/, uint32 uiAction) override
{
if( !pCreature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP) )
if(!creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP))
return true;
InstanceScript* pInstance = pCreature->GetInstanceScript();
if( !pInstance )
InstanceScript* pInstance = creature->GetInstanceScript();
if(!pInstance)
return true;
if( uiAction == GOSSIP_ACTION_INFO_DEF+1338 || uiAction == GOSSIP_ACTION_INFO_DEF+1341 || uiAction == GOSSIP_ACTION_INFO_DEF+1339 || uiAction == GOSSIP_ACTION_INFO_DEF+1340 )
if(uiAction == GOSSIP_ACTION_INFO_DEF+1338 || uiAction == GOSSIP_ACTION_INFO_DEF+1341 || uiAction == GOSSIP_ACTION_INFO_DEF+1339 || uiAction == GOSSIP_ACTION_INFO_DEF+1340)
{
pInstance->SetData(DATA_ANNOUNCER_GOSSIP_SELECT, (uiAction == GOSSIP_ACTION_INFO_DEF+1341 ? 1 : 0));
pCreature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
}
pPlayer->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
return true;
}
CreatureAI* GetAI(Creature* pCreature) const
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_announcer_toc5AI(pCreature);
return new npc_announcer_toc5AI(creature);
}
struct npc_announcer_toc5AI : public CreatureAI
{
npc_announcer_toc5AI(Creature *pCreature) : CreatureAI(pCreature) {}
npc_announcer_toc5AI(Creature *creature) : CreatureAI(creature) {}
void Reset()
void Reset() override
{
InstanceScript* pInstance = me->GetInstanceScript();
if( !pInstance )
@ -99,13 +99,13 @@ public:
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); // removed during black knight scene
}
void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask)
void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask) override
{
if (damage >= me->GetHealth()) // for bk scene so strangulate doesn't kill him
damage = me->GetHealth()-1;
}
void MovementInform(uint32 type, uint32 /*id*/)
void MovementInform(uint32 type, uint32 /*id*/) override
{
if (type != EFFECT_MOTION_TYPE)
return;
@ -118,7 +118,7 @@ public:
Unit::Kill(me, me); // for bk scene, die after knockback
}
void UpdateAI(uint32 /*diff*/) {}
void UpdateAI(uint32 /*diff*/) override { }
};
};

View file

@ -2436,17 +2436,17 @@ class go_toc_champions_cache : public GameObjectScript
public:
go_toc_champions_cache() : GameObjectScript("go_toc_champions_cache") { }
bool OnGossipHello(Player* plr, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
if (plr->IsGameMaster())
if (player->IsGameMaster())
return false;
if (!go->loot.items.size())
return false;
for( std::vector<LootItem>::iterator itr = go->loot.items.begin(); itr != go->loot.items.end(); ++itr )
for(std::vector<LootItem>::iterator itr = go->loot.items.begin(); itr != go->loot.items.end(); ++itr)
if( ItemTemplate const *iProto = sObjectMgr->GetItemTemplate((*itr).itemid) )
if( ((iProto->Flags2 & ITEM_FLAGS_EXTRA_HORDE_ONLY) && plr->GetTeamId() != TEAM_HORDE) || ((iProto->Flags2 & ITEM_FLAGS_EXTRA_ALLIANCE_ONLY) && plr->GetTeamId() != TEAM_ALLIANCE) )
if( ((iProto->Flags2 & ITEM_FLAGS_EXTRA_HORDE_ONLY) && player->GetTeamId() != TEAM_HORDE) || ((iProto->Flags2 & ITEM_FLAGS_EXTRA_ALLIANCE_ONLY) && player->GetTeamId() != TEAM_ALLIANCE) )
if (!((*itr).is_looted))
{
(*itr).count = 0;

View file

@ -556,7 +556,7 @@ class npc_essence_of_twin : public CreatureScript
public:
npc_essence_of_twin() : CreatureScript("npc_essence_of_twin") { }
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
switch( creature->GetEntry() )
{
@ -655,7 +655,7 @@ public:
default:
break;
}
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
return true;
}
};

View file

@ -21,17 +21,17 @@ class npc_announcer_toc10 : public CreatureScript
public:
npc_announcer_toc10() : CreatureScript("npc_announcer_toc10") { }
bool OnGossipHello(Player* pPlayer, Creature* pCreature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if( !pCreature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP) )
if(!creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP))
return true;
InstanceScript* pInstance = pCreature->GetInstanceScript();
if( !pInstance )
InstanceScript* pInstance = creature->GetInstanceScript();
if(!pInstance)
return true;
uint32 gossipTextId = 0;
switch( pInstance->GetData(TYPE_INSTANCE_PROGRESS) )
switch(pInstance->GetData(TYPE_INSTANCE_PROGRESS))
{
case INSTANCE_PROGRESS_INITIAL:
gossipTextId = MSG_TESTED;
@ -46,33 +46,33 @@ public:
gossipTextId = MSG_CRUSADERS;
break;
case INSTANCE_PROGRESS_DONE:
pCreature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
return true;
default:
return true;
}
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "We are ready!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1337);
pPlayer->SEND_GOSSIP_MENU(gossipTextId, pCreature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, "We are ready!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1337);
SendGossipMenuFor(player, gossipTextId, creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 /*sender*/, uint32 uiAction)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 uiAction) override
{
if( !pCreature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP) )
if( !creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP) )
return true;
InstanceScript* pInstance = pCreature->GetInstanceScript();
InstanceScript* pInstance = creature->GetInstanceScript();
if( !pInstance )
return true;
if( uiAction == GOSSIP_ACTION_INFO_DEF+1337 )
{
pInstance->SetData(TYPE_ANNOUNCER_GOSSIP_SELECT, 0);
pCreature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
}
pPlayer->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
return true;
}
};

View file

@ -42,12 +42,12 @@ public:
EventMap events;
void Reset()
void Reset() override
{
events.Reset();
}
void DoAction(int32 a)
void DoAction(int32 a) override
{
if (a == 1)
if (me->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP))
@ -58,7 +58,7 @@ public:
}
}
void UpdateAI(uint32 diff)
void UpdateAI(uint32 diff) override
{
events.Update(diff);
switch(events.GetEvent())
@ -166,7 +166,7 @@ public:
}
};
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
@ -174,22 +174,22 @@ public:
if (creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP))
{
if (creature->GetEntry() == NPC_JAINA_PART1)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "What would you have of me, my lady?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, "What would you have of me, my lady?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
else
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "What would you have of me, Banshee Queen?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, "What would you have of me, Banshee Queen?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
}
player->SEND_GOSSIP_MENU(15207, creature->GetGUID());
SendGossipMenuFor(player, 15207, creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*uiSender*/, uint32 uiAction)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*uiSender*/, uint32 uiAction) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch(uiAction)
{
case GOSSIP_ACTION_INFO_DEF+1:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
if (creature->AI())
creature->AI()->DoAction(1);
break;
@ -198,7 +198,7 @@ public:
return true;
}
CreatureAI *GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_fos_leaderAI(creature);
}

View file

@ -76,7 +76,7 @@ class npc_hor_leader : public CreatureScript
public:
npc_hor_leader() : CreatureScript("npc_hor_leader") { }
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (!creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP))
return true;
@ -94,24 +94,24 @@ public:
{
QuestStatus status = player->GetQuestStatus(creature->GetEntry() == NPC_SYLVANAS_PART1 ? QUEST_DELIVRANCE_FROM_THE_PIT_H2 : QUEST_DELIVRANCE_FROM_THE_PIT_A2);
if (status == QUEST_STATUS_COMPLETE || status == QUEST_STATUS_REWARDED)
player->ADD_GOSSIP_ITEM(0, "Can you remove the sword?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
AddGossipItemFor(player, 0, "Can you remove the sword?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
// once last quest is completed, she offers this shortcut of the starting event
status = player->GetQuestStatus(creature->GetEntry() == NPC_SYLVANAS_PART1 ? QUEST_WRATH_OF_THE_LICH_KING_H2 : QUEST_WRATH_OF_THE_LICH_KING_A2);
if (status == QUEST_STATUS_COMPLETE || status == QUEST_STATUS_REWARDED)
{
if (creature->GetEntry() == NPC_SYLVANAS_PART1)
player->ADD_GOSSIP_ITEM(0, "Dark Lady, I think I hear Arthas coming. Whatever you're going to do, do it quickly.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
AddGossipItemFor(player, 0, "Dark Lady, I think I hear Arthas coming. Whatever you're going to do, do it quickly.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
else
player->ADD_GOSSIP_ITEM(0, "My Lady, I think I hear Arthas coming. Whatever you're going to do, do it quickly.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
AddGossipItemFor(player, 0, "My Lady, I think I hear Arthas coming. Whatever you're going to do, do it quickly.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
}
}
player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
SendGossipMenuFor(player, DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*uiSender*/, uint32 uiAction)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*uiSender*/, uint32 uiAction) override
{
if (!creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP))
return true;
@ -126,17 +126,17 @@ public:
instance->SetData(DATA_BATTERED_HILT, 1);
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (uiAction)
{
case GOSSIP_ACTION_INFO_DEF+1:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
if (creature->AI())
creature->AI()->DoAction(ACTION_START_INTRO);
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
break;
case GOSSIP_ACTION_INFO_DEF+2:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
if (creature->AI())
creature->AI()->DoAction(ACTION_SKIP_INTRO);
creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
@ -146,7 +146,7 @@ public:
return true;
}
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_hor_leaderAI(creature);
}
@ -166,7 +166,7 @@ public:
bool first;
bool shortver;
void Reset()
void Reset() override
{
shortver = false;
events.Reset();
@ -180,7 +180,7 @@ public:
}
}
void DoAction(int32 actionId)
void DoAction(int32 actionId) override
{
switch(actionId)
{
@ -193,7 +193,7 @@ public:
}
}
void UpdateAI(uint32 diff)
void UpdateAI(uint32 diff) override
{
events.Update(diff);
switch(events.ExecuteEvent())
@ -1452,7 +1452,7 @@ public:
me->SetHealth(me->GetMaxHealth()*3/4);
events.Update(diff);
if (me->IsNonMeleeSpellCast(false, true, true))
return;
@ -1597,12 +1597,12 @@ class npc_hor_leader_second : public CreatureScript
public:
npc_hor_leader_second() : CreatureScript("npc_hor_leader_second") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*uiSender*/, uint32 /*uiAction*/)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*uiSender*/, uint32 /*uiAction*/) override
{
if (!creature->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP))
return true;
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (InstanceScript* pInstance = creature->GetInstanceScript())
if (!pInstance->GetData(DATA_LICH_KING))
@ -1615,7 +1615,7 @@ public:
return true;
}
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_hor_leader_secondAI(creature);
}
@ -1633,13 +1633,13 @@ public:
EventMap events;
uint8 currentStopPoint;
void Reset()
void Reset() override
{
currentStopPoint = 0;
events.Reset();
}
void DoAction(int32 actionId)
void DoAction(int32 actionId) override
{
switch(actionId)
{
@ -1657,7 +1657,7 @@ public:
}
}
void DamageTaken(Unit*, uint32& dmg, DamageEffectType, SpellSchoolMask)
void DamageTaken(Unit*, uint32& dmg, DamageEffectType, SpellSchoolMask) override
{
if (dmg >= me->GetHealth())
dmg = me->GetHealth()-1;
@ -1674,13 +1674,13 @@ public:
me->GetMotionMaster()->MoveSplinePath(&path);
}
void MovementInform(uint32 type, uint32 /*id*/)
void MovementInform(uint32 type, uint32 /*id*/) override
{
if (type == ESCORT_MOTION_TYPE && me->movespline->Finalized())
events.ScheduleEvent(EVENT_SAY_LEADER_STOP_TEXT, 1000);
}
void UpdateAI(uint32 diff)
void UpdateAI(uint32 diff) override
{
events.Update(diff);
switch(events.ExecuteEvent())

View file

@ -515,14 +515,14 @@ class npc_high_overlord_saurfang_icc : public CreatureScript
_instance = me->GetInstanceScript();
}
void Reset()
void Reset() override
{
_events.Reset();
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
me->SetReactState(REACT_PASSIVE);
}
void DoAction(int32 action)
void DoAction(int32 action) override
{
switch (action)
{
@ -551,7 +551,7 @@ class npc_high_overlord_saurfang_icc : public CreatureScript
_events.ScheduleEvent(EVENT_INTRO_HORDE_2, 5000, 0, PHASE_INTRO_H);
_events.ScheduleEvent(EVENT_INTRO_HORDE_3, 18500, 0, PHASE_INTRO_H);
_instance->HandleGameObject(_instance->GetData64(GO_SAURFANG_S_DOOR), true);
if (GameObject* teleporter = ObjectAccessor::GetGameObject(*me, _instance->GetData64(GO_SCOURGE_TRANSPORTER_SAURFANG)))
{
_instance->HandleGameObject(0, false, teleporter);
@ -575,7 +575,7 @@ class npc_high_overlord_saurfang_icc : public CreatureScript
_events.ScheduleEvent(EVENT_OUTRO_HORDE_1, 10000);
_events.ScheduleEvent(EVENT_OUTRO_HORDE_2, 18000);
_events.ScheduleEvent(EVENT_OUTRO_HORDE_3, 24000);*/
}
break;
case ACTION_EVADE:
@ -603,7 +603,7 @@ class npc_high_overlord_saurfang_icc : public CreatureScript
}
}
void SpellHit(Unit* /*caster*/, SpellInfo const* spell)
void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
{
if (spell->Id == SPELL_GRIP_OF_AGONY)
{
@ -612,7 +612,7 @@ class npc_high_overlord_saurfang_icc : public CreatureScript
}
}
void MovementInform(uint32 type, uint32 id)
void MovementInform(uint32 type, uint32 id) override
{
if (type == POINT_MOTION_TYPE)
{
@ -650,7 +650,7 @@ class npc_high_overlord_saurfang_icc : public CreatureScript
}
}
void UpdateAI(uint32 diff)
void UpdateAI(uint32 diff) override
{
_events.Update(diff);
switch (_events.ExecuteEvent())
@ -733,25 +733,25 @@ class npc_high_overlord_saurfang_icc : public CreatureScript
std::list<Creature*> _guardList;
};
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
InstanceScript* instance = creature->GetInstanceScript();
if (instance && instance->GetBossState(DATA_DEATHBRINGER_SAURFANG) != DONE && instance->GetBossState(DATA_DEATHBRINGER_SAURFANG) != IN_PROGRESS)
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "We are ready to go, High Overlord. The Lich King must fall!", 631, -ACTION_START_EVENT);
player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, "We are ready to go, High Overlord. The Lich King must fall!", 631, -ACTION_START_EVENT);
SendGossipMenuFor(player, DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
}
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
InstanceScript* instance = creature->GetInstanceScript();
if (instance && instance->GetBossState(DATA_DEATHBRINGER_SAURFANG) != DONE && instance->GetBossState(DATA_DEATHBRINGER_SAURFANG) != IN_PROGRESS)
{
player->PlayerTalkClass->ClearMenus();
player->CLOSE_GOSSIP_MENU();
ClearGossipMenuFor(player);
CloseGossipMenuFor(player);
if (action == -ACTION_START_EVENT)
creature->AI()->DoAction(ACTION_START_EVENT);
}
@ -759,7 +759,7 @@ class npc_high_overlord_saurfang_icc : public CreatureScript
return true;
}
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return GetIcecrownCitadelAI<npc_high_overlord_saurfangAI>(creature);
}
@ -777,14 +777,14 @@ class npc_muradin_bronzebeard_icc : public CreatureScript
_instance = me->GetInstanceScript();
}
void Reset()
void Reset() override
{
_events.Reset();
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
me->SetReactState(REACT_PASSIVE);
}
void DoAction(int32 action)
void DoAction(int32 action) override
{
switch (action)
{
@ -862,7 +862,7 @@ class npc_muradin_bronzebeard_icc : public CreatureScript
}
}
void SpellHit(Unit* /*caster*/, SpellInfo const* spell)
void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
{
if (spell->Id == SPELL_GRIP_OF_AGONY)
{
@ -871,7 +871,7 @@ class npc_muradin_bronzebeard_icc : public CreatureScript
}
}
void MovementInform(uint32 type, uint32 id)
void MovementInform(uint32 type, uint32 id) override
{
if (type == POINT_MOTION_TYPE)
{
@ -891,7 +891,7 @@ class npc_muradin_bronzebeard_icc : public CreatureScript
}
}
void UpdateAI(uint32 diff)
void UpdateAI(uint32 diff) override
{
_events.Update(diff);
switch (_events.ExecuteEvent())
@ -947,25 +947,25 @@ class npc_muradin_bronzebeard_icc : public CreatureScript
std::list<Creature*> _guardList;
};
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
InstanceScript* instance = creature->GetInstanceScript();
if (instance && instance->GetBossState(DATA_DEATHBRINGER_SAURFANG) != DONE && instance->GetBossState(DATA_DEATHBRINGER_SAURFANG) != IN_PROGRESS)
{
player->ADD_GOSSIP_ITEM(0, "Let it begin...", 631, -ACTION_START_EVENT + 1);
player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
AddGossipItemFor(player, 0, "Let it begin...", 631, -ACTION_START_EVENT + 1);
SendGossipMenuFor(player, DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
}
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
InstanceScript* instance = creature->GetInstanceScript();
if (instance && instance->GetBossState(DATA_DEATHBRINGER_SAURFANG) != DONE && instance->GetBossState(DATA_DEATHBRINGER_SAURFANG) != IN_PROGRESS)
{
player->PlayerTalkClass->ClearMenus();
player->CLOSE_GOSSIP_MENU();
ClearGossipMenuFor(player);
CloseGossipMenuFor(player);
if (action == -ACTION_START_EVENT + 1)
creature->AI()->DoAction(ACTION_START_EVENT);
}
@ -973,7 +973,7 @@ class npc_muradin_bronzebeard_icc : public CreatureScript
return true;
}
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return GetIcecrownCitadelAI<npc_muradin_bronzebeard_iccAI>(creature);
}

View file

@ -1826,7 +1826,7 @@ class npc_alchemist_adrianna : public CreatureScript
public:
npc_alchemist_adrianna() : CreatureScript("npc_alchemist_adrianna") { }
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (InstanceScript* instance = creature->GetInstanceScript())
if (instance->GetBossState(DATA_ROTFACE) == DONE && instance->GetBossState(DATA_FESTERGUT) == DONE && !creature->FindCurrentSpellBySpellId(SPELL_HARVEST_BLIGHT_SPECIMEN) && !creature->FindCurrentSpellBySpellId(SPELL_HARVEST_BLIGHT_SPECIMEN25))
@ -2569,7 +2569,7 @@ public:
return;
events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
@ -2634,7 +2634,7 @@ public:
return;
events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
@ -2689,7 +2689,7 @@ public:
return;
events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
@ -2751,7 +2751,7 @@ public:
return;
events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
@ -2870,7 +2870,7 @@ public:
return;
events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
@ -2916,7 +2916,7 @@ public:
SeveredEssenceSpellInfo sesi_spells[] =
{
{CLASS_SHAMAN, 71938, 5000, 1, 0.0f},
{CLASS_PALADIN, 57767, 8000, 2, 30.0f},
{CLASS_PALADIN, 57767, 8000, 2, 30.0f},
{CLASS_WARLOCK, 71937, 10000, 1, 0.0f},
{CLASS_DEATH_KNIGHT, 49576, 15000, 1, 30.0f},
{CLASS_ROGUE, 71933, 8000, 1, 0.0f},
@ -2993,7 +2993,7 @@ public:
return;
events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
@ -3092,7 +3092,7 @@ public:
return;
events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
@ -3241,7 +3241,7 @@ public:
return;
events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
@ -3273,13 +3273,13 @@ class npc_icc_buff_switcher : public CreatureScript
public:
npc_icc_buff_switcher() : CreatureScript("npc_icc_buff_switcher") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 /*action*/)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 /*action*/) override
{
if ((creature->GetEntry() == NPC_GARROSH_HELLSCREAM && player->PlayerTalkClass->GetGossipMenu().GetMenuId() == 11206) || (creature->GetEntry() == NPC_KING_VARIAN_WRYNN && player->PlayerTalkClass->GetGossipMenu().GetMenuId() == 11204))
{
if (!player->GetGroup() || !player->GetGroup()->isRaidGroup() || !player->GetGroup()->IsLeader(player->GetGUID()))
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
ChatHandler(player->GetSession()).PSendSysMessage("Only the raid leader can turn off the buff.");
return true;
}
@ -3288,7 +3288,7 @@ public:
inst->SetData(DATA_BUFF_AVAILABLE, 0);
if (creature->GetEntry() == NPC_GARROSH_HELLSCREAM)
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
return true;
}
}
@ -3382,7 +3382,7 @@ public:
return;
events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
@ -3571,7 +3571,7 @@ class npc_icc_gauntlet_controller : public CreatureScript
{
if (me->GetDistance(itr->GetSource()) > 100.0f || !itr->GetSource()->IsAlive() || itr->GetSource()->IsGameMaster())
continue;
events.ScheduleEvent(EVENT_CHECK_FIGHT, 1000);
return;
}
@ -3673,7 +3673,7 @@ class npc_icc_putricades_trap : public CreatureScript
{
if (me->GetDistance(itr->GetSource()) > 100.0f || !itr->GetSource()->IsAlive() || itr->GetSource()->IsGameMaster())
continue;
events.ScheduleEvent(EVENT_CHECK_FIGHT, 1000);
return;
}
@ -3726,7 +3726,7 @@ class at_icc_putricide_trap : public AreaTriggerScript
at_icc_putricide_trap() : AreaTriggerScript("at_icc_putricide_trap") { }
bool OnTrigger(Player* player, AreaTrigger const* /*areaTrigger*/)
{
{
if (InstanceScript* instance = player->GetInstanceScript())
if (instance->GetData(DATA_PUTRICIDE_TRAP_STATE) == NOT_STARTED && !player->IsGameMaster())
if (Creature* trap = ObjectAccessor::GetCreature(*player, instance->GetData64(NPC_PUTRICADES_TRAP)))

View file

@ -16,32 +16,33 @@ class icecrown_citadel_teleport : public GameObjectScript
public:
icecrown_citadel_teleport() : GameObjectScript("icecrown_citadel_teleport") { }
bool OnGossipHello(Player* player, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
if (go->GetEntry() != GO_SCOURGE_TRANSPORTER_FIRST)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to Light's Hammer.", GOSSIP_SENDER_ICC_PORT, LIGHT_S_HAMMER_TELEPORT); // M_PI + M_PI/6
AddGossipItemFor(player, GOSSIP_ICON_CHAT, "Teleport to Light's Hammer.", GOSSIP_SENDER_ICC_PORT, LIGHT_S_HAMMER_TELEPORT); // M_PI + M_PI/6
if (InstanceScript* instance = go->GetInstanceScript())
{
if (instance->GetBossState(DATA_LORD_MARROWGAR) == DONE && go->GetEntry() != 202245)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Oratory of the Damned.", GOSSIP_SENDER_ICC_PORT, ORATORY_OF_THE_DAMNED_TELEPORT); // M_PI + M_PI/6
AddGossipItemFor(player, GOSSIP_ICON_CHAT, "Teleport to the Oratory of the Damned.", GOSSIP_SENDER_ICC_PORT, ORATORY_OF_THE_DAMNED_TELEPORT); // M_PI + M_PI/6
if (instance->GetBossState(DATA_LADY_DEATHWHISPER) == DONE && go->GetEntry() != 202243)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Rampart of Skulls.", GOSSIP_SENDER_ICC_PORT, RAMPART_OF_SKULLS_TELEPORT); // M_PI/6
AddGossipItemFor(player, GOSSIP_ICON_CHAT, "Teleport to the Rampart of Skulls.", GOSSIP_SENDER_ICC_PORT, RAMPART_OF_SKULLS_TELEPORT); // M_PI/6
if (instance->GetBossState(DATA_ICECROWN_GUNSHIP_BATTLE) == DONE && go->GetEntry() != 202244)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Deathbringer's Rise.", GOSSIP_SENDER_ICC_PORT, DEATHBRINGER_S_RISE_TELEPORT); // M_PI/6
AddGossipItemFor(player, GOSSIP_ICON_CHAT, "Teleport to the Deathbringer's Rise.", GOSSIP_SENDER_ICC_PORT, DEATHBRINGER_S_RISE_TELEPORT); // M_PI/6
if (instance->GetData(DATA_COLDFLAME_JETS) == DONE && go->GetEntry() != 202235)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to the Upper Spire.", GOSSIP_SENDER_ICC_PORT, UPPER_SPIRE_TELEPORT); // M_PI/6
AddGossipItemFor(player, GOSSIP_ICON_CHAT, "Teleport to the Upper Spire.", GOSSIP_SENDER_ICC_PORT, UPPER_SPIRE_TELEPORT); // M_PI/6
if (instance->GetBossState(DATA_VALITHRIA_DREAMWALKER) == DONE && instance->GetBossState(DATA_SINDRAGOSA_GAUNTLET) == DONE && go->GetEntry() != 202246)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Teleport to Sindragosa's Lair", GOSSIP_SENDER_ICC_PORT, SINDRAGOSA_S_LAIR_TELEPORT); // M_PI*3/2 + M_PI/6
AddGossipItemFor(player, GOSSIP_ICON_CHAT, "Teleport to Sindragosa's Lair", GOSSIP_SENDER_ICC_PORT, SINDRAGOSA_S_LAIR_TELEPORT); // M_PI*3/2 + M_PI/6
}
player->SEND_GOSSIP_MENU(player->GetGossipTextId(go), go->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(go), go->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, GameObject* /*go*/, uint32 sender, uint32 action)
bool OnGossipSelect(Player* player, GameObject* /*go*/, uint32 sender, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
player->CLOSE_GOSSIP_MENU();
ClearGossipMenuFor(player);
CloseGossipMenuFor(player);
SpellInfo const* spell = sSpellMgr->GetSpellInfo(action);
if (!spell)
return false;

View file

@ -159,7 +159,7 @@ public:
{
pInstance = me->GetInstanceScript();
}
InstanceScript* pInstance;
EventMap events;
SummonList summons;
@ -262,7 +262,7 @@ public:
void SpellHit(Unit * /*caster*/, const SpellInfo *spell)
{
if (spell->Id == SPELL_POWER_SPARK_MALYGOS_BUFF)
if (spell->Id == SPELL_POWER_SPARK_MALYGOS_BUFF)
{
if (!bLockHealthCheck)
{
@ -552,7 +552,7 @@ public:
events.RescheduleEvent(EVENT_SPELL_ARCANE_OVERLOAD, 8000, 1);
events.RescheduleEvent(EVENT_MOVE_TO_SURGE_OF_POWER, 55000, 1);
events.RescheduleEvent(EVENT_CHECK_TRASH_DEAD, 3000, 1);
for (int i=0; i<MAX_NEXUS_LORDS; i++)
{
float dist = 22.0f;
@ -937,7 +937,7 @@ public:
CheckTimer = 1000;
MoveTimer = 0;
}
InstanceScript* pInstance;
uint16 CheckTimer;
uint16 MoveTimer;
@ -1435,15 +1435,15 @@ public:
class go_the_focusing_iris : public GameObjectScript
{
public:
{
public:
go_the_focusing_iris() : GameObjectScript("go_the_focusing_iris") { }
bool OnGossipHello(Player* user, GameObject* go)
bool OnGossipHello(Player* user, GameObject* go) override
{
if (!user || !go)
return true;
if (InstanceScript* pInstance = go->GetInstanceScript())
pInstance->SetData(DATA_IRIS_ACTIVATED, 0);
@ -1527,4 +1527,4 @@ void AddSC_boss_malygos()
new npc_eoe_wyrmrest_skytalon();
new spell_eoe_ph3_surge_of_power();
}
}

View file

@ -72,54 +72,54 @@ class npc_oculus_drakegiver : public CreatureScript
public:
npc_oculus_drakegiver() : CreatureScript("npc_oculus_drakegiver") { }
bool OnGossipHello(Player* pPlayer, Creature* pCreature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if( pCreature->IsQuestGiver() )
pPlayer->PrepareQuestMenu(pCreature->GetGUID());
if(creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
if( pCreature->GetInstanceScript()->GetData(DATA_DRAKOS) == DONE )
if(creature->GetInstanceScript()->GetData(DATA_DRAKOS) == DONE)
{
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_DRAKES, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_DRAKES, pCreature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_DRAKES, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
SendGossipMenuFor(player, GOSSIP_TEXTID_DRAKES, creature->GetGUID());
}
return true;
}
bool OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 /*uiSender*/, uint32 uiAction)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*uiSender*/, uint32 uiAction) override
{
pPlayer->PlayerTalkClass->GetGossipMenu().ClearMenu();
switch(pCreature->GetEntry())
player->PlayerTalkClass->GetGossipMenu().ClearMenu();
switch(creature->GetEntry())
{
case NPC_VERDISA:
switch(uiAction)
{
case GOSSIP_ACTION_INFO_DEF + 1:
if (!HAS_ESSENCE(pPlayer))
if (!HAS_ESSENCE(player))
{
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_VERDISA1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_VERDISA2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_VERDISA1, pCreature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_VERDISA1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_VERDISA2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
SendGossipMenuFor(player, GOSSIP_TEXTID_VERDISA1, creature->GetGUID());
}
else
{
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_VERDISA2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_VERDISA2, pCreature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_VERDISA2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
SendGossipMenuFor(player, GOSSIP_TEXTID_VERDISA2, creature->GetGUID());
}
break;
case GOSSIP_ACTION_INFO_DEF + 2:
{
ItemPosCountVec dest;
uint8 msg = pPlayer->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, ITEM_EMERALD_ESSENCE, 1);
uint8 msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, ITEM_EMERALD_ESSENCE, 1);
if (msg == EQUIP_ERR_OK)
pPlayer->StoreNewItem(dest, ITEM_EMERALD_ESSENCE, true);
pPlayer->CLOSE_GOSSIP_MENU();
player->StoreNewItem(dest, ITEM_EMERALD_ESSENCE, true);
CloseGossipMenuFor(player);
break;
}
case GOSSIP_ACTION_INFO_DEF + 3:
if (!HAS_ESSENCE(pPlayer))
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_VERDISA1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_VERDISA3, pCreature->GetGUID());
if (!HAS_ESSENCE(player))
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_VERDISA1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
SendGossipMenuFor(player, GOSSIP_TEXTID_VERDISA3, creature->GetGUID());
break;
}
break;
@ -127,31 +127,31 @@ public:
switch(uiAction)
{
case GOSSIP_ACTION_INFO_DEF + 1:
if (!HAS_ESSENCE(pPlayer))
if (!HAS_ESSENCE(player))
{
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_BELGARISTRASZ1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_BELGARISTRASZ2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_BELGARISTRASZ1, pCreature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_BELGARISTRASZ1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_BELGARISTRASZ2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
SendGossipMenuFor(player, GOSSIP_TEXTID_BELGARISTRASZ1, creature->GetGUID());
}
else
{
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_BELGARISTRASZ2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_BELGARISTRASZ2, pCreature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_BELGARISTRASZ2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
SendGossipMenuFor(player, GOSSIP_TEXTID_BELGARISTRASZ2, creature->GetGUID());
}
break;
case GOSSIP_ACTION_INFO_DEF + 2:
{
ItemPosCountVec dest;
uint8 msg = pPlayer->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, ITEM_RUBY_ESSENCE, 1);
uint8 msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, ITEM_RUBY_ESSENCE, 1);
if (msg == EQUIP_ERR_OK)
pPlayer->StoreNewItem(dest, ITEM_RUBY_ESSENCE, true);
pPlayer->CLOSE_GOSSIP_MENU();
player->StoreNewItem(dest, ITEM_RUBY_ESSENCE, true);
CloseGossipMenuFor(player);
break;
}
case GOSSIP_ACTION_INFO_DEF + 3:
if (!HAS_ESSENCE(pPlayer))
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_BELGARISTRASZ1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_BELGARISTRASZ3, pCreature->GetGUID());
if (!HAS_ESSENCE(player))
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_BELGARISTRASZ1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
SendGossipMenuFor(player, GOSSIP_TEXTID_BELGARISTRASZ3, creature->GetGUID());
break;
}
break;
@ -159,31 +159,33 @@ public:
switch(uiAction)
{
case GOSSIP_ACTION_INFO_DEF + 1:
if (!HAS_ESSENCE(pPlayer))
if (!HAS_ESSENCE(player))
{
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_ETERNOS1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_ETERNOS2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_ETERNOS1, pCreature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_ETERNOS1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_ETERNOS2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
SendGossipMenuFor(player, GOSSIP_TEXTID_ETERNOS1, creature->GetGUID());
}
else
{
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_ETERNOS2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_ETERNOS2, pCreature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_ETERNOS2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
SendGossipMenuFor(player, GOSSIP_TEXTID_ETERNOS2, creature->GetGUID());
}
break;
case GOSSIP_ACTION_INFO_DEF + 2:
{
ItemPosCountVec dest;
uint8 msg = pPlayer->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, ITEM_AMBER_ESSENCE, 1);
uint8 msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, ITEM_AMBER_ESSENCE, 1);
if (msg == EQUIP_ERR_OK)
pPlayer->StoreNewItem(dest, ITEM_AMBER_ESSENCE, true);
pPlayer->CLOSE_GOSSIP_MENU();
player->StoreNewItem(dest, ITEM_AMBER_ESSENCE, true);
CloseGossipMenuFor(player);
break;
}
case GOSSIP_ACTION_INFO_DEF + 3:
if (!HAS_ESSENCE(pPlayer))
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_ETERNOS1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXTID_ETERNOS3, pCreature->GetGUID());
if (!HAS_ESSENCE(player))
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_ETERNOS1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
SendGossipMenuFor(player, GOSSIP_TEXTID_ETERNOS3, creature->GetGUID());
break;
}
break;
@ -198,14 +200,14 @@ class npc_oculus_drake : public CreatureScript
public:
npc_oculus_drake() : CreatureScript("npc_oculus_drake") { }
CreatureAI* GetAI(Creature* pCreature) const
CreatureAI* GetAI(Creature* creature) const
{
return new npc_oculus_drakeAI (pCreature);
return new npc_oculus_drakeAI (creature);
}
struct npc_oculus_drakeAI : public VehicleAI
{
npc_oculus_drakeAI(Creature *pCreature) : VehicleAI(pCreature)
npc_oculus_drakeAI(Creature *creature) : VehicleAI(creature)
{
m_pInstance = me->GetInstanceScript();
JustSummoned = true;

View file

@ -116,7 +116,7 @@ static Yells Conversation[]=
{14253, "So that was the problem? Now I'm makin' progress...", NPC_BRANN, 195000},
{13767, "Critical threat index. Void analysis diverted. Initiating sanitization protocol.", NPC_ABEDNEUM, 205000},
{14254, "Hang on! Nobody's gonna' be sanitized as long as I have a say in it!", NPC_BRANN, 215000},
{14255, "Ha! The old magic fingers finally won through! Now let's get down to--", NPC_BRANN, 295000},
{14255, "Ha! The old magic fingers finally won through! Now let's get down to--", NPC_BRANN, 295000},
{13768, "Alert: security fail-safes deactivated. Beginning memory purge and... ", NPC_ABEDNEUM, 303000},
//The fight is completed at this point.
{14256, "Purge? No no no no no.. where did I-- Aha, this should do the trick...", NPC_BRANN, 310000},
@ -150,81 +150,81 @@ class brann_bronzebeard : public CreatureScript
public:
brann_bronzebeard() : CreatureScript("brann_bronzebeard") { }
bool OnGossipHello(Player *player, Creature *pCreature)
bool OnGossipHello(Player* player, Creature* creature) override
{
InstanceScript* pInstance = (pCreature->GetInstanceScript());
InstanceScript* pInstance = (creature->GetInstanceScript());
player->TalkedToCreature(pCreature->GetEntry(), pCreature->GetGUID());
player->PrepareGossipMenu(pCreature, 0, true);
player->TalkedToCreature(creature->GetEntry(), creature->GetGUID());
player->PrepareGossipMenu(creature, 0, true);
if (pInstance)
{
uint32 brann = pInstance->GetData(BRANN_BRONZEBEARD);
switch (brann)
{
case 1:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
break;
case 2:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
break;
case 3:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3);
break;
case 4:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+4);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+4);
break;
case 5:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
break;
default: break;
}
}
player->SEND_GOSSIP_MENU(TEXT_ID_START, pCreature->GetGUID());
SendGossipMenuFor(player, TEXT_ID_START, creature->GetGUID());
return true;
}
bool OnGossipSelect(Player *player, Creature *pCreature, uint32 /*sender*/, uint32 action )
bool OnGossipSelect(Player *player, Creature *creature, uint32 /*sender*/, uint32 action) override
{
if (action)
{
switch (action)
{
case GOSSIP_ACTION_INFO_DEF+1:
pCreature->AI()->DoAction(ACTION_START_EVENT);
player->CLOSE_GOSSIP_MENU();
creature->AI()->DoAction(ACTION_START_EVENT);
CloseGossipMenuFor(player);
break;
case GOSSIP_ACTION_INFO_DEF+2:
pCreature->AI()->DoAction(ACTION_START_TRIBUNAL);
player->CLOSE_GOSSIP_MENU();
creature->AI()->DoAction(ACTION_START_TRIBUNAL);
CloseGossipMenuFor(player);
break;
case GOSSIP_ACTION_INFO_DEF+3:
pCreature->AI()->DoAction(ACTION_GO_TO_SJONNIR);
player->CLOSE_GOSSIP_MENU();
creature->AI()->DoAction(ACTION_GO_TO_SJONNIR);
CloseGossipMenuFor(player);
break;
case GOSSIP_ACTION_INFO_DEF+4:
pCreature->AI()->DoAction(ACTION_WIPE_START);
player->CLOSE_GOSSIP_MENU();
creature->AI()->DoAction(ACTION_WIPE_START);
CloseGossipMenuFor(player);
break;
case GOSSIP_ACTION_INFO_DEF+5:
pCreature->AI()->DoAction(ACTION_OPEN_DOOR);
player->CLOSE_GOSSIP_MENU();
creature->AI()->DoAction(ACTION_OPEN_DOOR);
CloseGossipMenuFor(player);
break;
}
}
return true;
}
CreatureAI* GetAI(Creature* pCreature) const
CreatureAI* GetAI(Creature* creature) const override
{
return new brann_bronzebeardAI (pCreature);
return new brann_bronzebeardAI (creature);
}
struct brann_bronzebeardAI : public npc_escortAI
{
brann_bronzebeardAI(Creature *c) : npc_escortAI(c), summons(me)
{
{
AbedneumGUID = MarnakGUID = KaddrakGUID = 0;
pInstance = c->GetInstanceScript();
}
@ -245,7 +245,7 @@ public:
Creature *cr;
if ((cr = GetAbedneum())) cr->DespawnOrUnsummon();
if ((cr = GetMarnak())) cr->DespawnOrUnsummon();
if ((cr = GetKaddrak())) cr->DespawnOrUnsummon();
if ((cr = GetKaddrak())) cr->DespawnOrUnsummon();
SwitchHeadVisaul(0x7, false);
}
@ -283,21 +283,21 @@ public:
TalkEvent = false;
}
void WaypointReached(uint32 id);
void WaypointReached(uint32 id) override;
void InitializeEvent();
Creature* GetAbedneum() { return ObjectAccessor::GetCreature(*me, AbedneumGUID); }
Creature* GetMarnak() { return ObjectAccessor::GetCreature(*me, MarnakGUID); }
Creature* GetKaddrak() { return ObjectAccessor::GetCreature(*me, KaddrakGUID); }
void MoveInLineOfSight(Unit* /*pWho*/) { }
void DamageTaken(Unit*, uint32 &damage, DamageEffectType, SpellSchoolMask)
{
void MoveInLineOfSight(Unit* /*pWho*/) override { }
void DamageTaken(Unit*, uint32 &damage, DamageEffectType, SpellSchoolMask) override
{
if (damage && pInstance)
pInstance->SetData(DATA_BRANN_ACHIEVEMENT, false);
}
void Reset()
void Reset() override
{
RemoveEscortState(0x7); // all states
SetDespawnAtFar(false);
@ -312,13 +312,13 @@ public:
{
pInstance->SetData(BRANN_BRONZEBEARD, 1);
pInstance->SetData(DATA_BRANN_ACHIEVEMENT, true);
if (pInstance->GetData(BOSS_TRIBUNAL_OF_AGES) == DONE)
pInstance->SetData(BRANN_BRONZEBEARD, (pInstance->GetData(BOSS_SJONNIR) == DONE) ? 5 : 4);
}
}
void DoAction(int32 action)
void DoAction(int32 action) override
{
switch (action)
{
@ -334,7 +334,7 @@ public:
me->setFaction(i->GetSource()->getFaction());
break;
}
SetEscortPaused(false);
InitializeEvent();
me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE);
@ -378,7 +378,7 @@ public:
}
}
void JustSummoned(Creature* cr)
void JustSummoned(Creature* cr) override
{
if (cr->GetEntry() == NPC_ABEDNEUM || cr->GetEntry() == NPC_KADDRAK || cr->GetEntry() == NPC_MARNAK)
cr->SetCanFly(true);
@ -386,7 +386,7 @@ public:
summons.Summon(cr);
}
void UpdateEscortAI(uint32 diff)
void UpdateEscortAI(uint32 diff) override
{
events.Update(diff);
switch (events.GetEvent())
@ -499,7 +499,7 @@ public:
}
me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
// Spawn Chest and quest credit
if (Player *plr = SelectTargetFromPlayerList(200.0f))
@ -513,7 +513,7 @@ public:
plr->GroupEventHappens(QUEST_HALLS_OF_STONE, me);
}
events.ScheduleEvent(EVENT_GO_TO_SJONNIR, 279000);
break;
}
@ -530,7 +530,7 @@ public:
case EVENT_END:
{
events.Reset();
if (pInstance)
if (pInstance)
pInstance->SetData(BRANN_BRONZEBEARD, 6);
me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
@ -560,13 +560,14 @@ public:
cs->PlayDirectSound(Conversation[SpeechCount].sound);
}
if (SpeechCount < 38)
if (SpeechCount < 38)
SpeechPause = Conversation[SpeechCount++].timer;
else
TalkEvent = false;
}
}
}
void SummonCreatures(uint32 entry, uint8 count)
{
for (int i = 0; i < count; ++i)
@ -581,12 +582,12 @@ public:
}
}
void JustDied(Unit* /*killer*/)
void JustDied(Unit* /*killer*/) override
{
ResetEvent();
if(pInstance)
{
if (pInstance->GetData(BOSS_TRIBUNAL_OF_AGES) != DONE)
if (pInstance->GetData(BOSS_TRIBUNAL_OF_AGES) != DONE)
pInstance->SetData(BOSS_TRIBUNAL_OF_AGES, NOT_STARTED);
}
}
@ -632,10 +633,10 @@ void brann_bronzebeard::brann_bronzebeardAI::WaypointReached(uint32 id)
switch (id)
{
// Stop before stairs and ask to start
case 9:
case 9:
SetEscortPaused(true);
me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
if (pInstance)
if (pInstance)
pInstance->SetData(BRANN_BRONZEBEARD, 2);
break;
@ -681,9 +682,9 @@ class dark_rune_protectors : public CreatureScript
public:
dark_rune_protectors() : CreatureScript("dark_rune_protectors") { }
CreatureAI* GetAI(Creature* pCreature) const
CreatureAI* GetAI(Creature* creature) const
{
return new dark_rune_protectorsAI (pCreature);
return new dark_rune_protectorsAI (creature);
}
struct dark_rune_protectorsAI : public ScriptedAI
@ -691,7 +692,7 @@ public:
dark_rune_protectorsAI(Creature *c) : ScriptedAI(c) { }
EventMap events;
void Reset()
void Reset()
{
events.Reset();
}
@ -705,7 +706,7 @@ public:
void UpdateAI(uint32 diff)
{
if (!UpdateVictim())
return;
return;
events.Update(diff);
if (me->HasUnitState(UNIT_STATE_CASTING))
@ -739,9 +740,9 @@ class dark_rune_stormcaller : public CreatureScript
public:
dark_rune_stormcaller() : CreatureScript("dark_rune_stormcaller") { }
CreatureAI* GetAI(Creature* pCreature) const
CreatureAI* GetAI(Creature* creature) const
{
return new dark_rune_stormcallerAI (pCreature);
return new dark_rune_stormcallerAI (creature);
}
struct dark_rune_stormcallerAI : public ScriptedAI
@ -749,7 +750,7 @@ public:
dark_rune_stormcallerAI(Creature *c) : ScriptedAI(c) { }
EventMap events;
void Reset()
void Reset()
{
events.Reset();
}
@ -795,20 +796,20 @@ class iron_golem_custodian : public CreatureScript
public:
iron_golem_custodian() : CreatureScript("iron_golem_custodian") { }
CreatureAI* GetAI(Creature* pCreature) const
CreatureAI* GetAI(Creature* creature) const
{
return new iron_golem_custodianAI (pCreature);
return new iron_golem_custodianAI (creature);
}
struct iron_golem_custodianAI : public ScriptedAI
{
iron_golem_custodianAI(Creature *c) : ScriptedAI(c) { }
EventMap events;
void Reset()
void Reset()
{
events.Reset();
}
void EnterCombat(Unit *)
{
events.ScheduleEvent(EVENT_IGC_CRUSH, 6000);

View file

@ -18,7 +18,7 @@
#include "Player.h"
#include "Opcodes.h"
enum LeviathanSpells
enum LeviathanSpells
{
// Leviathan basic
SPELL_PURSUED = 62374,
@ -514,19 +514,19 @@ void boss_flame_leviathan::boss_flame_leviathanAI::ActivateTowers()
me->AddLootMode(1<<_towersCount);
switch (i)
{
case EVENT_TOWER_OF_LIFE_DESTROYED:
case EVENT_TOWER_OF_LIFE_DESTROYED:
me->AddAura(SPELL_TOWER_OF_LIFE, me);
events.RescheduleEvent(EVENT_FREYA, 30000);
break;
case EVENT_TOWER_OF_STORM_DESTROYED:
case EVENT_TOWER_OF_STORM_DESTROYED:
me->AddAura(SPELL_TOWER_OF_STORMS, me);
events.RescheduleEvent(EVENT_THORIMS_HAMMER, 60000);
break;
case EVENT_TOWER_OF_FROST_DESTROYED:
case EVENT_TOWER_OF_FROST_DESTROYED:
me->AddAura(SPELL_TOWER_OF_FROST, me);
events.RescheduleEvent(EVENT_HODIRS_FURY, 20000);
break;
case EVENT_TOWER_OF_FLAMES_DESTROYED:
case EVENT_TOWER_OF_FLAMES_DESTROYED:
me->AddAura(SPELL_TOWER_OF_FLAMES, me);
events.RescheduleEvent(EVENT_MIMIRONS_INFERNO, 42000);
break;
@ -895,7 +895,7 @@ public:
struct npc_freya_wardAI : public NullCreatureAI
{
npc_freya_wardAI(Creature *c) : NullCreatureAI(c), summons(c)
{
{
}
SummonList summons;
@ -975,7 +975,7 @@ public:
struct npc_hodirs_furyAI : public NullCreatureAI
{
npc_hodirs_furyAI(Creature *c) : NullCreatureAI(c)
{
{
}
uint32 _timeToHit;
@ -1035,7 +1035,7 @@ public:
_switchTargetTimer = 0;
}
else
_switchTargetTimer = 25000;
_switchTargetTimer = 25000;
}
}
};
@ -1117,7 +1117,7 @@ public:
struct npc_thorims_hammerAI : public NullCreatureAI
{
npc_thorims_hammerAI(Creature *c) : NullCreatureAI(c)
{
{
}
uint32 _beamTimer;
@ -1216,9 +1216,9 @@ public:
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->GetInstanceScript() && creature->GetInstanceScript()->GetData(TYPE_LEVIATHAN) == NOT_STARTED && !creature->AI()->GetData(DATA_EVENT_STARTED))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Activate secondary defensive systems.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, "Activate secondary defensive systems.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
SendGossipMenuFor(player, DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
return true;
}
@ -1228,15 +1228,15 @@ public:
{
case GOSSIP_ACTION_INFO_DEF+1:
creature->MonsterSay("Activating secondary defensive systems will result in the extermination of unauthorized life forms via orbital emplacements. You are an unauthorized life form.", LANG_UNIVERSAL, 0);
player->PlayerTalkClass->ClearMenus();
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Confirmed.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
ClearGossipMenuFor(player);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, "Confirmed.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
SendGossipMenuFor(player, DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+2:
creature->MonsterSay("Security override permitted. Secondary defensive systems activated. Backup deactivation for secondary systems can be accessed via individual generators located on the concourse. ", LANG_UNIVERSAL, 0);
creature->AI()->DoAction(ACTION_START_NORGANNON_EVENT);
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
}
return true;
}
@ -1427,7 +1427,7 @@ public:
void Say(std::string text, bool self)
{
WorldPacket data;
if (self)
ChatHandler::BuildChatPacket(data, CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, me, nullptr, text);
else if (Creature* c = ObjectAccessor::GetCreature(*me, _pentarusGUID))
@ -1524,9 +1524,9 @@ public:
{
npc_brann_radioAI(Creature* c) : NullCreatureAI(c)
{
_lock = (me->GetInstanceScript() && me->GetInstanceScript()->GetData(TYPE_LEVIATHAN) > NOT_STARTED);
_lock = (me->GetInstanceScript() && me->GetInstanceScript()->GetData(TYPE_LEVIATHAN) > NOT_STARTED);
_helpLock = _lock;
}
}
bool _lock;
bool _helpLock;
@ -1549,7 +1549,7 @@ public:
{
if (who->GetTypeId() != TYPEID_PLAYER && !who->IsVehicle())
return;
// ENGAGE
if (!_helpLock && me->GetDistance2d(-508.898f, -32.9631f) < 5.0f)
{
@ -1637,7 +1637,7 @@ public:
struct npc_storm_beacon_spawnAI : public NullCreatureAI
{
npc_storm_beacon_spawnAI(Creature* c) : NullCreatureAI(c)
npc_storm_beacon_spawnAI(Creature* c) : NullCreatureAI(c)
{
_amount = 0;
_checkTimer = 0;
@ -1678,7 +1678,7 @@ public:
struct boss_flame_leviathan_safety_containerAI : public NullCreatureAI
{
boss_flame_leviathan_safety_containerAI(Creature *c) : NullCreatureAI(c)
boss_flame_leviathan_safety_containerAI(Creature *c) : NullCreatureAI(c)
{
_allowTimer = 0;
}
@ -1694,7 +1694,7 @@ public:
liquid->CastSpell(liquid, SPELL_LIQUID_PYRITE, true);
liquid->CastSpell(liquid, SPELL_DUST_CLOUD_IMPACT, true);
}
me->DespawnOrUnsummon(1);
}
}
@ -1726,8 +1726,8 @@ public:
struct npc_mechanoliftAI : public NullCreatureAI
{
npc_mechanoliftAI(Creature *c) : NullCreatureAI(c)
{
npc_mechanoliftAI(Creature *c) : NullCreatureAI(c)
{
me->SetSpeed(MOVE_RUN, rand_norm()+0.5f);
}
@ -2341,7 +2341,7 @@ class achievement_flame_leviathan_towers : public AchievementCriteriaScript
{
return target && _towerCount <= target->GetAI()->GetData(DATA_GET_TOWER_COUNT);
}
private:
uint32 const _towerCount;
};
@ -2375,7 +2375,7 @@ class achievement_flame_leviathan_garage : public AchievementCriteriaScript
return true;
return false;
}
private:
uint32 const _entry1;
uint32 const _entry2;

View file

@ -204,7 +204,7 @@ public:
if( me->HasUnitState(UNIT_STATE_CASTING) )
return;
switch( events.GetEvent() )
{
case 0:
@ -463,7 +463,7 @@ public:
void UpdateAI(uint32 diff)
{
UpdateVictim();
timer += diff;
if (timer >= 2000)
{
@ -673,7 +673,7 @@ class go_ulduar_pure_saronite_deposit : public GameObjectScript
public:
go_ulduar_pure_saronite_deposit() : GameObjectScript("go_ulduar_pure_saronite_deposit") { }
bool OnGossipHello(Player* plr, GameObject* go)
bool OnGossipHello(Player* plr, GameObject* go) override
{
if (plr->IsGameMaster())
return false;
@ -707,4 +707,4 @@ void AddSC_boss_vezax()
new achievement_shadowdodger();
new go_ulduar_pure_saronite_deposit();
}
}

View file

@ -775,7 +775,7 @@ public:
Creature* LMK2 = GetLMK2();
Creature* VX001 = GetVX001();
Creature* ACU = GetACU();
if (!VX001 || !LMK2 || !ACU)
return;
@ -1113,7 +1113,7 @@ public:
cannon->ExitVehicle();
me->GetMotionMaster()->MoveCharge(2795.076f, 2598.616f, 364.32f, 21.0f);
if (Creature* c = GetMimiron())
c->AI()->SetData(0, 1);
c->AI()->SetData(0, 1);
}
}
else if (Phase == 4)
@ -1752,7 +1752,7 @@ public:
me->UpdatePosition(2744.65f, 2569.46f, 381.34f, M_PI, false);
if (Creature* c = GetMimiron())
c->AI()->SetData(0, 3);
c->AI()->SetData(0, 3);
}
}
else if (Phase == 4)
@ -2164,7 +2164,7 @@ public:
me->CastSpell(me, SPELL_BEAM_BLUE, true);
option = 3;
break;
}
}
}
void UpdateAI(uint32 diff)
@ -2276,25 +2276,24 @@ public:
};
class go_ulduar_do_not_push_this_button : public GameObjectScript
{
public:
go_ulduar_do_not_push_this_button() : GameObjectScript("go_ulduar_do_not_push_this_button") { }
{
public:
go_ulduar_do_not_push_this_button() : GameObjectScript("go_ulduar_do_not_push_this_button") { }
bool OnGossipHello(Player* Player, GameObject* GO)
bool OnGossipHello(Player* player, GameObject* go) override
{
if( !Player || !GO )
if(!player || !go)
return true;
InstanceScript* pInstance = GO->GetInstanceScript();
if (pInstance)
if (InstanceScript* instance = go->GetInstanceScript())
{
if( pInstance->GetData(TYPE_MIMIRON) != NOT_STARTED )
if(instance->GetData(TYPE_MIMIRON) != NOT_STARTED)
return false;
if (Creature* c = ObjectAccessor::GetCreature(*GO, pInstance->GetData64(TYPE_MIMIRON)))
if (Creature* c = ObjectAccessor::GetCreature(*go, instance->GetData64(TYPE_MIMIRON)))
{
c->AI()->SetData(0, 7);
c->AI()->AttackStart(Player);
c->AI()->AttackStart(player);
}
}
@ -2621,4 +2620,4 @@ void AddSC_boss_mimiron()
new achievement_mimiron_set_up_us_the_bomb_11();
new achievement_mimiron_set_up_us_the_bomb_12();
new achievement_mimiron_set_up_us_the_bomb_13();
}
}

View file

@ -457,7 +457,7 @@ public:
me->RemoveAura(SPELL_CHAIN_4);
}
me->CastSpell(me, SPELL_WINGBUFFET, true);
if( (me->GetHealth()*100) / me->GetMaxHealth() < 50 ) // start phase 3
{
me->SetControlled(false, UNIT_STATE_ROOT);
@ -583,7 +583,7 @@ class npc_ulduar_expedition_commander : public CreatureScript
public:
npc_ulduar_expedition_commander() : CreatureScript("npc_ulduar_expedition_commander") { }
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (!player || !creature)
return true;
@ -599,12 +599,12 @@ class npc_ulduar_expedition_commander : public CreatureScript
if (!razorscale || razorscale->IsInCombat())
return true;
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, TEXT_GOSSIP_ACTION, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->PlayerTalkClass->SendGossipMenu(40100, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, TEXT_GOSSIP_ACTION, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
SendGossipMenuFor(player, 40100, creature);
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*uiSender*/, uint32 uiAction)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*uiSender*/, uint32 uiAction) override
{
if (!player || !creature)
return true;
@ -636,7 +636,7 @@ class npc_ulduar_expedition_commander : public CreatureScript
return true;
}
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return GetInstanceAI<npc_ulduar_expedition_commanderAI>(creature);
}
@ -650,7 +650,7 @@ class npc_ulduar_expedition_commander : public CreatureScript
me->SetReactState(REACT_AGGRESSIVE);
}
void MoveInLineOfSight(Unit* who)
void MoveInLineOfSight(Unit* who) override
{
if (_introSpoken)
return;
@ -687,7 +687,7 @@ public:
InstanceScript* pInstance;
uint8 repairPoints;
void Reset()
{
repairPoints = 0;
@ -877,11 +877,11 @@ public:
};
class go_ulduar_working_harpoon : public GameObjectScript
{
public:
go_ulduar_working_harpoon() : GameObjectScript("go_ulduar_working_harpoon") { }
{
public:
go_ulduar_working_harpoon() : GameObjectScript("go_ulduar_working_harpoon") { }
bool OnGossipHello(Player* user, GameObject* go)
bool OnGossipHello(Player* user, GameObject* go) override
{
if( !user || !go )
return true;
@ -926,7 +926,7 @@ public:
if( uint64 g = pInstance->GetData64(npc) )
if( Creature* hfs = ObjectAccessor::GetCreature(*go, g) )
hfs->AI()->SetData(3, spell);
go->SetLootState(GO_JUST_DEACTIVATED);
return true;
}

View file

@ -31,7 +31,7 @@ enum ThorimSpells
SPELL_LIGHTNING_CHARGE_BUFF = 62279,
SPELL_LIGHTNING_PILLAR_P2 = 62976,
SPELL_LIGHTNING_ORB_CHARGER = 62278,
// SIF
SPELL_TOUCH_OF_DOMINION = 62507,
SPELL_SIF_TRANSFORM = 64778,
@ -328,7 +328,7 @@ public:
bool _hardMode;
bool _isHitAllowed;
bool _isAlly;
uint8 _trashCounter;
uint8 _trashCounter;
InstanceScript* m_pInstance;
EventMap events;
@ -371,10 +371,10 @@ public:
me->SummonCreature(_isAlly ? NPC_CAPTURED_MERCENARY_SOLDIER_ALLY : NPC_CAPTURED_MERCENARY_SOLDIER_HORDE, 2127.24f, -251.309f, 419.793f, 5.89921f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 5000);
me->SummonCreature(_isAlly ? NPC_CAPTURED_MERCENARY_SOLDIER_ALLY : NPC_CAPTURED_MERCENARY_SOLDIER_HORDE, 2120.1f, -258.99f, 419.764f, 6.24828f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 5000);
me->SummonCreature(_isAlly ? NPC_CAPTURED_MERCENARY_SOLDIER_ALLY : NPC_CAPTURED_MERCENARY_SOLDIER_HORDE, 2123.32f, -254.771f, 419.789f, 6.17846f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 5000);
// Captured Mercenary Captain 32908
me->SummonCreature(_isAlly ? NPC_CAPTURED_MERCENARY_CAPTAIN_ALLY : NPC_CAPTURED_MERCENARY_CAPTAIN_HORDE, 2131.31f, -259.182f, 419.974f, 5.91667f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 5000);
// Dark Rune Acolyte (arena) 32886
me->SummonCreature(NPC_DARK_RUNE_ACOLYTE_I, 2129.09f, -277.142f, 419.756f, 1.22173f, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 5000);
@ -395,7 +395,7 @@ public:
// Runic Colossus 32872
me->SummonCreature(NPC_RUNIC_COLOSSUS, 2227.5f, -396.179f, 412.176f, 1.79769f);
// Ancient Rune Giant 32873
me->SummonCreature(NPC_ANCIENT_RUNE_GIANT, 2134.57f, -440.318f, 438.331f, 0.226893f);
@ -540,7 +540,7 @@ public:
{
if (m_pInstance)
m_pInstance->DoUpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET, 64980 /*SIFFED ACHIEVEMENT*/);
_hardMode = true;
EntryCheckPredicate pred(NPC_SIF);
summons.DoAction(ACTION_SIF_JOIN_FIGHT, pred);
@ -567,7 +567,7 @@ public:
me->MonsterYell("Stay your arms! I yield!", LANG_UNIVERSAL, 0);
me->PlayDirectSound(SOUND_DEFEATED);
events.SetPhase(EVENT_PHASE_OUTRO);
events.ScheduleEvent(EVENT_THORIM_OUTRO1, 2000, 0, EVENT_PHASE_OUTRO);
@ -950,7 +950,7 @@ public:
struct boss_thorim_lightning_orbAI : public npc_escortAI
{
boss_thorim_lightning_orbAI(Creature* pCreature) : npc_escortAI(pCreature)
{
{
InitWaypoint();
Reset();
Start(false, true, 0);
@ -1036,7 +1036,7 @@ public:
struct boss_thorim_sif_blizzardAI : public npc_escortAI
{
boss_thorim_sif_blizzardAI(Creature* pCreature) : npc_escortAI(pCreature)
{
{
InitWaypoint();
Reset();
Start(false, true, 0);
@ -1088,8 +1088,8 @@ public:
uint32 _resetTimer;
void Reset()
{
void Reset()
{
_resetTimer = 0;
me->SetControlled(true, UNIT_STATE_STUNNED);
me->SetDisableGravity(true);
@ -1242,7 +1242,7 @@ public:
case EVENT_CM_SOLDIER_S:
if (me->GetDistance(me->GetVictim()) > 8)
me->CastSpell(me->GetVictim(), SPELL_SHOOT, false);
events.RepeatEvent(1500);
break;
case EVENT_CM_CAPTAIN_D:
@ -1310,7 +1310,7 @@ public:
events.ScheduleEvent(EVENT_IH_GUARD_CLEAVE, 6000);
events.ScheduleEvent(EVENT_IH_GUARD_HAMSTRING, 9000);
events.ScheduleEvent(EVENT_IH_GUARD_SHIELD_SMASH, 15000);
if (Creature* runeGiant = me->FindNearestCreature(NPC_ANCIENT_RUNE_GIANT, 200.0f))
runeGiant->AI()->DoAction(ACTION_IRON_HONOR_DIED);
}
@ -1476,7 +1476,7 @@ public:
_nextTriggerPos += 16.0f;
if (_nextTriggerPos > -260.0f)
events.PopEvent();
else
else
events.RescheduleEvent(EVENT_RC_RUNIC_SMASH_TRIGGER, 500);
RunRunicSmash(true);
@ -1744,16 +1744,16 @@ public:
};
class go_thorim_lever : public GameObjectScript
{
public:
go_thorim_lever() : GameObjectScript("go_thorim_lever") { }
{
public:
go_thorim_lever() : GameObjectScript("go_thorim_lever") { }
bool OnGossipHello(Player* pPlayer, GameObject* pGo)
bool OnGossipHello(Player* pPlayer, GameObject* go) override
{
if (GameObject *g = pPlayer->FindNearestGameObject(GO_ARENA_LEVER_GATE, 50))
g->UseDoorOrButton();
pGo->UseDoorOrButton();
go->UseDoorOrButton();
return true;
}
};
@ -1824,7 +1824,7 @@ class achievement_thorim_stand_in_the_lightning : public AchievementCriteriaScri
if (InstanceScript* instance = player->GetInstanceScript())
if (Creature* cr = ObjectAccessor::GetCreature(*player, instance->GetData64(TYPE_THORIM)))
return cr->AI()->GetData(DATA_HIT_BY_LIGHTNING);
return false;
}
};
@ -1839,7 +1839,7 @@ class achievement_thorim_lose_your_illusion : public AchievementCriteriaScript
if (InstanceScript* instance = player->GetInstanceScript())
if (Creature* cr = ObjectAccessor::GetCreature(*player, instance->GetData64(TYPE_THORIM)))
return cr->AI()->GetData(DATA_LOSE_YOUR_ILLUSION);
return false;
}
};
@ -1862,7 +1862,7 @@ void AddSC_boss_thorim()
// Mini bosses
new boss_thorim_runic_colossus();
new boss_thorim_ancient_rune_giant();
// GOs
new go_thorim_lever();

View file

@ -218,7 +218,7 @@ enum YoggSaronSounds
SARA_P1_CAST2 = 15774,
SARA_P1_KILL1 = 15778,
SARA_P1_KILL2 = 15779,
SARA_P2_START = 15754,
SARA_P2_CAST1 = 15776,
SARA_P2_CAST2 = 15777,
@ -403,7 +403,7 @@ public:
me->SetVisible(true);
me->SetDisplayId(me->GetNativeDisplayId());
me->SetDisableGravity(true);
EnableSara(false);
EnableSara(false);
SpawnClouds();
_initFight = 1;
@ -558,7 +558,7 @@ public:
me->PlayDirectSound(_secondPhase ? SARA_P2_CAST1 : SARA_P1_CAST2);
}
}
void KilledUnit(Unit* who)
{
if (who->GetTypeId() != TYPEID_PLAYER)
@ -611,7 +611,7 @@ public:
EntryCheckPredicate pred3(NPC_THORIM_KEEPER);
summons.DoAction(ACTION_THORIM_START_STORM, pred3);
if (!(_keepersGUID[0] && _keepersGUID[1] && _keepersGUID[2] && _keepersGUID[3]) && me->GetMap()->Is25ManRaid())
summons.DoAction(ACTION_YOGG_SARON_HARD_MODE, pred2);
@ -724,7 +724,7 @@ public:
else if (_p2TalkTimer >= 44500 && _p2TalkTimer < 60000)
{
me->MonsterYell("Cower before my true form.", LANG_UNIVERSAL, 0);
_p2TalkTimer = 60000;
_p2TalkTimer = 60000;
}
else if (_p2TalkTimer >= 64000)
{
@ -772,7 +772,7 @@ public:
EntryCheckPredicate pred(NPC_YOGG_SARON);
summons.DoAction(ACTION_YOGG_SARON_APPEAR, pred);
events.RescheduleEvent(EVENT_SARA_P2_SPAWN_START_TENTACLES, 500, 0, EVENT_PHASE_TWO);
// Spawn Brain!
me->SummonCreature(NPC_BRAIN_OF_YOGG_SARON, 1981.3f, -25.43f, 265);
break;
@ -838,8 +838,8 @@ public:
events.ScheduleEvent(EVENT_SARA_P2_MALADY, 7000, 0, EVENT_PHASE_TWO);
events.ScheduleEvent(EVENT_SARA_P2_PSYCHOSIS, 3000, 0, EVENT_PHASE_TWO);
events.ScheduleEvent(EVENT_SARA_P2_DEATH_RAY, 15000, 0, EVENT_PHASE_TWO);
events.ScheduleEvent(EVENT_SARA_P2_SUMMON_T1, 50000+urand(0,10000), 0, EVENT_PHASE_TWO);
events.ScheduleEvent(EVENT_SARA_P2_SUMMON_T2, 15000+urand(0,5000) , 0, EVENT_PHASE_TWO);
events.ScheduleEvent(EVENT_SARA_P2_SUMMON_T1, 50000+urand(0,10000), 0, EVENT_PHASE_TWO);
events.ScheduleEvent(EVENT_SARA_P2_SUMMON_T2, 15000+urand(0,5000) , 0, EVENT_PHASE_TWO);
events.ScheduleEvent(EVENT_SARA_P2_SUMMON_T3, 30000+urand(0,10000), 0, EVENT_PHASE_TWO);
events.ScheduleEvent(EVENT_SARA_P2_BRAIN_LINK, 0, 0, EVENT_PHASE_TWO);
events.ScheduleEvent(EVENT_SARA_P2_OPEN_PORTALS, 60000, 0, EVENT_PHASE_TWO);
@ -1012,7 +1012,7 @@ public:
_usedInsane = false;
summons.DespawnAll();
events.Reset();
uint8 _count = 4;
me->SetLootMode(31); // 1 + 2 + 4 + 8 + 16, remove with watchers addition
if (m_pInstance)
@ -1048,13 +1048,13 @@ public:
{
summons.DespawnAll();
events.Reset();
me->MonsterYell("Your fate is sealed. The end of days is finally upon you and ALL who inhabit this miserable little seedling. Uulwi ifis halahs gag erh'ongg w'ssh.", LANG_UNIVERSAL, 0);
me->PlayDirectSound(YS_P3_DEATH);
if (m_pInstance)
{
m_pInstance->SetData(TYPE_YOGGSARON, DONE);
m_pInstance->SetData(TYPE_YOGGSARON, DONE);
if (Creature* sara = ObjectAccessor::GetCreature(*me, m_pInstance->GetData64(NPC_SARA)))
sara->AI()->DoAction(ACTION_YOGG_SARON_DEATH);
if (GameObject* go = ObjectAccessor::GetGameObject(*me, m_pInstance->GetData64(GO_YOGG_SARON_DOORS)))
@ -1250,7 +1250,7 @@ public:
me->SummonCreature(NPC_LAUGHING_SKULL, 2133.09f, 15.341f, 239.72f, 4.0724f);
me->SummonCreature(NPC_LAUGHING_SKULL, 2065.83f, 12.3772f, 239.792f, 5.49789f);
// Aspects
me->SummonCreature(NPC_ALEXTRASZA, 2091.92f, -25.8f, 242.647f, 0);
me->SummonCreature(NPC_YSERA, 2116, -25.8f, 242.647f, 3.14f);
@ -1435,7 +1435,7 @@ public:
{
me->CastSpell(me, SPELL_DEATH_RAY_DAMAGE_VISUAL, true);
me->CastSpell(me, SPELL_DEATH_RAY_DAMAGE, true);
_startTimer = 0;
me->SetSpeed(MOVE_WALK, 2);
me->SetSpeed(MOVE_RUN, 2);
@ -1697,7 +1697,7 @@ class boss_yoggsaron_descend_portal : public CreatureScript
public:
boss_yoggsaron_descend_portal() : CreatureScript("boss_yoggsaron_descend_portal") { }
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (!creature->GetUInt32Value(UNIT_NPC_FLAGS))
return true;
@ -1707,7 +1707,7 @@ public:
case ACTION_ILLUSION_ICECROWN: player->CastSpell(player, SPELL_TELEPORT_TO_ICECROWN, true); break;
case ACTION_ILLUSION_STORMWIND: player->CastSpell(player, SPELL_TELEPORT_TO_STORMWIND, true); break;
}
creature->SetUInt32Value(UNIT_NPC_FLAGS, 0);
creature->DespawnOrUnsummon(1000);
return true;
@ -2546,7 +2546,7 @@ class spell_yogg_saron_empowered : public SpellScriptLoader
{
Unit* target = GetUnitOwner();
uint8 stack = std::min(uint8(target->GetHealthPct()/10), (uint8)9);
if (!stack)
{
target->RemoveAura(SPELL_EMPOWERED);
@ -2892,10 +2892,10 @@ class achievement_yogg_saron_darkness : public AchievementCriteriaScript
if (player->GetInstanceScript())
if (Creature* sara = ObjectAccessor::GetCreature(*player, player->GetInstanceScript()->GetData64(NPC_SARA)))
return sara->GetAI()->GetData(DATA_GET_KEEPERS_COUNT) <= _keepersCount;
return false;
}
private:
uint32 const _keepersCount;
};
@ -2913,10 +2913,10 @@ class achievement_yogg_saron_he_waits_dreaming : public AchievementCriteriaScrip
if (player->GetInstanceScript())
if (Creature* sara = ObjectAccessor::GetCreature(*player, player->GetInstanceScript()->GetData64(NPC_BRAIN_OF_YOGG_SARON)))
return sara->GetAI()->GetData(DATA_GET_CURRENT_ILLUSION) == _requiredIllusion;
return false;
}
private:
uint8 const _requiredIllusion;
};
@ -2947,7 +2947,7 @@ void AddSC_boss_yoggsaron()
new boss_yoggsaron_keeper();
new boss_yoggsaron_descend_portal();
new boss_yoggsaron_influence_tentacle();
new boss_yoggsaron_immortal_guardian();
new boss_yoggsaron_immortal_guardian();
new boss_yoggsaron_lich_king();
new boss_yoggsaron_llane();
new boss_yoggsaron_neltharion();

View file

@ -25,44 +25,44 @@ class go_ulduar_teleporter : public GameObjectScript
public:
go_ulduar_teleporter() : GameObjectScript("ulduar_teleporter") { }
bool OnGossipHello(Player* player, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
InstanceScript* pInstance = go->GetInstanceScript();
if (!pInstance)
return true;
player->ADD_GOSSIP_ITEM(0, "Teleport to the Expedition Base Camp.", GOSSIP_SENDER_MAIN, BASE_CAMP);
AddGossipItemFor(player, 0, "Teleport to the Expedition Base Camp.", GOSSIP_SENDER_MAIN, BASE_CAMP);
if (pInstance->GetData(TYPE_LEVIATHAN) >= DONE) // count special
{
player->ADD_GOSSIP_ITEM(0, "Teleport to the Formation Grounds.", GOSSIP_SENDER_MAIN, GROUNDS);
AddGossipItemFor(player, 0, "Teleport to the Formation Grounds.", GOSSIP_SENDER_MAIN, GROUNDS);
if (pInstance->GetData(TYPE_LEVIATHAN) == DONE)
{
player->ADD_GOSSIP_ITEM(0, "Teleport to the Colossal Forge.", GOSSIP_SENDER_MAIN, FORGE);
AddGossipItemFor(player, 0, "Teleport to the Colossal Forge.", GOSSIP_SENDER_MAIN, FORGE);
if (pInstance->GetData(TYPE_XT002) == DONE)
{
player->ADD_GOSSIP_ITEM(0, "Teleport to the Scrapyard.", GOSSIP_SENDER_MAIN, SCRAPYARD);
player->ADD_GOSSIP_ITEM(0, "Teleport to the Antechamber of Ulduar.", GOSSIP_SENDER_MAIN, ANTECHAMBER);
AddGossipItemFor(player, 0, "Teleport to the Scrapyard.", GOSSIP_SENDER_MAIN, SCRAPYARD);
AddGossipItemFor(player, 0, "Teleport to the Antechamber of Ulduar.", GOSSIP_SENDER_MAIN, ANTECHAMBER);
if (pInstance->GetData(TYPE_KOLOGARN) == DONE)
{
player->ADD_GOSSIP_ITEM(0, "Teleport to the Shattered Walkway.", GOSSIP_SENDER_MAIN, WALKWAY);
AddGossipItemFor(player, 0, "Teleport to the Shattered Walkway.", GOSSIP_SENDER_MAIN, WALKWAY);
if (pInstance->GetData(TYPE_AURIAYA) == DONE)
{
player->ADD_GOSSIP_ITEM(0, "Teleport to the Conservatory of Life.", GOSSIP_SENDER_MAIN, CONSERVATORY);
AddGossipItemFor(player, 0, "Teleport to the Conservatory of Life.", GOSSIP_SENDER_MAIN, CONSERVATORY);
if (pInstance->GetData(DATA_CALL_TRAM))
player->ADD_GOSSIP_ITEM(0, "Teleport to the Spark of Imagination.", GOSSIP_SENDER_MAIN, SPARK);
AddGossipItemFor(player, 0, "Teleport to the Spark of Imagination.", GOSSIP_SENDER_MAIN, SPARK);
if (pInstance->GetData(TYPE_VEZAX) == DONE)
player->ADD_GOSSIP_ITEM(0, "Teleport to the Prison of Yogg-Saron.", GOSSIP_SENDER_MAIN, MADNESS);
AddGossipItemFor(player, 0, "Teleport to the Prison of Yogg-Saron.", GOSSIP_SENDER_MAIN, MADNESS);
}
}
}
}
}
player->SEND_GOSSIP_MENU(14424, go->GetGUID());
SendGossipMenuFor(player, 14424, go->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, GameObject* /*go*/, uint32 sender, uint32 action)
bool OnGossipSelect(Player* player, GameObject* /*go*/, uint32 sender, uint32 action) override
{
if (sender != GOSSIP_SENDER_MAIN || !player->getAttackers().empty())
return true;
@ -71,31 +71,31 @@ public:
{
case BASE_CAMP:
player->TeleportTo(603, -706.122f, -92.6024f, 429.876f, 0);
player->CLOSE_GOSSIP_MENU(); break;
CloseGossipMenuFor(player); break;
case GROUNDS:
player->TeleportTo(603, 131.248f, -35.3802f, 409.804f, 0);
player->CLOSE_GOSSIP_MENU(); break;
CloseGossipMenuFor(player); break;
case FORGE:
player->TeleportTo(603, 553.233f, -12.3247f, 409.679f, 0);
player->CLOSE_GOSSIP_MENU(); break;
CloseGossipMenuFor(player); break;
case SCRAPYARD:
player->TeleportTo(603, 926.292f, -11.4635f, 418.595f, 0);
player->CLOSE_GOSSIP_MENU(); break;
CloseGossipMenuFor(player); break;
case ANTECHAMBER:
player->TeleportTo(603, 1498.09f, -24.246f, 420.967f, 0);
player->CLOSE_GOSSIP_MENU(); break;
CloseGossipMenuFor(player); break;
case WALKWAY:
player->TeleportTo(603, 1859.45f, -24.1f, 448.9f, 0);
player->CLOSE_GOSSIP_MENU(); break;
CloseGossipMenuFor(player); break;
case CONSERVATORY:
player->TeleportTo(603, 2086.27f, -24.3134f, 421.239f, 0);
player->CLOSE_GOSSIP_MENU(); break;
CloseGossipMenuFor(player); break;
case MADNESS:
player->TeleportTo(603, 1854.8f, -11.46f, 334.57f, 4.8f);
player->CLOSE_GOSSIP_MENU(); break;
CloseGossipMenuFor(player); break;
case SPARK:
player->TeleportTo(603, 2517.9f, 2568.9f, 412.7f, 0);
player->CLOSE_GOSSIP_MENU(); break;
CloseGossipMenuFor(player); break;
}
return true;
@ -107,14 +107,14 @@ class npc_ulduar_keeper : public CreatureScript
public:
npc_ulduar_keeper() : CreatureScript("npc_ulduar_keeper_gossip") { }
bool OnGossipHello(Player* pPlayer, Creature* pCreature)
bool OnGossipHello(Player* player, Creature* creature) override
{
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Lend us your aid, keeper. Together we shall defeat Yogg-Saron.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, pCreature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, "Lend us your aid, keeper. Together we shall defeat Yogg-Saron.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
SendGossipMenuFor(player, DEFAULT_GOSSIP_MESSAGE, creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* /*player*/, Creature* creature, uint32 /*uiSender*/, uint32 /*uiAction*/)
bool OnGossipSelect(Player* /*player*/, Creature* creature, uint32 /*uiSender*/, uint32 /*uiAction*/) override
{
creature->SetUInt32Value(UNIT_NPC_FLAGS, 0);
uint8 _keeper = 0;
@ -184,14 +184,14 @@ class npc_ulduar_snow_mound : public CreatureScript
public:
npc_ulduar_snow_mound() : CreatureScript("npc_ulduar_snow_mound") { }
CreatureAI* GetAI(Creature* pCreature) const
CreatureAI* GetAI(Creature* creature) const
{
return new npc_ulduar_snow_moundAI(pCreature);
return new npc_ulduar_snow_moundAI(creature);
}
struct npc_ulduar_snow_moundAI : public ScriptedAI
{
npc_ulduar_snow_moundAI(Creature* pCreature) : ScriptedAI(pCreature)
npc_ulduar_snow_moundAI(Creature* creature) : ScriptedAI(creature)
{
activated = false;
me->CastSpell(me, 64615, true);
@ -230,14 +230,14 @@ class npc_ulduar_storm_tempered_keeper : public CreatureScript
public:
npc_ulduar_storm_tempered_keeper() : CreatureScript("npc_ulduar_storm_tempered_keeper") { }
CreatureAI* GetAI(Creature* pCreature) const
CreatureAI* GetAI(Creature* creature) const
{
return new npc_ulduar_storm_tempered_keeperAI(pCreature);
return new npc_ulduar_storm_tempered_keeperAI(creature);
}
struct npc_ulduar_storm_tempered_keeperAI : public ScriptedAI
{
npc_ulduar_storm_tempered_keeperAI(Creature* pCreature) : ScriptedAI(pCreature)
npc_ulduar_storm_tempered_keeperAI(Creature* creature) : ScriptedAI(creature)
{
otherGUID = 0;
}
@ -319,14 +319,14 @@ class npc_ulduar_arachnopod_destroyer : public CreatureScript
public:
npc_ulduar_arachnopod_destroyer() : CreatureScript("npc_ulduar_arachnopod_destroyer") { }
CreatureAI* GetAI(Creature* pCreature) const
CreatureAI* GetAI(Creature* creature) const
{
return new npc_ulduar_arachnopod_destroyerAI(pCreature);
return new npc_ulduar_arachnopod_destroyerAI(creature);
}
struct npc_ulduar_arachnopod_destroyerAI : public ScriptedAI
{
npc_ulduar_arachnopod_destroyerAI(Creature* pCreature) : ScriptedAI(pCreature)
npc_ulduar_arachnopod_destroyerAI(Creature* creature) : ScriptedAI(creature)
{
_spawnedMechanic = false;
me->ApplySpellImmune(0, IMMUNITY_ID, 64919, true); // Ice Nova from Ice Turret
@ -480,14 +480,14 @@ class go_call_tram : public GameObjectScript
public:
go_call_tram() : GameObjectScript("go_call_tram") { }
bool OnGossipHello(Player* /*pPlayer*/, GameObject* pGo)
bool OnGossipHello(Player* /*player*/, GameObject* go) override
{
InstanceScript* pInstance = pGo->GetInstanceScript();
InstanceScript* pInstance = go->GetInstanceScript();
if (!pInstance)
return false;
switch(pGo->GetEntry())
switch(go->GetEntry())
{
case 194914:
case 194438:

View file

@ -118,7 +118,7 @@ public:
uint8 Counter;
uint8 RandomUnfreeze[4];
void Reset()
void Reset()
{
for (uint8 i = 0; i < 4; ++i)
{
@ -137,7 +137,7 @@ public:
}
while (!good);
}
events.Reset();
summons.DoAction(ACTION_DESPAWN_ADDS);
summons.DespawnAll();
@ -306,7 +306,7 @@ public:
break;
}
}
DoMeleeAttackIfReady();
}
@ -352,7 +352,7 @@ public:
EventMap events;
SummonList summons;
void Reset()
void Reset()
{
summons.DespawnAll();
events.Reset();
@ -444,9 +444,9 @@ public:
DoMeleeAttackIfReady();
}
void JustDied(Unit* /*pKiller*/)
void JustDied(Unit* /*pKiller*/)
{
if (m_pInstance)
if (m_pInstance)
{
if (Creature *palehoof = ObjectAccessor::GetCreature(*me, m_pInstance->GetData64(DATA_GORTOK_PALEHOOF)))
palehoof->AI()->DoAction(ACTION_MINIBOSS_DIED);
@ -479,7 +479,7 @@ public:
InstanceScript *m_pInstance;
EventMap events;
void Reset()
void Reset()
{
events.Reset();
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE);
@ -554,9 +554,9 @@ public:
DoMeleeAttackIfReady();
}
void JustDied(Unit* /*pKiller*/)
void JustDied(Unit* /*pKiller*/)
{
if (m_pInstance)
if (m_pInstance)
{
if (Creature *palehoof = ObjectAccessor::GetCreature(*me, m_pInstance->GetData64(DATA_GORTOK_PALEHOOF)))
palehoof->AI()->DoAction(ACTION_MINIBOSS_DIED);
@ -581,7 +581,7 @@ public:
struct npc_ravenous_furbolgAI : public ScriptedAI
{
npc_ravenous_furbolgAI(Creature* pCreature) : ScriptedAI(pCreature)
npc_ravenous_furbolgAI(Creature* pCreature) : ScriptedAI(pCreature)
{
m_pInstance = pCreature->GetInstanceScript();
}
@ -589,7 +589,7 @@ public:
InstanceScript *m_pInstance;
EventMap events;
void Reset()
void Reset()
{
events.Reset();
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE);
@ -662,9 +662,9 @@ public:
DoMeleeAttackIfReady();
}
void JustDied(Unit* /*pKiller*/)
void JustDied(Unit* /*pKiller*/)
{
if (m_pInstance)
if (m_pInstance)
{
if (Creature *palehoof = ObjectAccessor::GetCreature(*me, m_pInstance->GetData64(DATA_GORTOK_PALEHOOF)))
palehoof->AI()->DoAction(ACTION_MINIBOSS_DIED);
@ -689,7 +689,7 @@ public:
struct npc_frenzied_worgenAI : public ScriptedAI
{
npc_frenzied_worgenAI(Creature* pCreature) : ScriptedAI(pCreature)
npc_frenzied_worgenAI(Creature* pCreature) : ScriptedAI(pCreature)
{
m_pInstance = pCreature->GetInstanceScript();
}
@ -697,7 +697,7 @@ public:
InstanceScript *m_pInstance;
EventMap events;
void Reset()
void Reset()
{
events.Reset();
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE);
@ -770,9 +770,9 @@ public:
DoMeleeAttackIfReady();
}
void JustDied(Unit* /*pKiller*/)
void JustDied(Unit* /*pKiller*/)
{
if (m_pInstance)
if (m_pInstance)
{
if (Creature *palehoof = ObjectAccessor::GetCreature(*me, m_pInstance->GetData64(DATA_GORTOK_PALEHOOF)))
palehoof->AI()->DoAction(ACTION_MINIBOSS_DIED);
@ -782,20 +782,20 @@ public:
};
class go_palehoof_sphere : public GameObjectScript
{
public:
go_palehoof_sphere() : GameObjectScript("go_palehoof_sphere") { }
{
public:
go_palehoof_sphere() : GameObjectScript("go_palehoof_sphere") { }
bool OnGossipHello(Player * /*pPlayer*/, GameObject *pGO)
bool OnGossipHello(Player * /*pPlayer*/, GameObject *go) override
{
InstanceScript *pInstance = pGO->GetInstanceScript();
InstanceScript *pInstance = go->GetInstanceScript();
Creature *pPalehoof = ObjectAccessor::GetCreature(*pGO, pInstance ? pInstance->GetData64(DATA_GORTOK_PALEHOOF) : 0);
Creature *pPalehoof = ObjectAccessor::GetCreature(*go, pInstance ? pInstance->GetData64(DATA_GORTOK_PALEHOOF) : 0);
if (pPalehoof && pPalehoof->IsAlive())
{
// maybe these are hacks :(
pGO->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
pGO->SetGoState(GO_STATE_ACTIVE);
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
go->SetGoState(GO_STATE_ACTIVE);
pPalehoof->AI()->DoAction(ACTION_START_EVENT);
}

View file

@ -156,7 +156,7 @@ public:
{
if (IsHeroic())
m_pInstance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_TIMED_LODI_DODI);
m_pInstance->SetData(DATA_SKADI_THE_RUTHLESS, IN_PROGRESS);
}
@ -168,7 +168,7 @@ public:
void DoAction(int32 param)
{
if (param == ACTION_PHASE2)
{
SecondPhase = true;
@ -306,7 +306,7 @@ public:
AchievementHitCount++;
if (AchievementHitCount >= 3 && m_pInstance)
m_pInstance->SetData(DATA_SKADI_ACHIEVEMENT, true);
}
}
@ -333,7 +333,7 @@ public:
cr->CastSpell(cr, cr->GetMap()->IsHeroic() ? SPELL_FLAME_BREATH_H : SPELL_FLAME_BREATH_N, true);
if ((cr = me->SummonCreature(NPC_BREATH_TRIGGER, 471.0f, -484.7f, 105, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000)))
cr->CastSpell(cr, cr->GetMap()->IsHeroic() ? SPELL_FLAME_BREATH_H : SPELL_FLAME_BREATH_N, true);
for (uint8 j = 0; j < 7; j++)
if ((cr = me->SummonCreature(NPC_BREATH_TRIGGER, 477.0f, -507.0f+(j*3), 105.0f, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000)))
cr->CastSpell(cr, cr->GetMap()->IsHeroic() ? SPELL_FLAME_BREATH_H : SPELL_FLAME_BREATH_N, true);
@ -351,7 +351,7 @@ public:
break;
case 2:
case 3:
if (m_pInstance)
if (m_pInstance)
m_pInstance->SetData(SKADI_IN_RANGE, 1);
me->MonsterTextEmote(EMOTE_IN_RANGE, 0, true);
@ -408,7 +408,7 @@ public:
return;
}
RemoveSkadi(true);
}
@ -460,7 +460,7 @@ public:
me->CastSpell(me, SPELL_FLAME_VISUAL, false);
}
if (m_pInstance)
if (m_pInstance)
m_pInstance->SetData(SKADI_IN_RANGE, 0);
currentPos = targetPoint;
@ -486,13 +486,13 @@ public:
};
class go_harpoon_canon : public GameObjectScript
{
public:
go_harpoon_canon() : GameObjectScript("go_harpoon_canon") { }
{
public:
go_harpoon_canon() : GameObjectScript("go_harpoon_canon") { }
bool OnGossipHello(Player* pPlayer, GameObject* pGO)
bool OnGossipHello(Player* pPlayer, GameObject* go) override
{
InstanceScript *m_pInstance = pGO->GetInstanceScript();
InstanceScript *m_pInstance = go->GetInstanceScript();
if (m_pInstance && m_pInstance->GetData(DATA_SKADI_THE_RUTHLESS) == IN_PROGRESS)
if (m_pInstance->GetData(SKADI_IN_RANGE) == 1)
{
@ -509,7 +509,7 @@ public:
grauf->AI()->DoAction(ACTION_MYGIRL_ACHIEVEMENT);
}
pGO->CastSpell((Unit*)NULL, SPELL_LAUNCH_HARPOON);
go->CastSpell((Unit*)NULL, SPELL_LAUNCH_HARPOON);
}
return true;

View file

@ -20,9 +20,9 @@ class go_vh_activation_crystal : public GameObjectScript
public:
go_vh_activation_crystal() : GameObjectScript("go_vh_activation_crystal") { }
bool OnGossipHello(Player* /*pPlayer*/, GameObject* pGo)
bool OnGossipHello(Player* /*player*/, GameObject* go) override
{
if (InstanceScript* pInstance = pGo->GetInstanceScript())
if (InstanceScript* pInstance = go->GetInstanceScript())
pInstance->SetData(DATA_ACTIVATE_DEFENSE_SYSTEM, 1);
return true;
}
@ -41,42 +41,43 @@ class npc_vh_sinclari : public CreatureScript
public:
npc_vh_sinclari() : CreatureScript("npc_vh_sinclari") { }
bool OnGossipHello(Player* pPlayer, Creature* pCreature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (InstanceScript* pInstance = pCreature->GetInstanceScript())
if (InstanceScript* pInstance = creature->GetInstanceScript())
switch (pInstance->GetData(DATA_ENCOUNTER_STATUS))
{
case NOT_STARTED:
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_START_EVENT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
pPlayer->SEND_GOSSIP_MENU(13853, pCreature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_START_EVENT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
SendGossipMenuFor(player, 13853, creature->GetGUID());
break;
case IN_PROGRESS:
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_I_WANT_IN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3);
pPlayer->SEND_GOSSIP_MENU(13853, pCreature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_I_WANT_IN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3);
SendGossipMenuFor(player, 13853, creature->GetGUID());
break;
default: // DONE or invalid
pPlayer->SEND_GOSSIP_MENU(13910, pCreature->GetGUID());
SendGossipMenuFor(player, 13910, creature->GetGUID());
}
return true;
}
bool OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 /*uiSender*/, uint32 uiAction)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*uiSender*/, uint32 uiAction) override
{
pPlayer->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch(uiAction)
{
case GOSSIP_ACTION_INFO_DEF+1:
pPlayer->CLOSE_GOSSIP_MENU();
if (InstanceScript *pInstance = pCreature->GetInstanceScript())
CloseGossipMenuFor(player);
if (InstanceScript *pInstance = creature->GetInstanceScript())
pInstance->SetData(DATA_START_INSTANCE, 1);
break;
case GOSSIP_ACTION_INFO_DEF+2:
pPlayer->SEND_GOSSIP_MENU(13854, pCreature->GetGUID());
SendGossipMenuFor(player, 13854, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+3:
pPlayer->NearTeleportTo(playerTeleportPosition.GetPositionX(), playerTeleportPosition.GetPositionY(), playerTeleportPosition.GetPositionZ(), playerTeleportPosition.GetOrientation(), true);
pPlayer->CLOSE_GOSSIP_MENU();
player->NearTeleportTo(playerTeleportPosition.GetPositionX(), playerTeleportPosition.GetPositionY(), playerTeleportPosition.GetPositionZ(), playerTeleportPosition.GetOrientation(), true);
CloseGossipMenuFor(player);
break;
}
return true;
@ -101,9 +102,9 @@ class npc_vh_teleportation_portal : public CreatureScript
public:
npc_vh_teleportation_portal() : CreatureScript("npc_vh_teleportation_portal") { }
CreatureAI* GetAI(Creature *pCreature) const
CreatureAI* GetAI(Creature *creature) const
{
return new npc_vh_teleportation_portalAI(pCreature);
return new npc_vh_teleportation_portalAI(creature);
}
struct npc_vh_teleportation_portalAI : public NullCreatureAI
@ -390,7 +391,7 @@ struct violet_hold_trashAI : public npc_escortAI
***********/
enum AzureInvaderSpells
{
{
SPELL_CLEAVE = 15496,
SPELL_IMPALE_N = 58459,
SPELL_IMPALE_H = 59256,
@ -470,9 +471,9 @@ class npc_azure_invader : public CreatureScript
public:
npc_azure_invader() : CreatureScript("npc_azure_invader") { }
CreatureAI* GetAI(Creature* pCreature) const
CreatureAI* GetAI(Creature* creature) const
{
return new npc_azure_invaderAI (pCreature);
return new npc_azure_invaderAI (creature);
}
struct npc_azure_invaderAI : public violet_hold_trashAI
@ -543,9 +544,9 @@ class npc_azure_binder : public CreatureScript
public:
npc_azure_binder() : CreatureScript("npc_azure_binder") { }
CreatureAI* GetAI(Creature* pCreature) const
CreatureAI* GetAI(Creature* creature) const
{
return new npc_azure_binderAI (pCreature);
return new npc_azure_binderAI (creature);
}
struct npc_azure_binderAI : public violet_hold_trashAI
@ -616,9 +617,9 @@ class npc_azure_mage_slayer : public CreatureScript
public:
npc_azure_mage_slayer() : CreatureScript("npc_azure_mage_slayer") { }
CreatureAI* GetAI(Creature* pCreature) const
CreatureAI* GetAI(Creature* creature) const
{
return new npc_azure_mage_slayerAI (pCreature);
return new npc_azure_mage_slayerAI (creature);
}
struct npc_azure_mage_slayerAI : public violet_hold_trashAI
@ -671,9 +672,9 @@ class npc_azure_raider : public CreatureScript
public:
npc_azure_raider() : CreatureScript("npc_azure_raider") { }
CreatureAI* GetAI(Creature* pCreature) const
CreatureAI* GetAI(Creature* creature) const
{
return new npc_azure_raiderAI (pCreature);
return new npc_azure_raiderAI (creature);
}
struct npc_azure_raiderAI : public violet_hold_trashAI
@ -718,9 +719,9 @@ class npc_azure_stalker : public CreatureScript
public:
npc_azure_stalker() : CreatureScript("npc_azure_stalker") { }
CreatureAI* GetAI(Creature* pCreature) const
CreatureAI* GetAI(Creature* creature) const
{
return new npc_azure_stalkerAI (pCreature);
return new npc_azure_stalkerAI (creature);
}
struct npc_azure_stalkerAI : public violet_hold_trashAI
@ -779,9 +780,9 @@ class npc_azure_spellbreaker : public CreatureScript
public:
npc_azure_spellbreaker() : CreatureScript("npc_azure_spellbreaker") { }
CreatureAI* GetAI(Creature* pCreature) const
CreatureAI* GetAI(Creature* creature) const
{
return new npc_azure_spellbreakerAI (pCreature);
return new npc_azure_spellbreakerAI (creature);
}
struct npc_azure_spellbreakerAI : public violet_hold_trashAI
@ -854,9 +855,9 @@ class npc_azure_captain : public CreatureScript
public:
npc_azure_captain() : CreatureScript("npc_azure_captain") { }
CreatureAI* GetAI(Creature* pCreature) const
CreatureAI* GetAI(Creature* creature) const
{
return new npc_azure_captainAI (pCreature);
return new npc_azure_captainAI (creature);
}
struct npc_azure_captainAI : public violet_hold_trashAI
@ -901,9 +902,9 @@ class npc_azure_sorceror : public CreatureScript
public:
npc_azure_sorceror() : CreatureScript("npc_azure_sorceror") { }
CreatureAI* GetAI(Creature* pCreature) const
CreatureAI* GetAI(Creature* creature) const
{
return new npc_azure_sorcerorAI (pCreature);
return new npc_azure_sorcerorAI (creature);
}
struct npc_azure_sorcerorAI : public violet_hold_trashAI
@ -964,9 +965,9 @@ class npc_azure_saboteur : public CreatureScript
public:
npc_azure_saboteur() : CreatureScript("npc_azure_saboteur") { }
CreatureAI* GetAI(Creature* pCreature) const
CreatureAI* GetAI(Creature* creature) const
{
return new npc_azure_saboteurAI (pCreature);
return new npc_azure_saboteurAI (creature);
}
struct npc_azure_saboteurAI : public npc_escortAI
@ -1145,11 +1146,12 @@ class go_violet_hold_gate_lever : public GameObjectScript
public:
go_violet_hold_gate_lever() : GameObjectScript("go_violet_hold_gate_lever") { }
bool OnGossipHello(Player* plr, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
if (GameObject* gate = go->GetMap()->GetGameObject(MAKE_NEW_GUID(61606, 193019, HIGHGUID_GAMEOBJECT)))
if (gate->getLootState() == GO_READY)
gate->UseDoorOrButton(0, false, plr);
gate->UseDoorOrButton(0, false, player);
return false;
}
};

View file

@ -275,24 +275,24 @@ class npc_corastrasza : public CreatureScript
public:
npc_corastrasza() : CreatureScript("npc_corastrasza") { }
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
if (player->GetQuestStatus(QUEST_ACES_HIGH) == QUEST_STATUS_INCOMPLETE || player->GetQuestStatus(QUEST_ACES_HIGH_DAILY) == QUEST_STATUS_INCOMPLETE) //It's the same dragon for both quests.
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_C_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_C_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_INFO_DEF+1)
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->CastSpell(player, SPELL_SUMMON_WYRMREST_SKYTALON, true);
player->CastSpell(player, SPELL_WYRMREST_SKYTALON_RIDE_PERIODIC, true);
@ -321,23 +321,23 @@ class npc_iruk : public CreatureScript
public:
npc_iruk() : CreatureScript("npc_iruk") { }
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (player->GetQuestStatus(QUEST_SPIRITS_WATCH_OVER_US) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_I, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_I, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->PlayerTalkClass->SendGossipMenu(GOSSIP_TEXT_I, creature->GetGUID());
SendGossipMenuFor(player, GOSSIP_TEXT_I, creature);
return true;
}
bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (action)
{
case GOSSIP_ACTION_INFO_DEF+1:
player->CastSpell(player, SPELL_CREATURE_TOTEM_OF_ISSLIRUK, true);
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
break;
}
@ -1106,7 +1106,7 @@ public:
uint64 uiPlayerGUID;
void Reset()
void Reset() override
{
if (uiEmoteState)
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, uiEmoteState);
@ -1124,7 +1124,7 @@ public:
me->RestoreFaction();
}
void DoAction(int32 /*iParam*/)
void DoAction(int32 /*iParam*/) override
{
me->StopMoving();
me->SetUInt32Value(UNIT_NPC_FLAGS, 0);
@ -1134,7 +1134,7 @@ public:
uiEventPhase = 1;
}
void SetGUID(uint64 uiGuid, int32 /*iId*/)
void SetGUID(uint64 uiGuid, int32 /*iId*/) override
{
uiPlayerGUID = uiGuid;
}
@ -1146,7 +1146,7 @@ public:
AttackStart(player);
}
void UpdateAI(uint32 uiDiff)
void UpdateAI(uint32 uiDiff) override
{
if (uiEventTimer && uiEventTimer <= uiDiff)
{
@ -1207,12 +1207,12 @@ public:
}
};
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_hidden_cultistAI(creature);
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
uint32 uiGossipText = 0;
const char* charGossipItem;
@ -1237,23 +1237,23 @@ public:
}
if (player->HasAura(SPELL_RIGHTEOUS_VISION) && player->GetQuestStatus(QUEST_THE_HUNT_IS_ON) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, charGossipItem, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, charGossipItem, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
if (creature->IsVendor())
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
AddGossipItemFor(player, GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
player->SEND_GOSSIP_MENU(uiGossipText, creature->GetGUID());
SendGossipMenuFor(player, uiGossipText, creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_INFO_DEF+1)
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
creature->AI()->SetGUID(player->GetGUID());
creature->AI()->DoAction(1);
}

View file

@ -80,7 +80,7 @@ enum DisguiseEvent
ACTION_SHIRTS = 2,
ACTION_PANTS = 3,
ACTION_UNMENTIONABLES = 4,
EVENT_INTRO_DH1 = 1,
EVENT_INTRO_DH2 = 2,
EVENT_INTRO_DH3 = 3,
@ -133,13 +133,13 @@ public:
{
npc_shandy_dalaranAI(Creature* creature) : ScriptedAI(creature) { }
void Reset()
void Reset() override
{
_events.Reset();
_aquanosGUID = 0;
}
void SetData(uint32 type, uint32 /*data*/)
}
void SetData(uint32 type, uint32 /*data*/) override
{
switch(type)
{
@ -177,8 +177,8 @@ public:
Talk(SAY_SHANDY_WATER + _lSource - 1);
_canWash = true;
}
void UpdateAI(uint32 diff)
void UpdateAI(uint32 diff) override
{
_events.Update(diff);
switch (_events.GetEvent())
@ -193,7 +193,7 @@ public:
_events.ScheduleEvent(EVENT_INTRO_DH3, 6000);
else
RollTask();
_events.PopEvent();
break;
case EVENT_INTRO_DH3:
@ -202,7 +202,7 @@ public:
_events.PopEvent();
break;
case EVENT_INTRO_DH4:
Talk(SAY_SHANDY5);
Talk(SAY_SHANDY5);
_events.ScheduleEvent(EVENT_INTRO_DH5, 3000);
_events.PopEvent();
break;
@ -234,30 +234,30 @@ public:
bool _canWash;
};
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
if (player->GetQuestStatus(QUEST_SUITABLE_DISGUISE_A) == QUEST_STATUS_INCOMPLETE ||
if (player->GetQuestStatus(QUEST_SUITABLE_DISGUISE_A) == QUEST_STATUS_INCOMPLETE ||
player->GetQuestStatus(QUEST_SUITABLE_DISGUISE_H) == QUEST_STATUS_INCOMPLETE)
{
if(player->GetTeamId() == TEAM_ALLIANCE)
player->ADD_GOSSIP_ITEM(0, "Arcanist Tybalin said you might be able to lend me a certain tabard.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
AddGossipItemFor(player, 0, "Arcanist Tybalin said you might be able to lend me a certain tabard.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
else
player->ADD_GOSSIP_ITEM(0, "Magister Hathorel said you might be able to lend me a certain tabard.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
AddGossipItemFor(player, 0, "Magister Hathorel said you might be able to lend me a certain tabard.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
}
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
switch (action)
{
case GOSSIP_ACTION_INFO_DEF:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
creature->SetUInt32Value(UNIT_NPC_FLAGS, 0);
creature->AI()->SetData(ACTION_SHANDY_INTRO, 0);
break;
@ -265,7 +265,7 @@ public:
return true;
}
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_shandy_dalaranAI(creature);
}
@ -760,7 +760,7 @@ public:
}
void UpdateAI(uint32 diff)
{
if (!UpdateVictim())
return;

View file

@ -247,15 +247,15 @@ class go_the_pearl_of_the_depths : public GameObjectScript
public:
go_the_pearl_of_the_depths() : GameObjectScript("go_the_pearl_of_the_depths") { }
bool OnGossipHello(Player* pPlayer, GameObject* pGo)
bool OnGossipHello(Player* player, GameObject* go) override
{
if( !pPlayer || !pGo )
if(!player || !go)
return true;
Creature* t = pPlayer->FindNearestCreature(NPC_CONVERSING_WITH_THE_DEPTHS_TRIGGER, 10.0f, true);
if( t && t->AI() && CAST_AI(npc_conversing_with_the_depths_trigger::npc_conversing_with_the_depths_triggerAI, t->AI()) )
if( !CAST_AI(npc_conversing_with_the_depths_trigger::npc_conversing_with_the_depths_triggerAI, t->AI())->running )
CAST_AI(npc_conversing_with_the_depths_trigger::npc_conversing_with_the_depths_triggerAI, t->AI())->Start(pPlayer->GetGUID());
Creature* t = player->FindNearestCreature(NPC_CONVERSING_WITH_THE_DEPTHS_TRIGGER, 10.0f, true);
if(t && t->AI() && CAST_AI(npc_conversing_with_the_depths_trigger::npc_conversing_with_the_depths_triggerAI, t->AI()))
if(!CAST_AI(npc_conversing_with_the_depths_trigger::npc_conversing_with_the_depths_triggerAI, t->AI())->running)
CAST_AI(npc_conversing_with_the_depths_trigger::npc_conversing_with_the_depths_triggerAI, t->AI())->Start(player->GetGUID());
return true;
}
@ -343,7 +343,7 @@ public:
{
return NPC_INFINITE_ASSAILANT+urand(0,2);
}
void UpdateAI(uint32 diff)
{
events.Update(diff);
@ -462,15 +462,15 @@ public:
struct npc_future_youAI : public ScriptedAI
{
npc_future_youAI(Creature* c) : ScriptedAI(c) {}
void EnterEvadeMode()
void EnterEvadeMode()
{
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IN_COMBAT);
me->ClearUnitState(UNIT_STATE_EVADE);
}
void Reset()
{
void Reset()
{
if (me->ToTempSummon() && me->ToTempSummon()->GetSummoner())
me->setFaction(me->ToTempSummon()->GetSummoner()->getFaction());
}

View file

@ -53,7 +53,7 @@ public:
owner->CastSpell(owner, 44463, true);
}
}
void SpellHit(Unit* caster, const SpellInfo* spellInfo)
{
if (caster && spellInfo->Id == 44454)
@ -93,9 +93,9 @@ public:
setphase(phase);
timer = 0;
}
timer += diff;
DoMeleeAttackIfReady();
}
@ -326,7 +326,7 @@ class npc_razael_and_lyana : public CreatureScript
public:
npc_razael_and_lyana() : CreatureScript("npc_razael_and_lyana") { }
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
@ -337,35 +337,35 @@ public:
case NPC_RAZAEL:
if (!player->GetReqKillOrCastCurrentCount(QUEST_REPORTS_FROM_THE_FIELD, NPC_RAZAEL))
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_RAZAEL_REPORT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
player->SEND_GOSSIP_MENU(GOSSIP_TEXTID_RAZAEL1, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_RAZAEL_REPORT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
SendGossipMenuFor(player, GOSSIP_TEXTID_RAZAEL1, creature->GetGUID());
return true;
}
break;
case NPC_LYANA:
if (!player->GetReqKillOrCastCurrentCount(QUEST_REPORTS_FROM_THE_FIELD, NPC_LYANA))
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LYANA_REPORT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
player->SEND_GOSSIP_MENU(GOSSIP_TEXTID_LYANA1, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LYANA_REPORT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
SendGossipMenuFor(player, GOSSIP_TEXTID_LYANA1, creature->GetGUID());
return true;
}
break;
}
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (action)
{
case GOSSIP_ACTION_INFO_DEF + 1:
player->SEND_GOSSIP_MENU(GOSSIP_TEXTID_RAZAEL2, creature->GetGUID());
SendGossipMenuFor(player, GOSSIP_TEXTID_RAZAEL2, creature->GetGUID());
player->TalkedToCreature(NPC_RAZAEL, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 2:
player->SEND_GOSSIP_MENU(GOSSIP_TEXTID_LYANA2, creature->GetGUID());
SendGossipMenuFor(player, GOSSIP_TEXTID_LYANA2, creature->GetGUID());
player->TalkedToCreature(NPC_LYANA, creature->GetGUID());
break;
}

View file

@ -123,8 +123,8 @@ public:
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
}
void JustSummoned(Creature* creature)
{
void JustSummoned(Creature* creature)
{
summons.Summon(creature);
if (creature->GetEntry() != NPC_PRINCE)
if (Player* player = ObjectAccessor::GetPlayer(*me, playerGUID))
@ -191,7 +191,7 @@ public:
me->MonsterYell("Khit'rix the Dark Master has been defeated by $N and his band of companions. Let the next challenge be issued!", LANG_UNIVERSAL, ObjectAccessor::GetPlayer(*me, playerGUID));
break;
case QUEST_BFV_SIGRID:
me->MonsterYell("$N has defeated Sigrid Iceborn for a second time. Well, this time he did it with the help of his friends, but a win is a win!", LANG_UNIVERSAL, ObjectAccessor::GetPlayer(*me, playerGUID));
me->MonsterYell("$N has defeated Sigrid Iceborn for a second time. Well, this time he did it with the help of his friends, but a win is a win!", LANG_UNIVERSAL, ObjectAccessor::GetPlayer(*me, playerGUID));
break;
case QUEST_BFV_CARNAGE:
me->MonsterYell("The horror known as Carnage is no more. Could it be that $N is truly worthy of battle in Valhalas? We shall see.", LANG_UNIVERSAL, ObjectAccessor::GetPlayer(*me, playerGUID));
@ -368,7 +368,7 @@ public:
CombatAI::Reset();
}
void UpdateAI(uint32 diff)
void UpdateAI(uint32 diff)
{
attackTimer += diff;
if (attackTimer >= 1500)
@ -459,7 +459,7 @@ class npc_lord_arete : public CreatureScript
{
_landgrenGUID = 0;
_landgrenSoulGUID = 0;
events.Reset();
events.RescheduleEvent(EVENT_START, 1000);
me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE);
@ -617,7 +617,7 @@ class npc_boneguard_footman : public CreatureScript
}
}
}
ScriptedAI::UpdateAI(diff);
}
};
@ -666,9 +666,9 @@ class npc_tirions_gambit_tirion : public CreatureScript
public:
npc_tirions_gambit_tirion(): CreatureScript("npc_tirions_gambit_tirion"){}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 /*action*/)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 /*action*/) override
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
creature->AI()->DoAction(ACTION_START_EVENT);
return true;
}
@ -682,20 +682,19 @@ class npc_tirions_gambit_tirion : public CreatureScript
EventMap events;
SummonList summons;
void Reset()
void Reset() override
{
me->setActive(false);
me->SetStandState(UNIT_STAND_STATE_STAND);
}
void SetData(uint32 type, uint32 data)
void SetData(uint32 type, uint32 data) override
{
if (type == 1 && data == 1)
events.ScheduleEvent(EVENT_SCENE_0+30, 10000);
}
void DoAction(int32 param)
void DoAction(int32 param) override
{
if (param == ACTION_START_EVENT)
{
@ -718,7 +717,7 @@ class npc_tirions_gambit_tirion : public CreatureScript
}
}
void JustSummoned(Creature* summon)
void JustSummoned(Creature* summon) override
{
summons.Summon(summon);
if (summon->GetEntry() == NPC_CHOSEN_ZEALOT || summon->GetEntry() == NPC_TIRION_LICH_KING)
@ -731,12 +730,12 @@ class npc_tirions_gambit_tirion : public CreatureScript
}
}
void SummonedCreatureDespawn(Creature* summon)
void SummonedCreatureDespawn(Creature* summon) override
{
summons.Despawn(summon);
}
void WaypointReached(uint32 pointId)
void WaypointReached(uint32 pointId) override
{
switch (pointId)
{
@ -797,7 +796,7 @@ class npc_tirions_gambit_tirion : public CreatureScript
}
}
void UpdateEscortAI(uint32 diff)
void UpdateEscortAI(uint32 diff) override
{
events.Update(diff);
switch (events.ExecuteEvent())
@ -1016,7 +1015,7 @@ class npc_tirions_gambit_tirion : public CreatureScript
}
};
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_tirions_gambit_tirionAI(creature);
}
@ -1123,7 +1122,7 @@ class spell_charge_shield_bomber : public SpellScriptLoader
Aura* aura = ship->GetAura(SPELL_INFRA_GREEN_SHIELD);
if (!aura)
return;
aura->ModStackAmount(GetEffectValue() - 1);
}
@ -1304,7 +1303,7 @@ class npc_infra_green_bomber_generic : public CreatureScript
me->MonsterTextEmote("Your Vehicle is burning!", GetSummoner(), true);
passenger->AddAura(SPELL_BURNING, passenger);
}
for (uint8 seat = 3; seat <= 5; ++seat)
if (Unit* banner = kit->GetPassenger(seat))
if (!banner->HasAura(SPELL_COSMETIC_FIRE))
@ -1373,7 +1372,7 @@ class npc_infra_green_bomber_generic : public CreatureScript
if (Unit* banner = kit->GetPassenger(seat))
if (banner->HasAura(SPELL_COSMETIC_FIRE))
fireCount++;
if (fireCount)
Unit::DealDamage(me, me, 3000*fireCount, NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_FIRE);
else // Heal

View file

@ -155,7 +155,7 @@ public:
events.RescheduleEvent(EVENT_ARTRUIS_HP_CHECK, 1000);
events.RescheduleEvent(EVENT_ARTRUIS_TALK1, 6000);
}
void JustDied(Unit* /*killer*/)
{
if (GameObject* go = me->SummonGameObject(GO_ARTRUIS_PHYLACTERY, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 600000))
@ -312,7 +312,7 @@ public:
uint8 playeraction;
npc_still_at_it_triggerAI(Creature* pCreature) : NullCreatureAI(pCreature) {}
void Reset()
{
running = false;
@ -357,7 +357,7 @@ public:
{
currentstep++;
uint8 s = urand(0,2);
if (Creature* th = ObjectAccessor::GetCreature(*me, thunderbrewGUID))
th->HandleEmoteCommand(EMOTE_ONESHOT_CHEER_NO_SHEATHE);
@ -447,7 +447,7 @@ class npc_mcmanus : public CreatureScript
public:
npc_mcmanus() : CreatureScript("npc_mcmanus") {}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (!player)
return true;
@ -456,13 +456,13 @@ public:
player->PrepareQuestMenu(creature->GetGUID());
if (player->GetQuestStatus(12644) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "I'm ready to start the distillation, uh, Tipsy.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, "I'm ready to start the distillation, uh, Tipsy.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*uiSender*/, uint32 uiAction)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*uiSender*/, uint32 uiAction) override
{
if (!player)
return true;
@ -479,7 +479,7 @@ public:
}
}
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
return true;
}
};
@ -489,7 +489,7 @@ class go_pressure_valve : public GameObjectScript
public:
go_pressure_valve() : GameObjectScript("go_pressure_valve") { }
bool OnGossipHello(Player* player, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
if (!player)
return true;
@ -508,7 +508,7 @@ class go_brazier : public GameObjectScript
public:
go_brazier() : GameObjectScript("go_brazier") { }
bool OnGossipHello(Player* player, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
if (!player)
return true;
@ -585,33 +585,33 @@ class npc_vekjik : public CreatureScript
public:
npc_vekjik() : CreatureScript("npc_vekjik") { }
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
if (player->GetQuestStatus(QUEST_MAKING_PEACE) == QUEST_STATUS_INCOMPLETE)
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_VEKJIK_ITEM1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->SEND_GOSSIP_MENU(GOSSIP_TEXTID_VEKJIK1, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_VEKJIK_ITEM1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
SendGossipMenuFor(player, GOSSIP_TEXTID_VEKJIK1, creature->GetGUID());
return true;
}
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (action)
{
case GOSSIP_ACTION_INFO_DEF+1:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_VEKJIK_ITEM2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
player->SEND_GOSSIP_MENU(GOSSIP_TEXTID_VEKJIK2, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_VEKJIK_ITEM2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
SendGossipMenuFor(player, GOSSIP_TEXTID_VEKJIK2, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF+2:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
creature->AI()->Talk(SAY_TEXTID_VEKJIK1, player);
player->AreaExploredOrEventHappens(QUEST_MAKING_PEACE);
//creature->CastSpell(player, SPELL_FREANZYHEARTS_FURY, true);
@ -647,34 +647,34 @@ class npc_avatar_of_freya : public CreatureScript
public:
npc_avatar_of_freya() : CreatureScript("npc_avatar_of_freya") { }
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
if (player->GetQuestStatus(QUEST_FREYA_PACT) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_AOF1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_AOF1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->PlayerTalkClass->SendGossipMenu(GOSSIP_TEXTID_AVATAR1, creature->GetGUID());
SendGossipMenuFor(player, GOSSIP_TEXTID_AVATAR1, creature);
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (action)
{
case GOSSIP_ACTION_INFO_DEF+1:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_AOF2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
player->PlayerTalkClass->SendGossipMenu(GOSSIP_TEXTID_AVATAR2, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_AOF2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
SendGossipMenuFor(player, GOSSIP_TEXTID_AVATAR2, creature);
break;
case GOSSIP_ACTION_INFO_DEF+2:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_AOF3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3);
player->PlayerTalkClass->SendGossipMenu(GOSSIP_TEXTID_AVATAR3, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_AOF3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3);
SendGossipMenuFor(player, GOSSIP_TEXTID_AVATAR3, creature);
break;
case GOSSIP_ACTION_INFO_DEF+3:
player->CastSpell(player, SPELL_FREYA_CONVERSATION, true);
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
break;
}
return true;
@ -1074,32 +1074,32 @@ public:
}
};
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_adventurous_dwarfAI(creature);
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (player->GetQuestStatus(QUEST_12634) != QUEST_STATUS_INCOMPLETE)
return false;
if (player->GetItemCount(ITEM_ORANGE) < 1)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_OPTION_ORANGE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_OPTION_ORANGE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
if (player->GetItemCount(ITEM_BANANAS) < 2)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_OPTION_BANANAS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_OPTION_BANANAS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
if (player->GetItemCount(ITEM_PAPAYA) < 1)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_OPTION_PAPAYA, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_OPTION_PAPAYA, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
player->PlayerTalkClass->SendGossipMenu(GOSSIP_MENU_DWARF, creature->GetGUID());
SendGossipMenuFor(player, GOSSIP_MENU_DWARF, creature);
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
uint32 spellId = 0;
switch (action)

View file

@ -122,7 +122,7 @@ public:
uint32 hpTimer;
bool charging;
void Reset()
void Reset()
{
spellTimer = 0;
hpTimer = 0;
@ -244,12 +244,12 @@ public:
{
events.Reset();
if (me->GetEntry() == NPC_TIME_LOST_PROTO_DRAKE)
{
{
events.ScheduleEvent(SPELL_TIME_SHIFT, 10000);
events.ScheduleEvent(SPELL_TIME_LAPSE, 5000);
}
else
{
{
events.ScheduleEvent(SPELL_FROST_BREATH, 8000);
events.ScheduleEvent(SPELL_FROST_CLEAVE, 5000);
}
@ -344,7 +344,7 @@ public:
ScriptedAI::EnterEvadeMode();
}
void Reset()
void Reset()
{
me->SetRegeneratingHealth(true);
me->SetSpeed(MOVE_RUN, 1.14f, true); // ZOMG!
@ -470,7 +470,7 @@ public:
if (setCharm)
{
setCharm = false;
if (Player* charmer = GetValidPlayer())
{
me->setFaction(16);
@ -747,7 +747,7 @@ public:
{
if (sender == GOSSIP_ID && action == GOSSIP_OPTION_ID)
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
me->setFaction(113);
npc_escortAI::Start(true, true, player->GetGUID());
}
@ -783,7 +783,7 @@ class npc_roxi_ramrocket : public CreatureScript
public:
npc_roxi_ramrocket() : CreatureScript("npc_roxi_ramrocket") { }
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
//Quest Menu
if (creature->IsQuestGiver())
@ -791,20 +791,20 @@ public:
//Trainer Menu
if ( creature->IsTrainer() )
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, GOSSIP_TEXT_TRAIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN);
AddGossipItemFor(player, GOSSIP_ICON_TRAINER, GOSSIP_TEXT_TRAIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN);
//Vendor Menu
if ( creature->IsVendor() )
if (player->HasSpell(SPELL_MECHANO_HOG) || player->HasSpell(SPELL_MEKGINEERS_CHOPPER))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
AddGossipItemFor(player, GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (action)
{
case GOSSIP_ACTION_TRAIN:

View file

@ -130,7 +130,7 @@ class npc_wg_demolisher_engineer : public CreatureScript
public:
npc_wg_demolisher_engineer() : CreatureScript("npc_wg_demolisher_engineer") { }
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
@ -138,24 +138,24 @@ class npc_wg_demolisher_engineer : public CreatureScript
if (canBuild(creature))
{
if (player->HasAura(SPELL_CORPORAL))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_HELLO_DEMO1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HELLO_DEMO1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
else if (player->HasAura(SPELL_LIEUTENANT))
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_HELLO_DEMO1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_HELLO_DEMO2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_HELLO_DEMO3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
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);
}
}
else
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_HELLO_DEMO4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 9);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HELLO_DEMO4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 9);
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender */ , uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender */ , uint32 action) override
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
if (canBuild(creature))
{
@ -200,7 +200,7 @@ class npc_wg_spirit_guide : public CreatureScript
public:
npc_wg_spirit_guide() : CreatureScript("npc_wg_spirit_guide") { }
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
@ -212,15 +212,15 @@ class npc_wg_spirit_guide : public CreatureScript
GraveyardVect graveyard = wintergrasp->GetGraveyardVector();
for (uint8 i = 0; i < graveyard.size(); i++)
if (graveyard[i]->GetControlTeamId() == player->GetTeamId())
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, sObjectMgr->GetTrinityStringForDBCLocale(((BfGraveyardWG*)graveyard[i])->GetTextId()), GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + i);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, sObjectMgr->GetTrinityStringForDBCLocale(((BfGraveyardWG*)graveyard[i])->GetTextId()), GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + i);
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, Creature* /*creature */ , uint32 /*sender */ , uint32 action)
bool OnGossipSelect(Player* player, Creature* /*creature */ , uint32 /*sender */ , uint32 action) override
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
Battlefield* wintergrasp = sBattlefieldMgr->GetBattlefieldByBattleId(BATTLEFIELD_BATTLEID_WG);
if (wintergrasp)
@ -241,14 +241,14 @@ class npc_wg_spirit_guide : public CreatureScript
me->setActive(true);
}
void UpdateAI(uint32 /* diff */)
void UpdateAI(uint32 /*diff*/) override
{
if (!me->HasUnitState(UNIT_STATE_CASTING))
DoCast(me, SPELL_CHANNEL_SPIRIT_HEAL);
}
};
CreatureAI *GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_wg_spirit_guideAI(creature);
}
@ -274,7 +274,7 @@ class npc_wg_queue : public CreatureScript
public:
npc_wg_queue() : CreatureScript("npc_wg_queue") { }
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (!sWorld->getBoolConfig(CONFIG_MINIGOB_MANABONK))
return false;
@ -288,8 +288,8 @@ class npc_wg_queue : public CreatureScript
if (wintergrasp->IsWarTime())
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT_19, "Queue for Wintergrasp.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
player->SEND_GOSSIP_MENU(wintergrasp->GetDefenderTeam()? WG_NPCQUEUE_TEXT_H_WAR : WG_NPCQUEUE_TEXT_A_WAR, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT_19, "Queue for Wintergrasp.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
SendGossipMenuFor(player, wintergrasp->GetDefenderTeam()? WG_NPCQUEUE_TEXT_H_WAR : WG_NPCQUEUE_TEXT_A_WAR, creature->GetGUID());
}
else
{
@ -297,18 +297,18 @@ class npc_wg_queue : public CreatureScript
player->SendUpdateWorldState(4354, time(NULL) + timer);
if (timer < 15 * MINUTE)
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Queue for Wintergrasp.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
player->SEND_GOSSIP_MENU(wintergrasp->GetDefenderTeam() ? WG_NPCQUEUE_TEXT_H_QUEUE : WG_NPCQUEUE_TEXT_A_QUEUE, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, "Queue for Wintergrasp.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
SendGossipMenuFor(player, wintergrasp->GetDefenderTeam() ? WG_NPCQUEUE_TEXT_H_QUEUE : WG_NPCQUEUE_TEXT_A_QUEUE, creature->GetGUID());
}
else
player->SEND_GOSSIP_MENU(wintergrasp->GetDefenderTeam() ? WG_NPCQUEUE_TEXT_H_NOWAR : WG_NPCQUEUE_TEXT_A_NOWAR, creature->GetGUID());
SendGossipMenuFor(player, wintergrasp->GetDefenderTeam() ? WG_NPCQUEUE_TEXT_H_NOWAR : WG_NPCQUEUE_TEXT_A_NOWAR, creature->GetGUID());
}
return true;
}
bool OnGossipSelect(Player* player, Creature* /*creature */ , uint32 /*sender */ , uint32 /*action*/)
bool OnGossipSelect(Player* player, Creature* /*creature */ , uint32 /*sender */ , uint32 /*action*/) override
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
Battlefield* wintergrasp = sBattlefieldMgr->GetBattlefieldByBattleId(BATTLEFIELD_BATTLEID_WG);
if (!wintergrasp)
@ -339,7 +339,7 @@ class npc_wg_queue : public CreatureScript
EventMap events;
void UpdateAI(uint32 diff)
void UpdateAI(uint32 diff) override
{
if (CONFIG_WINTERGRASP_ENABLE == false)
return;
@ -382,7 +382,7 @@ class npc_wg_queue : public CreatureScript
}
};
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_wg_queueAI(creature);
}
@ -393,7 +393,7 @@ class npc_wg_quest_giver : public CreatureScript
public:
npc_wg_quest_giver() : CreatureScript("npc_wg_quest_giver") { }
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
@ -566,12 +566,12 @@ class npc_wg_quest_giver : public CreatureScript
}
}
}
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
uint32 GetDialogStatus(Player* player, Creature* creature)
{
uint32 GetDialogStatus(Player* player, Creature* creature) override
{
QuestRelationBounds qr = sObjectMgr->GetCreatureQuestRelationBounds(creature->GetEntry());
QuestRelationBounds qir = sObjectMgr->GetCreatureQuestInvolvedRelationBounds(creature->GetEntry());
QuestGiverStatus result = DIALOG_STATUS_NONE;
@ -768,7 +768,7 @@ class go_wg_vehicle_teleporter : public GameObjectScript
if (IsFriendly(passenger))
if (Creature* teleportTrigger = passenger->SummonTrigger(go->GetPositionX()-60.0f, go->GetPositionY(), go->GetPositionZ()+1.0f, cVeh->GetOrientation(), 1000))
return teleportTrigger;
return NULL;
}

View file

@ -162,7 +162,7 @@ public:
};
bool OnQuestAccept(Player* player, Creature* creature, Quest const* quest)
bool OnQuestAccept(Player* player, Creature* creature, Quest const* quest) override
{
if (quest->GetQuestId() == QUEST_ALCHEMIST_APPRENTICE)
if (creature->AI() && CAST_AI(npc_finklestein::npc_finklesteinAI, creature->AI()))
@ -171,31 +171,31 @@ public:
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
if (player->GetQuestStatus(QUEST_ALCHEMIST_APPRENTICE) == QUEST_STATUS_INCOMPLETE)
{
if (creature->AI() && CAST_AI(npc_finklestein::npc_finklesteinAI, creature->AI()))
if (!CAST_AI(npc_finklestein::npc_finklesteinAI, creature->AI())->IsPlayerOnTask(player->GetGUID()))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "I'm ready to begin. What is the first ingredient you require?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, "I'm ready to begin. What is the first ingredient you require?", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
}
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*uiSender*/, uint32 uiAction)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*uiSender*/, uint32 uiAction) override
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
if (uiAction == GOSSIP_ACTION_INFO_DEF+1)
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
if (creature->AI() && CAST_AI(npc_finklestein::npc_finklesteinAI, creature->AI()))
CAST_AI(npc_finklestein::npc_finklesteinAI, creature->AI())->StartNextTask(player->GetGUID(), 1);
}
@ -203,7 +203,7 @@ public:
return true;
}
CreatureAI *GetAI(Creature* creature) const
CreatureAI *GetAI(Creature* creature) const override
{
return new npc_finklesteinAI(creature);
}
@ -214,7 +214,7 @@ class go_finklestein_cauldron : public GameObjectScript
public:
go_finklestein_cauldron() : GameObjectScript("go_finklestein_cauldron") { }
bool OnGossipHello(Player* player, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
Creature* finklestein = go->FindNearestCreature(NPC_FINKLESTEIN, 30.0f, true);
if (finklestein && finklestein->AI())
@ -580,7 +580,7 @@ public:
playerGUID = 0;
EnterEvadeMode();
break;
}
if (me->getFaction() == 35 || me->HasUnitState(UNIT_STATE_CASTING|UNIT_STATE_STUNNED))
@ -856,7 +856,7 @@ public:
void sGossipSelect(Player* player, uint32 /*sender*/, uint32 /*action*/)
{
_events.ScheduleEvent(EVENT_RECRUIT_1, 100);
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
me->CastSpell(player, SPELL_QUEST_CREDIT, true);
me->SetFacingToObject(player);
}
@ -889,7 +889,7 @@ class go_scourge_enclosure : public GameObjectScript
public:
go_scourge_enclosure() : GameObjectScript("go_scourge_enclosure") { }
bool OnGossipHello(Player* player, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
go->UseDoorOrButton();
if (player->GetQuestStatus(QUEST_OUR_ONLY_HOPE) == QUEST_STATUS_INCOMPLETE)

View file

@ -793,7 +793,7 @@ class npc_akama_illidan : public CreatureScript
void sGossipSelect(Player* player, uint32 /*sender*/, uint32 /*action*/)
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE);
me->setActive(true);

View file

@ -411,7 +411,7 @@ class npc_akama_shade : public CreatureScript
{
if (action == 0)
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
events2.ScheduleEvent(EVENT_AKAMA_START_ENCOUNTER, 0);
}

View file

@ -184,7 +184,7 @@ class boss_the_lurker_below : public CreatureScript
}
}
if (target)
if (target)
me->AttackerStateUpdate(target);
else if ((target = SelectTarget(SELECT_TARGET_RANDOM, 0)))
me->CastSpell(target, SPELL_WATER_BOLT, false);
@ -199,7 +199,7 @@ class go_strange_pool : public GameObjectScript
public:
go_strange_pool() : GameObjectScript("go_strange_pool") { }
bool OnGossipHello(Player* player, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
if (InstanceScript* instance = go->GetInstanceScript())
if (roll_chance_i(instance->GetBossState(DATA_THE_LURKER_BELOW) != DONE ? 25 : 0) && !instance->IsEncounterInProgress())

View file

@ -318,46 +318,46 @@ class go_ahune_ice_stone : public GameObjectScript
public:
go_ahune_ice_stone() : GameObjectScript("go_ahune_ice_stone") { }
bool OnGossipHello(Player *pPlayer, GameObject *pGO)
bool OnGossipHello(Player* player, GameObject* go) override
{
if (!pPlayer || !pGO)
if (!player || !go)
return true;
if (!pPlayer->HasItemCount(ITEM_MAGMA_TOTEM))
if (!player->HasItemCount(ITEM_MAGMA_TOTEM))
return true;
if (pGO->FindNearestCreature(NPC_AHUNE, 200.0f, true))
if (go->FindNearestCreature(NPC_AHUNE, 200.0f, true))
return true;
pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Disturb the stone and summon Lord Ahune.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1337);
pPlayer->SEND_GOSSIP_MENU(GOSSIP_TEXT_ID, pGO->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, "Disturb the stone and summon Lord Ahune.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1337);
SendGossipMenuFor(player, GOSSIP_TEXT_ID, go->GetGUID());
return true;
}
bool OnGossipSelect(Player *pPlayer, GameObject *pGO, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, GameObject* go, uint32 /*sender*/, uint32 action) override
{
if (!pPlayer || !pGO)
if (!player || !go)
return true;
if (action != GOSSIP_ACTION_INFO_DEF+1337)
return true;
if (!pPlayer->HasItemCount(ITEM_MAGMA_TOTEM))
if (!player->HasItemCount(ITEM_MAGMA_TOTEM))
return true;
if (pGO->FindNearestCreature(NPC_AHUNE, 200.0f, true))
if (go->FindNearestCreature(NPC_AHUNE, 200.0f, true))
return true;
if (Creature* c = pGO->SummonCreature(NPC_AHUNE, AhuneSummonPos, TEMPSUMMON_MANUAL_DESPAWN))
if (Creature* c = go->SummonCreature(NPC_AHUNE, AhuneSummonPos, TEMPSUMMON_MANUAL_DESPAWN))
{
pPlayer->DestroyItemCount(ITEM_MAGMA_TOTEM, 1, true, false);
pPlayer->AreaExploredOrEventHappens(QUEST_SUMMON_AHUNE); // auto rewarded
player->DestroyItemCount(ITEM_MAGMA_TOTEM, 1, true, false);
player->AreaExploredOrEventHappens(QUEST_SUMMON_AHUNE); // auto rewarded
c->SetVisible(false);
c->SetDisplayId(AHUNE_DEFAULT_MODEL);
c->SetFloatValue(UNIT_FIELD_COMBATREACH, 18.0f);
CAST_AI(boss_ahune::boss_ahuneAI, c->AI())->InvokerGUID = pPlayer->GetGUID();
if (Creature* bunny = pGO->SummonCreature(NPC_AHUNE_SUMMON_LOC_BUNNY, AhuneSummonPos, TEMPSUMMON_TIMED_DESPAWN, 12000))
if (Creature* crystal_trigger = pGO->SummonCreature(WORLD_TRIGGER, pGO->GetPositionX(), pGO->GetPositionY(), 5.0f, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 12000))
CAST_AI(boss_ahune::boss_ahuneAI, c->AI())->InvokerGUID = player->GetGUID();
if (Creature* bunny = go->SummonCreature(NPC_AHUNE_SUMMON_LOC_BUNNY, AhuneSummonPos, TEMPSUMMON_TIMED_DESPAWN, 12000))
if (Creature* crystal_trigger = go->SummonCreature(WORLD_TRIGGER, go->GetPositionX(), go->GetPositionY(), 5.0f, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 12000))
crystal_trigger->CastSpell(bunny, SPELL_STARTING_BEAM, false);
}
pPlayer->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
return true;
}
};

View file

@ -11,7 +11,7 @@ class go_main_chambers_access_panel : public GameObjectScript
public:
go_main_chambers_access_panel() : GameObjectScript("go_main_chambers_access_panel") { }
bool OnGossipHello(Player* /*player*/, GameObject* go)
bool OnGossipHello(Player* /*player*/, GameObject* go) override
{
InstanceScript* instance = go->GetInstanceScript();
if (!instance)

View file

@ -90,7 +90,7 @@ class boss_broggok : public CreatureScript
me->CastSpell(me, SPELL_POISON_CLOUD, false);
events.RepeatEvent(20000);
break;
}
DoMeleeAttackIfReady();
@ -138,7 +138,7 @@ class go_broggok_lever : public GameObjectScript
public:
go_broggok_lever() : GameObjectScript("go_broggok_lever") {}
bool OnGossipHello(Player* /*player*/, GameObject* go)
bool OnGossipHello(Player* /*player*/, GameObject* go) override
{
if (InstanceScript* instance = go->GetInstanceScript())
if (instance->GetData(DATA_BROGGOK) != DONE && instance->GetData(DATA_BROGGOK) != IN_PROGRESS)

View file

@ -890,7 +890,7 @@ class go_simon_cluster : public GameObjectScript
public:
go_simon_cluster() : GameObjectScript("go_simon_cluster") { }
bool OnGossipHello(Player* player, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
if (Creature* bunny = go->FindNearestCreature(NPC_SIMON_BUNNY, 12.0f, true))
bunny->AI()->SetData(go->GetEntry(), 0);
@ -916,16 +916,16 @@ class go_apexis_relic : public GameObjectScript
public:
go_apexis_relic() : GameObjectScript("go_apexis_relic") { }
bool OnGossipHello(Player* player, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
player->PrepareGossipMenu(go, go->GetGOInfo()->questgiver.gossipID);
player->SendPreparedGossip(go);
return true;
}
bool OnGossipSelect(Player* player, GameObject* go, uint32 /*sender*/, uint32 /*action*/)
bool OnGossipSelect(Player* player, GameObject* go, uint32 /*sender*/, uint32 /*action*/) override
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
bool large = (go->GetEntry() == GO_APEXIS_MONUMENT);
if (player->HasItemCount(ITEM_APEXIS_SHARD, large ? 35 : 1))

View file

@ -276,42 +276,43 @@ enum CorkiData
class go_corkis_prison : public GameObjectScript
{
public:
go_corkis_prison() : GameObjectScript("go_corkis_prison") { }
go_corkis_prison() : GameObjectScript("go_corkis_prison") { }
bool OnGossipHello(Player* player, GameObject* go)
{
go->SetGoState(GO_STATE_READY);
if (go->GetEntry() == GO_CORKIS_PRISON)
{
if (Creature* corki = go->FindNearestCreature(NPC_CORKI, 25, true))
{
corki->GetMotionMaster()->MovePoint(1, go->GetPositionX()+5, go->GetPositionY(), go->GetPositionZ());
if (player)
player->KilledMonsterCredit(NPC_CORKI_CREDIT_1, 0);
}
}
bool OnGossipHello(Player* player, GameObject* go) override
{
go->SetGoState(GO_STATE_READY);
if (go->GetEntry() == GO_CORKIS_PRISON)
{
if (Creature* corki = go->FindNearestCreature(NPC_CORKI, 25, true))
{
corki->GetMotionMaster()->MovePoint(1, go->GetPositionX()+5, go->GetPositionY(), go->GetPositionZ());
if (player)
player->KilledMonsterCredit(NPC_CORKI_CREDIT_1, 0);
}
}
if (go->GetEntry() == GO_CORKIS_PRISON_2)
{
if (Creature* corki = go->FindNearestCreature(NPC_CORKI_2, 25, true))
{
corki->GetMotionMaster()->MovePoint(1, go->GetPositionX()-5, go->GetPositionY(), go->GetPositionZ());
if (player)
player->KilledMonsterCredit(NPC_CORKI_2, 0);
}
}
if (go->GetEntry() == GO_CORKIS_PRISON_2)
{
if (Creature* corki = go->FindNearestCreature(NPC_CORKI_2, 25, true))
{
corki->GetMotionMaster()->MovePoint(1, go->GetPositionX()-5, go->GetPositionY(), go->GetPositionZ());
if (player)
player->KilledMonsterCredit(NPC_CORKI_2, 0);
}
}
if (go->GetEntry() == GO_CORKIS_PRISON_3)
{
if (Creature* corki = go->FindNearestCreature(NPC_CORKI_3, 25, true))
{
corki->GetMotionMaster()->MovePoint(1, go->GetPositionX()+4, go->GetPositionY(), go->GetPositionZ());
if (player)
player->KilledMonsterCredit(NPC_CORKI_CREDIT_3, 0);
}
}
return true;
}
if (go->GetEntry() == GO_CORKIS_PRISON_3)
{
if (Creature* corki = go->FindNearestCreature(NPC_CORKI_3, 25, true))
{
corki->GetMotionMaster()->MovePoint(1, go->GetPositionX()+4, go->GetPositionY(), go->GetPositionZ());
if (player)
player->KilledMonsterCredit(NPC_CORKI_CREDIT_3, 0);
}
}
return true;
}
};
class npc_corki : public CreatureScript
@ -567,24 +568,26 @@ enum FindingTheSurvivorsData
class go_warmaul_prison : public GameObjectScript
{
public:
go_warmaul_prison() : GameObjectScript("go_warmaul_prison") { }
public:
go_warmaul_prison() : GameObjectScript("go_warmaul_prison") { }
bool OnGossipHello(Player* player, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
go->UseDoorOrButton();
if (player->GetQuestStatus(QUEST_FINDING_THE_SURVIVORS) != QUEST_STATUS_INCOMPLETE)
return false;
if (Creature* prisoner = go->FindNearestCreature(NPC_MAGHAR_PRISONER, 5.0f))
{
go->UseDoorOrButton();
if (player->GetQuestStatus(QUEST_FINDING_THE_SURVIVORS) != QUEST_STATUS_INCOMPLETE)
return false;
player->KilledMonsterCredit(NPC_MAGHAR_PRISONER, 0);
if (Creature* prisoner = go->FindNearestCreature(NPC_MAGHAR_PRISONER, 5.0f))
{
player->KilledMonsterCredit(NPC_MAGHAR_PRISONER, 0);
prisoner->AI()->Talk(SAY_FREE, player);
prisoner->DespawnOrUnsummon(6000);
}
return true;
prisoner->AI()->Talk(SAY_FREE, player);
prisoner->DespawnOrUnsummon(6000);
}
return true;
}
};
void AddSC_nagrand()

View file

@ -53,12 +53,7 @@ enum saeed
class npc_captain_saeed : public CreatureScript
{
public:
npc_captain_saeed() : CreatureScript("npc_captain_saeed") { }
CreatureAI* GetAI(Creature* creature) const
{
return new npc_captain_saeedAI(creature);
}
npc_captain_saeed() : CreatureScript("npc_captain_saeed") { }
struct npc_captain_saeedAI : public npc_escortAI
{
@ -68,7 +63,7 @@ class npc_captain_saeed : public CreatureScript
EventMap events;
bool started, fight;
void Reset()
void Reset() override
{
if (!summons.empty())
{
@ -87,7 +82,7 @@ class npc_captain_saeed : public CreatureScript
me->RestoreFaction();
}
void MoveInLineOfSight(Unit* who)
void MoveInLineOfSight(Unit* who) override
{
if (Player* player = GetPlayerForEscort())
if (me->GetDistance(who) < 10.0f && !me->GetVictim())
@ -100,7 +95,7 @@ class npc_captain_saeed : public CreatureScript
npc_escortAI::MoveInLineOfSight(who);
}
void SetGUID(uint64 playerGUID, int32 type)
void SetGUID(uint64 playerGUID, int32 type) override
{
if (type == DATA_START_ENCOUNTER)
{
@ -137,7 +132,7 @@ class npc_captain_saeed : public CreatureScript
}
}
void EnterEvadeMode()
void EnterEvadeMode() override
{
if (fight)
SetEscortPaused(false);
@ -165,7 +160,7 @@ class npc_captain_saeed : public CreatureScript
}
}
void WaypointReached(uint32 i)
void WaypointReached(uint32 i) override
{
Player* player = GetPlayerForEscort();
if (!player)
@ -188,12 +183,12 @@ class npc_captain_saeed : public CreatureScript
}
}
void EnterCombat(Unit* who)
void EnterCombat(Unit* who) override
{
SummonsAction(who);
}
void JustDied(Unit* /*killer*/)
void JustDied(Unit* /*killer*/) override
{
Player* player = GetPlayerForEscort();
if (player)
@ -202,12 +197,12 @@ class npc_captain_saeed : public CreatureScript
summons.DespawnAll();
}
void CorpseRemoved(uint32&)
void CorpseRemoved(uint32&) override
{
summons.DespawnAll();
}
uint32 GetData(uint32 data) const
uint32 GetData(uint32 data) const override
{
if (data == 1)
return (uint32)started;
@ -215,7 +210,7 @@ class npc_captain_saeed : public CreatureScript
return 0;
}
void UpdateAI(uint32 diff)
void UpdateAI(uint32 diff) override
{
npc_escortAI::UpdateAI(diff);
@ -248,10 +243,9 @@ class npc_captain_saeed : public CreatureScript
}
};
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*uiSender*/, uint32 uiAction)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*uiSender*/, uint32 uiAction) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (uiAction == GOSSIP_ACTION_INFO_DEF+1)
{
creature->AI()->SetGUID(player->GetGUID(), DATA_START_ENCOUNTER);
@ -262,11 +256,11 @@ class npc_captain_saeed : public CreatureScript
creature->AI()->SetGUID(player->GetGUID(), DATA_START_FIGHT);
}
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
@ -274,15 +268,20 @@ class npc_captain_saeed : public CreatureScript
if (player->GetQuestStatus(QUEST_DIMENSIUS_DEVOURING) == QUEST_STATUS_INCOMPLETE)
{
if (!creature->AI()->GetData(1))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Let's move out.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, "Let's move out.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
else
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Let's start the battle.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, "Let's start the battle.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
}
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_captain_saeedAI(creature);
}
};
@ -603,27 +602,27 @@ public:
//if (quest->GetQuestId() == QUEST_DIMENSIUS)
//creature->AI()->Talk(WHISPER_DABIRI, player);
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_INFO_DEF+1)
{
creature->CastSpell(player, SPELL_PHASE_DISTRUPTOR, false);
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
}
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
if (player->GetQuestStatus(QUEST_ON_NETHERY_WINGS) == QUEST_STATUS_INCOMPLETE && !player->HasItemCount(29778))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}

View file

@ -94,7 +94,7 @@ public:
class spell_q10563_q10596_to_legion_hold_AuraScript : public AuraScript
{
PrepareAuraScript(spell_q10563_q10596_to_legion_hold_AuraScript)
void HandleEffectRemove(AuraEffect const * /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
if (Player* player = GetTarget()->ToPlayer())
@ -641,21 +641,21 @@ class npc_drake_dealer_hurlunk : public CreatureScript
public:
npc_drake_dealer_hurlunk() : CreatureScript("npc_drake_dealer_hurlunk") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_TRADE)
player->GetSession()->SendListInventory(creature->GetGUID());
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsVendor() && player->GetReputationRank(1015) == REP_EXALTED)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
AddGossipItemFor(player, GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
@ -673,9 +673,9 @@ class npcs_flanis_swiftwing_and_kagrosh : public CreatureScript
public:
npcs_flanis_swiftwing_and_kagrosh() : CreatureScript("npcs_flanis_swiftwing_and_kagrosh") { }
bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_INFO_DEF+1)
{
ItemPosCountVec dest;
@ -683,7 +683,7 @@ public:
if (msg == EQUIP_ERR_OK)
{
player->StoreNewItem(dest, 30658, 1, true);
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
}
}
if (action == GOSSIP_ACTION_INFO_DEF+2)
@ -693,20 +693,20 @@ public:
if (msg == EQUIP_ERR_OK)
{
player->StoreNewItem(dest, 30659, 1, true);
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
}
}
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (player->GetQuestStatus(10583) == QUEST_STATUS_INCOMPLETE && !player->HasItemCount(30658, 1, true))
player->ADD_GOSSIP_ITEM(0, GOSSIP_HSK1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
AddGossipItemFor(player, 0, GOSSIP_HSK1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
if (player->GetQuestStatus(10601) == QUEST_STATUS_INCOMPLETE && !player->HasItemCount(30659, 1, true))
player->ADD_GOSSIP_ITEM(0, GOSSIP_HSK2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
AddGossipItemFor(player, 0, GOSSIP_HSK2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}

View file

@ -45,28 +45,28 @@ class npc_raliq_the_drunk : public CreatureScript
public:
npc_raliq_the_drunk() : CreatureScript("npc_raliq_the_drunk") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_INFO_DEF+1)
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
creature->setFaction(FACTION_HOSTILE_RD);
creature->AI()->AttackStart(player);
}
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (player->GetQuestStatus(QUEST_CRACK_SKULLS) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_RALIQ, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
AddGossipItemFor(player, GOSSIP_ICON_VENDOR, GOSSIP_RALIQ, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->SEND_GOSSIP_MENU(9440, creature->GetGUID());
SendGossipMenuFor(player, 9440, creature->GetGUID());
return true;
}
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_raliq_the_drunkAI(creature);
}
@ -81,13 +81,13 @@ public:
uint32 m_uiNormFaction;
uint32 Uppercut_Timer;
void Reset()
void Reset() override
{
Uppercut_Timer = 5000;
me->RestoreFaction();
}
void UpdateAI(uint32 diff)
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
return;
@ -126,7 +126,7 @@ class npc_salsalabim : public CreatureScript
public:
npc_salsalabim() : CreatureScript("npc_salsalabim") { }
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (player->GetQuestStatus(QUEST_10004) == QUEST_STATUS_INCOMPLETE)
{
@ -137,12 +137,12 @@ public:
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
}
return true;
}
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_salsalabimAI(creature);
}
@ -153,13 +153,13 @@ public:
uint32 MagneticPull_Timer;
void Reset()
void Reset() override
{
MagneticPull_Timer = 15000;
me->RestoreFaction();
}
void DamageTaken(Unit* done_by, uint32 &damage, DamageEffectType, SpellSchoolMask)
void DamageTaken(Unit* done_by, uint32 &damage, DamageEffectType, SpellSchoolMask) override
{
// xinef: some corrections
if (done_by)
@ -172,7 +172,7 @@ public:
}
}
void UpdateAI(uint32 diff)
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
return;
@ -204,28 +204,28 @@ class npc_shattrathflaskvendors : public CreatureScript
public:
npc_shattrathflaskvendors() : CreatureScript("npc_shattrathflaskvendors") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_TRADE)
player->GetSession()->SendListInventory(creature->GetGUID());
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->GetEntry() == 23484)
{
// Aldor vendor
if (creature->IsVendor() && (player->GetReputationRank(932) == REP_EXALTED) && (player->GetReputationRank(935) == REP_EXALTED) && (player->GetReputationRank(942) == REP_EXALTED))
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
player->SEND_GOSSIP_MENU(11085, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
SendGossipMenuFor(player, 11085, creature->GetGUID());
}
else
{
player->SEND_GOSSIP_MENU(11083, creature->GetGUID());
SendGossipMenuFor(player, 11083, creature->GetGUID());
}
}
@ -234,12 +234,12 @@ public:
// Scryers vendor
if (creature->IsVendor() && (player->GetReputationRank(934) == REP_EXALTED) && (player->GetReputationRank(935) == REP_EXALTED) && (player->GetReputationRank(942) == REP_EXALTED))
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
player->SEND_GOSSIP_MENU(11085, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
SendGossipMenuFor(player, 11085, creature->GetGUID());
}
else
{
player->SEND_GOSSIP_MENU(11084, creature->GetGUID());
SendGossipMenuFor(player, 11084, creature->GetGUID());
}
}
@ -258,21 +258,21 @@ class npc_zephyr : public CreatureScript
public:
npc_zephyr() : CreatureScript("npc_zephyr") { }
bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_INFO_DEF+1)
player->CastSpell(player, 37778, false);
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (player->GetReputationRank(989) >= REP_REVERED)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_HZ, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HZ, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
@ -427,26 +427,26 @@ class npc_ishanah : public CreatureScript
public:
npc_ishanah() : CreatureScript("npc_ishanah") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_INFO_DEF+1)
player->SEND_GOSSIP_MENU(9458, creature->GetGUID());
SendGossipMenuFor(player, 9458, creature->GetGUID());
else if (action == GOSSIP_ACTION_INFO_DEF+2)
player->SEND_GOSSIP_MENU(9459, creature->GetGUID());
SendGossipMenuFor(player, 9459, creature->GetGUID());
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, ISANAH_GOSSIP_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, ISANAH_GOSSIP_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, ISANAH_GOSSIP_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, ISANAH_GOSSIP_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}

View file

@ -72,7 +72,7 @@ class spell_q10930_big_bone_worm : public SpellScriptLoader
PrepareAuraScript(spell_q10930_big_bone_worm_AuraScript);
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
{
if (GetTargetApplication()->GetRemoveMode() != AURA_REMOVE_BY_EXPIRE)
return;
@ -524,17 +524,17 @@ class npc_floon : public CreatureScript
public:
npc_floon() : CreatureScript("npc_floon") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_INFO_DEF)
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_FLOON2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->SEND_GOSSIP_MENU(9443, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_FLOON2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
SendGossipMenuFor(player, 9443, creature->GetGUID());
}
if (action == GOSSIP_ACTION_INFO_DEF+1)
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
creature->setFaction(FACTION_HOSTILE_FL);
creature->AI()->Talk(SAY_FLOON_ATTACK, player);
creature->AI()->AttackStart(player);
@ -542,16 +542,16 @@ public:
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (player->GetQuestStatus(QUEST_CRACK_SKULLS) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_FLOON1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_FLOON1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
player->SEND_GOSSIP_MENU(9442, creature->GetGUID());
SendGossipMenuFor(player, 9442, creature->GetGUID());
return true;
}
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_floonAI(creature);
}
@ -568,7 +568,7 @@ public:
uint32 Frostbolt_Timer;
uint32 FrostNova_Timer;
void Reset()
void Reset() override
{
Silence_Timer = 2000;
Frostbolt_Timer = 4000;
@ -577,9 +577,9 @@ public:
me->setFaction(m_uiNormFaction);
}
void EnterCombat(Unit* /*who*/) { }
void EnterCombat(Unit* /*who*/) override { }
void UpdateAI(uint32 diff)
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
return;
@ -763,9 +763,9 @@ class go_skull_pile : public GameObjectScript
public:
go_skull_pile() : GameObjectScript("go_skull_pile") { }
bool OnGossipSelect(Player* player, GameObject* go, uint32 sender, uint32 action)
bool OnGossipSelect(Player* player, GameObject* go, uint32 sender, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (sender)
{
case GOSSIP_SENDER_MAIN: SendActionMenu(player, go, action); break;
@ -773,17 +773,17 @@ public:
return true;
}
bool OnGossipHello(Player* player, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
if ((player->GetQuestStatus(11885) == QUEST_STATUS_INCOMPLETE) || player->GetQuestRewardStatus(11885))
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_S_DARKSCREECHER_AKKARAI, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_S_KARROG, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_S_GEZZARAK_THE_HUNTRESS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_S_VAKKIZ_THE_WINDRAGER, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_S_DARKSCREECHER_AKKARAI, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_S_KARROG, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_S_GEZZARAK_THE_HUNTRESS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_S_VAKKIZ_THE_WINDRAGER, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
}
player->SEND_GOSSIP_MENU(go->GetGOInfo()->questgiver.gossipID, go->GetGUID());
SendGossipMenuFor(player, go->GetGOInfo()->questgiver.gossipID, go->GetGUID());
return true;
}
@ -821,24 +821,24 @@ class npc_slim : public CreatureScript
public:
npc_slim() : CreatureScript("npc_slim") { }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_TRADE)
player->GetSession()->SendListInventory(creature->GetGUID());
return true;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsVendor() && player->GetReputationRank(FACTION_CONSORTIUM) >= REP_FRIENDLY)
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
player->SEND_GOSSIP_MENU(9896, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
SendGossipMenuFor(player, 9896, creature->GetGUID());
}
else
player->SEND_GOSSIP_MENU(9895, creature->GetGUID());
SendGossipMenuFor(player, 9895, creature->GetGUID());
return true;
}

View file

@ -39,7 +39,7 @@ class npc_natrualist_bite : public CreatureScript
public:
npc_natrualist_bite() : CreatureScript("npc_natrualist_bite") { }
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
uint32 menuId = creature->AI()->GetData(1) ? 7540 : 7520;
player->PrepareGossipMenu(creature, menuId, false);
@ -47,10 +47,10 @@ public:
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 /*action*/)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 /*action*/) override
{
player->PlayerTalkClass->ClearMenus();
player->CLOSE_GOSSIP_MENU();
ClearGossipMenuFor(player);
CloseGossipMenuFor(player);
if (creature->AI()->GetData(1))
{
creature->CastSpell(player, SPELL_MARK_OF_BITE, true);
@ -84,7 +84,8 @@ public:
}
uint8 _spoken;
void MoveInLineOfSight(Unit* who)
void MoveInLineOfSight(Unit* who) override
{
if (!_spoken && !me->IsHostileTo(who))
{
@ -93,11 +94,19 @@ public:
}
ScriptedAI::MoveInLineOfSight(who);
}
void EnterCombat(Unit*) { _spoken = 2; }
uint32 GetData(uint32) const { return _spoken == 2; }
void EnterCombat(Unit*) override
{
_spoken = 2;
}
uint32 GetData(uint32) const override
{
return _spoken == 2;
}
};
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_natrualist_biteAI (creature);
}
@ -135,24 +144,24 @@ class npcs_ashyen_and_keleth : public CreatureScript
public:
npcs_ashyen_and_keleth() : CreatureScript("npcs_ashyen_and_keleth") { }
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (player->GetReputationRank(942) > REP_NEUTRAL)
{
if (creature->GetEntry() == NPC_ASHYEN)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_BLESS_ASH, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_BLESS_ASH, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
if (creature->GetEntry() == NPC_KELETH)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_BLESS_KEL, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_BLESS_KEL, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
}
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_INFO_DEF+1)
{
creature->setPowerType(POWER_MANA);
@ -214,7 +223,7 @@ public:
creature->AI()->Talk(GOSSIP_REWARD_BLESS);
}
}
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->TalkedToCreature(creature->GetEntry(), creature->GetGUID());
}
return true;
@ -249,16 +258,16 @@ public:
uint32 m_uiNormFaction;
uint32 LightningBolt_Timer;
void Reset()
void Reset() override
{
LightningBolt_Timer = 2000;
if (me->getFaction() != m_uiNormFaction)
me->setFaction(m_uiNormFaction);
}
void EnterCombat(Unit* /*who*/) { }
void EnterCombat(Unit* /*who*/) override { }
void UpdateAI(uint32 diff)
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
return;
@ -273,26 +282,26 @@ public:
}
};
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_cooshcooshAI(creature);
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (player->GetQuestStatus(QUEST_CRACK_SKULLS) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_COOSH, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_COOSH, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
player->SEND_GOSSIP_MENU(9441, creature->GetGUID());
SendGossipMenuFor(player, 9441, creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_INFO_DEF)
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
creature->setFaction(FACTION_HOSTILE_CO);
creature->AI()->AttackStart(player);
}
@ -313,28 +322,28 @@ class npc_elder_kuruti : public CreatureScript
public:
npc_elder_kuruti() : CreatureScript("npc_elder_kuruti") { }
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (player->GetQuestStatus(9803) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KUR1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_KUR1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
player->SEND_GOSSIP_MENU(9226, creature->GetGUID());
SendGossipMenuFor(player, 9226, creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (action)
{
case GOSSIP_ACTION_INFO_DEF:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KUR2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
player->SEND_GOSSIP_MENU(9227, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_KUR2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
SendGossipMenuFor(player, 9227, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 1:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_KUR3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
player->SEND_GOSSIP_MENU(9229, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_KUR3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
SendGossipMenuFor(player, 9229, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 2:
{
@ -350,7 +359,7 @@ public:
else
player->SendEquipError(msg, NULL, NULL, itemId);
}
player->SEND_GOSSIP_MENU(9231, creature->GetGUID());
SendGossipMenuFor(player, 9231, creature->GetGUID());
break;
}
}
@ -366,19 +375,19 @@ class npc_mortog_steamhead : public CreatureScript
public:
npc_mortog_steamhead() : CreatureScript("npc_mortog_steamhead") { }
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsVendor() && player->GetReputationRank(942) == REP_EXALTED)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
AddGossipItemFor(player, GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_TRADE)
player->GetSession()->SendListInventory(creature->GetGUID());
return true;
@ -480,26 +489,26 @@ class npc_timothy_daniels : public CreatureScript
public:
npc_timothy_daniels() : CreatureScript("npc_timothy_daniels") { }
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
if (creature->IsVendor())
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_POISONS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
AddGossipItemFor(player, GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_POISONS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_TIMOTHY_DANIELS_ITEM1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_TIMOTHY_DANIELS_ITEM1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (action)
{
case GOSSIP_ACTION_INFO_DEF+1:
player->SEND_GOSSIP_MENU(GOSSIP_TEXTID_TIMOTHY_DANIELS1, creature->GetGUID());
SendGossipMenuFor(player, GOSSIP_TEXTID_TIMOTHY_DANIELS1, creature->GetGUID());
break;
case GOSSIP_ACTION_TRADE:
player->GetSession()->SendListInventory(creature->GetGUID());

View file

@ -102,7 +102,7 @@ public:
{
uint64 ownerGUID;
EventMap events;
npc_pet_gen_soul_trader_beaconAI(Creature *c) : ScriptedAI(c)
npc_pet_gen_soul_trader_beaconAI(Creature *c) : ScriptedAI(c)
{
events.Reset();
events.ScheduleEvent(EVENT_INITIAL_TALK, 0);
@ -164,7 +164,7 @@ enum eArgentPony
SPELL_AURA_SHOP_S = 67377,
SPELL_AURA_BANK_S = 67368,
SPELL_AURA_TIRED_S = 67401,
SPELL_AURA_BANK_G = 68849,
SPELL_AURA_POSTMAN_G = 68850,
SPELL_AURA_SHOP_G = 68851,
@ -214,7 +214,7 @@ public:
struct npc_pet_gen_argent_pony_bridleAI : public ScriptedAI
{
npc_pet_gen_argent_pony_bridleAI(Creature *c) : ScriptedAI(c)
npc_pet_gen_argent_pony_bridleAI(Creature *c) : ScriptedAI(c)
{
_state = ARGENT_PONY_STATE_NONE;
_init = false;
@ -223,7 +223,7 @@ public:
memset(_banners, 0, sizeof(_banners));
}
void EnterEvadeMode()
void EnterEvadeMode() override
{
if (Unit* owner = me->GetCharmerOrOwner())
{
@ -232,7 +232,7 @@ public:
}
}
void Reset()
void Reset() override
{
if (_init)
return;
@ -292,7 +292,7 @@ public:
}
}
void UpdateAI(uint32 diff)
void UpdateAI(uint32 diff) override
{
_mountTimer += diff;
if (_mountTimer > 5000)
@ -310,15 +310,15 @@ public:
}
}
uint32 GetData(uint32 param) const
uint32 GetData(uint32 param) const override
{
if (param == 0)
return _state;
return _banners[param];
}
void DoAction(int32 param)
void DoAction(int32 param) override
{
if (param > 60000)
{
@ -330,7 +330,7 @@ public:
_state = param;
}
private:
bool _init;
uint8 _state;
@ -339,7 +339,7 @@ public:
uint32 _lastAura;
};
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (player->GetGUID() != creature->GetOwnerGUID())
return true;
@ -348,24 +348,24 @@ public:
{
uint8 _state = creature->AI()->GetData(0 /*GET_DATA_STATE*/);
if (_state == ARGENT_PONY_STATE_ENCH || _state == ARGENT_PONY_STATE_VENDOR)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, "Visit a trader.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
AddGossipItemFor(player, GOSSIP_ICON_VENDOR, "Visit a trader.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
if (_state == ARGENT_PONY_STATE_ENCH || _state == ARGENT_PONY_STATE_BANK)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Visit a bank.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_BANK);
AddGossipItemFor(player, GOSSIP_ICON_INTERACT_1, "Visit a bank.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_BANK);
if (_state == ARGENT_PONY_STATE_ENCH || _state == ARGENT_PONY_STATE_MAILBOX)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Visit a mailbox.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_MAILBOX);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, "Visit a mailbox.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_MAILBOX);
}
for (uint8 i = RACE_HUMAN; i < MAX_RACES; ++i)
if (creature->AI()->GetData(i) == uint32(true))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, argentBanners[i].text, GOSSIP_SENDER_MAIN, argentBanners[i].spell);
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, argentBanners[i].text, GOSSIP_SENDER_MAIN, argentBanners[i].spell);
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*uiSender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*uiSender*/, uint32 action) override
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
uint32 spellId = 0;
switch (action)
{
@ -408,7 +408,7 @@ public:
return true;
}
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_pet_gen_argent_pony_bridleAI (creature);
}
@ -433,7 +433,7 @@ public:
struct npc_pet_gen_target_following_bombAI : public NullCreatureAI
{
npc_pet_gen_target_following_bombAI(Creature *c) : NullCreatureAI(c)
npc_pet_gen_target_following_bombAI(Creature *c) : NullCreatureAI(c)
{
checkTimer = 0;
bombSpellId = 0;
@ -488,7 +488,7 @@ public:
struct npc_pet_gen_gnomish_flame_turretAI : public ScriptedAI
{
npc_pet_gen_gnomish_flame_turretAI(Creature *c) : ScriptedAI(c)
npc_pet_gen_gnomish_flame_turretAI(Creature *c) : ScriptedAI(c)
{
checkTimer = 0;
}

View file

@ -47,7 +47,7 @@ class go_noblegarden_colored_egg : public GameObjectScript
public:
go_noblegarden_colored_egg() : GameObjectScript("go_noblegarden_colored_egg") { }
bool OnGossipHello(Player* player, GameObject* /*pGO*/)
bool OnGossipHello(Player* player, GameObject* /*go*/) override
{
if (roll_chance_i(5))
player->CastSpell(player, 61734, true); // SPELL NOBLEGARDEN BUNNY
@ -60,7 +60,7 @@ class go_seer_of_zebhalak : public GameObjectScript
public:
go_seer_of_zebhalak() : GameObjectScript("go_seer_of_zebhalak") { }
bool OnGossipHello(Player* player, GameObject* /*pGO*/)
bool OnGossipHello(Player* player, GameObject* /*go*/) override
{
if (player->GetQuestStatus(12007) == QUEST_STATUS_INCOMPLETE)
player->CastSpell(player, 47293, true);
@ -73,16 +73,16 @@ class go_mistwhisper_treasure : public GameObjectScript
public:
go_mistwhisper_treasure() : GameObjectScript("go_mistwhisper_treasure") { }
bool OnGossipHello(Player* pPlayer, GameObject *pGo)
bool OnGossipHello(Player* pPlayer, GameObject *go) override
{
if (!pGo->FindNearestCreature(28105, 30.0f)) // Tartek
if (!go->FindNearestCreature(28105, 30.0f)) // Tartek
{
if (Creature *cr = pGo->SummonCreature(28105, 6708.7f, 5115.45f, -18.3f, 0.7f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000))
if (Creature *cr = go->SummonCreature(28105, 6708.7f, 5115.45f, -18.3f, 0.7f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000))
{
cr->MonsterYell("My treasure! You no steal from Tartek, dumb big-tongue traitor thing. Tartek and nasty dragon going to kill you! You so dumb.", LANG_UNIVERSAL, 0);
cr->AI()->AttackStart(pPlayer);
}
}
}
return false;
}
};
@ -127,11 +127,11 @@ class go_arena_ready_marker : public GameObjectScript
public:
go_arena_ready_marker() : GameObjectScript("go_arena_ready_marker") { }
bool OnGossipHello(Player* player, GameObject * /*go*/)
bool OnGossipHello(Player* player, GameObject * /*go*/) override
{
if (Battleground* bg = player->GetBattleground())
bg->ReadyMarkerClicked(player);
return false;
}
};
@ -161,7 +161,7 @@ class go_ethereum_prison : public GameObjectScript
public:
go_ethereum_prison() : GameObjectScript("go_ethereum_prison") { }
bool OnGossipHello(Player* player, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
int Random = rand() % (sizeof(NpcPrisonEntry) / sizeof(uint32));
@ -205,7 +205,7 @@ class go_ethereum_stasis : public GameObjectScript
public:
go_ethereum_stasis() : GameObjectScript("go_ethereum_stasis") { }
bool OnGossipHello(Player* player, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
int Random = rand() % (sizeof(NpcStasisEntry) / sizeof(uint32));
@ -230,7 +230,7 @@ class go_resonite_cask : public GameObjectScript
public:
go_resonite_cask() : GameObjectScript("go_resonite_cask") { }
bool OnGossipHello(Player* /*player*/, GameObject* go)
bool OnGossipHello(Player* /*player*/, GameObject* go) override
{
// xinef: prevent spawning hundreds of them
if (go->GetGoType() == GAMEOBJECT_TYPE_GOOBER && !go->FindNearestCreature(NPC_GOGGEROC, 20.0f))
@ -329,7 +329,7 @@ class go_cat_figurine : public GameObjectScript
public:
go_cat_figurine() : GameObjectScript("go_cat_figurine") { }
bool OnGossipHello(Player* player, GameObject* /*go*/)
bool OnGossipHello(Player* player, GameObject* /*go*/) override
{
player->CastSpell(player, SPELL_SUMMON_GHOST_SABER, true);
return false;
@ -350,7 +350,7 @@ class go_gilded_brazier : public GameObjectScript
public:
go_gilded_brazier() : GameObjectScript("go_gilded_brazier") { }
bool OnGossipHello(Player* player, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
if (go->GetGoType() == GAMEOBJECT_TYPE_GOOBER)
{
@ -373,7 +373,7 @@ class go_tablet_of_madness : public GameObjectScript
public:
go_tablet_of_madness() : GameObjectScript("go_tablet_of_madness") { }
bool OnGossipHello(Player* player, GameObject* /*go*/)
bool OnGossipHello(Player* player, GameObject* /*go*/) override
{
if (player->HasSkill(SKILL_ALCHEMY) && player->GetSkillValue(SKILL_ALCHEMY) >= 300 && !player->HasSpell(24266))
player->CastSpell(player, 24267, false);
@ -392,7 +392,7 @@ public:
go_tablet_of_the_seven() : GameObjectScript("go_tablet_of_the_seven") { }
//TODO: use gossip option ("Transcript the Tablet") instead, if Trinity adds support.
bool OnGossipHello(Player* player, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
if (go->GetGoType() != GAMEOBJECT_TYPE_QUESTGIVER)
return true;
@ -413,7 +413,7 @@ class go_jump_a_tron : public GameObjectScript
public:
go_jump_a_tron() : GameObjectScript("go_jump_a_tron") { }
bool OnGossipHello(Player* player, GameObject* /*go*/)
bool OnGossipHello(Player* player, GameObject* /*go*/) override
{
if (player->GetQuestStatus(10111) == QUEST_STATUS_INCOMPLETE)
player->CastSpell(player, 33382, true);
@ -436,7 +436,7 @@ class go_sacred_fire_of_life : public GameObjectScript
public:
go_sacred_fire_of_life() : GameObjectScript("go_sacred_fire_of_life") { }
bool OnGossipHello(Player* player, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
if (go->GetGoType() == GAMEOBJECT_TYPE_GOOBER)
player->SummonCreature(NPC_ARIKARA, -5008.338f, -2118.894f, 83.657f, 0.874f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000);
@ -464,7 +464,7 @@ class go_shrine_of_the_birds : public GameObjectScript
public:
go_shrine_of_the_birds() : GameObjectScript("go_shrine_of_the_birds") { }
bool OnGossipHello(Player* player, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
uint32 BirdEntry = 0;
@ -507,7 +507,7 @@ class go_southfury_moonstone : public GameObjectScript
public:
go_southfury_moonstone() : GameObjectScript("go_southfury_moonstone") { }
bool OnGossipHello(Player* player, GameObject* /*go*/)
bool OnGossipHello(Player* player, GameObject* /*go*/) override
{
//implicitTarget=48 not implemented as of writing this code, and manual summon may be just ok for our purpose
//player->CastSpell(player, SPELL_SUMMON_RIZZLE, false);
@ -536,7 +536,7 @@ class go_tele_to_dalaran_crystal : public GameObjectScript
public:
go_tele_to_dalaran_crystal() : GameObjectScript("go_tele_to_dalaran_crystal") { }
bool OnGossipHello(Player* player, GameObject* /*go*/)
bool OnGossipHello(Player* player, GameObject* /*go*/) override
{
if (player->GetQuestRewardStatus(QUEST_TELE_CRYSTAL_FLAG))
return false;
@ -556,7 +556,7 @@ class go_tele_to_violet_stand : public GameObjectScript
public:
go_tele_to_violet_stand() : GameObjectScript("go_tele_to_violet_stand") { }
bool OnGossipHello(Player* player, GameObject* /*go*/)
bool OnGossipHello(Player* player, GameObject* /*go*/) override
{
if (player->GetQuestRewardStatus(QUEST_LEARN_LEAVE_RETURN) || player->GetQuestStatus(QUEST_LEARN_LEAVE_RETURN) == QUEST_STATUS_INCOMPLETE)
return false;
@ -586,38 +586,38 @@ class go_fel_crystalforge : public GameObjectScript
public:
go_fel_crystalforge() : GameObjectScript("go_fel_crystalforge") { }
bool OnGossipHello(Player* player, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
if (go->GetGoType() == GAMEOBJECT_TYPE_QUESTGIVER) /* != GAMEOBJECT_TYPE_QUESTGIVER) */
player->PrepareQuestMenu(go->GetGUID()); /* return true*/
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_FEL_CRYSTALFORGE_ITEM_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_FEL_CRYSTALFORGE_ITEM_5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_FEL_CRYSTALFORGE_ITEM_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_FEL_CRYSTALFORGE_ITEM_5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
player->SEND_GOSSIP_MENU(GOSSIP_FEL_CRYSTALFORGE_TEXT, go->GetGUID());
SendGossipMenuFor(player, GOSSIP_FEL_CRYSTALFORGE_TEXT, go->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, GameObject* go, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, GameObject* go, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (action)
{
case GOSSIP_ACTION_INFO_DEF:
player->CastSpell(player, SPELL_CREATE_1_FLASK_OF_BEAST, false);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_FEL_CRYSTALFORGE_ITEM_RETURN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
player->SEND_GOSSIP_MENU(GOSSIP_FEL_CRYSTALFORGE_ITEM_TEXT_RETURN, go->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_FEL_CRYSTALFORGE_ITEM_RETURN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
SendGossipMenuFor(player, GOSSIP_FEL_CRYSTALFORGE_ITEM_TEXT_RETURN, go->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 1:
player->CastSpell(player, SPELL_CREATE_5_FLASK_OF_BEAST, false);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_FEL_CRYSTALFORGE_ITEM_RETURN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
player->SEND_GOSSIP_MENU(GOSSIP_FEL_CRYSTALFORGE_ITEM_TEXT_RETURN, go->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_FEL_CRYSTALFORGE_ITEM_RETURN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
SendGossipMenuFor(player, GOSSIP_FEL_CRYSTALFORGE_ITEM_TEXT_RETURN, go->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 2:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_FEL_CRYSTALFORGE_ITEM_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_FEL_CRYSTALFORGE_ITEM_5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
player->SEND_GOSSIP_MENU(GOSSIP_FEL_CRYSTALFORGE_TEXT, go->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_FEL_CRYSTALFORGE_ITEM_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_FEL_CRYSTALFORGE_ITEM_5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
SendGossipMenuFor(player, GOSSIP_FEL_CRYSTALFORGE_TEXT, go->GetGUID());
break;
}
return true;
@ -645,38 +645,38 @@ class go_bashir_crystalforge : public GameObjectScript
public:
go_bashir_crystalforge() : GameObjectScript("go_bashir_crystalforge") { }
bool OnGossipHello(Player* player, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
if (go->GetGoType() == GAMEOBJECT_TYPE_QUESTGIVER) /* != GAMEOBJECT_TYPE_QUESTGIVER) */
player->PrepareQuestMenu(go->GetGUID()); /* return true*/
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_BASHIR_CRYSTALFORGE_ITEM_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_BASHIR_CRYSTALFORGE_ITEM_5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_BASHIR_CRYSTALFORGE_ITEM_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_BASHIR_CRYSTALFORGE_ITEM_5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
player->SEND_GOSSIP_MENU(GOSSIP_BASHIR_CRYSTALFORGE_TEXT, go->GetGUID());
SendGossipMenuFor(player, GOSSIP_BASHIR_CRYSTALFORGE_TEXT, go->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, GameObject* go, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, GameObject* go, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (action)
{
case GOSSIP_ACTION_INFO_DEF:
player->CastSpell(player, SPELL_CREATE_1_FLASK_OF_SORCERER, false);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_BASHIR_CRYSTALFORGE_ITEM_RETURN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
player->SEND_GOSSIP_MENU(GOSSIP_BASHIR_CRYSTALFORGE_ITEM_TEXT_RETURN, go->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_BASHIR_CRYSTALFORGE_ITEM_RETURN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
SendGossipMenuFor(player, GOSSIP_BASHIR_CRYSTALFORGE_ITEM_TEXT_RETURN, go->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 1:
player->CastSpell(player, SPELL_CREATE_5_FLASK_OF_SORCERER, false);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_BASHIR_CRYSTALFORGE_ITEM_RETURN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
player->SEND_GOSSIP_MENU(GOSSIP_BASHIR_CRYSTALFORGE_ITEM_TEXT_RETURN, go->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_BASHIR_CRYSTALFORGE_ITEM_RETURN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
SendGossipMenuFor(player, GOSSIP_BASHIR_CRYSTALFORGE_ITEM_TEXT_RETURN, go->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 2:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_BASHIR_CRYSTALFORGE_ITEM_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_BASHIR_CRYSTALFORGE_ITEM_5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
player->SEND_GOSSIP_MENU(GOSSIP_BASHIR_CRYSTALFORGE_TEXT, go->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_BASHIR_CRYSTALFORGE_ITEM_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_BASHIR_CRYSTALFORGE_ITEM_5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
SendGossipMenuFor(player, GOSSIP_BASHIR_CRYSTALFORGE_TEXT, go->GetGUID());
break;
}
return true;
@ -697,7 +697,7 @@ class go_scourge_cage : public GameObjectScript
public:
go_scourge_cage() : GameObjectScript("go_scourge_cage") { }
bool OnGossipHello(Player* player, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
go->UseDoorOrButton();
if (Creature* pNearestPrisoner = go->FindNearestCreature(NPC_SCOURGE_PRISONER, 5.0f, true))
@ -725,7 +725,7 @@ class go_arcane_prison : public GameObjectScript
public:
go_arcane_prison() : GameObjectScript("go_arcane_prison") { }
bool OnGossipHello(Player* player, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
// xinef: prevent spawning hundreds of them
if (player->GetQuestStatus(QUEST_PRISON_BREAK) == QUEST_STATUS_INCOMPLETE && !go->FindNearestCreature(25318, 20.0f))
@ -760,7 +760,7 @@ class go_jotunheim_cage : public GameObjectScript
public:
go_jotunheim_cage() : GameObjectScript("go_jotunheim_cage") { }
bool OnGossipHello(Player* player, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
go->UseDoorOrButton();
Creature* pPrisoner = go->FindNearestCreature(NPC_EBON_BLADE_PRISONER_HUMAN, 5.0f, true);
@ -810,12 +810,12 @@ class go_table_theka : public GameObjectScript
public:
go_table_theka() : GameObjectScript("go_table_theka") { }
bool OnGossipHello(Player* player, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
if (player->GetQuestStatus(QUEST_SPIDER_GOLD) == QUEST_STATUS_INCOMPLETE)
player->AreaExploredOrEventHappens(QUEST_SPIDER_GOLD);
player->SEND_GOSSIP_MENU(GOSSIP_TABLE_THEKA, go->GetGUID());
SendGossipMenuFor(player, GOSSIP_TABLE_THEKA, go->GetGUID());
return true;
}
@ -839,7 +839,7 @@ class go_inconspicuous_landmark : public GameObjectScript
_lastUsedTime = time(NULL);
}
bool OnGossipHello(Player* player, GameObject* /*go*/)
bool OnGossipHello(Player* player, GameObject* /*go*/) override
{
if (player->HasItemCount(ITEM_CUERGOS_KEY))
return true;
@ -992,7 +992,7 @@ class go_dragonflayer_cage : public GameObjectScript
public:
go_dragonflayer_cage() : GameObjectScript("go_dragonflayer_cage") { }
bool OnGossipHello(Player* player, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
go->UseDoorOrButton();
if (player->GetQuestStatus(QUEST_PRISONERS_OF_WYRMSKULL) != QUEST_STATUS_INCOMPLETE)
@ -1048,26 +1048,26 @@ class go_amberpine_outhouse : public GameObjectScript
public:
go_amberpine_outhouse() : GameObjectScript("go_amberpine_outhouse") { }
bool OnGossipHello(Player* player, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
QuestStatus status = player->GetQuestStatus(QUEST_DOING_YOUR_DUTY);
if (status == QUEST_STATUS_INCOMPLETE || status == QUEST_STATUS_COMPLETE || status == QUEST_STATUS_REWARDED)
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_USE_OUTHOUSE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
player->SEND_GOSSIP_MENU(GOSSIP_OUTHOUSE_VACANT, go->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_USE_OUTHOUSE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
SendGossipMenuFor(player, GOSSIP_OUTHOUSE_VACANT, go->GetGUID());
}
else
player->SEND_GOSSIP_MENU(GOSSIP_OUTHOUSE_INUSE, go->GetGUID());
SendGossipMenuFor(player, GOSSIP_OUTHOUSE_INUSE, go->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, GameObject* go, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, GameObject* go, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_INFO_DEF +1)
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
Creature* target = GetClosestCreatureWithEntry(player, NPC_OUTHOUSE_BUNNY, 3.0f);
if (target)
{
@ -1081,7 +1081,7 @@ public:
}
else
{
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->GetSession()->SendNotification(GO_ANDERHOLS_SLIDER_CIDER_NOT_FOUND);
return false;
}
@ -1104,7 +1104,7 @@ class go_hive_pod : public GameObjectScript
public:
go_hive_pod() : GameObjectScript("go_hive_pod") { }
bool OnGossipHello(Player* player, GameObject* go)
bool OnGossipHello(Player* player, GameObject* go) override
{
player->SendLoot(go->GetGUID(), LOOT_CORPSE);
@ -1123,7 +1123,7 @@ class go_massive_seaforium_charge : public GameObjectScript
public:
go_massive_seaforium_charge() : GameObjectScript("go_massive_seaforium_charge") { }
bool OnGossipHello(Player* /*player*/, GameObject* go)
bool OnGossipHello(Player* /*player*/, GameObject* go) override
{
go->SetLootState(GO_JUST_DEACTIVATED);
return true;
@ -1143,27 +1143,27 @@ enum MissingFriends
class go_veil_skith_cage : public GameObjectScript
{
public:
go_veil_skith_cage() : GameObjectScript("go_veil_skith_cage") { }
public:
go_veil_skith_cage() : GameObjectScript("go_veil_skith_cage") { }
bool OnGossipHello(Player* player, GameObject* go)
{
go->UseDoorOrButton();
if (player->GetQuestStatus(QUEST_MISSING_FRIENDS) == QUEST_STATUS_INCOMPLETE)
{
std::list<Creature*> childrenList;
GetCreatureListWithEntryInGrid(childrenList, go, NPC_CAPTIVE_CHILD, INTERACTION_DISTANCE);
for (std::list<Creature*>::const_iterator itr = childrenList.begin(); itr != childrenList.end(); ++itr)
{
player->KilledMonsterCredit(NPC_CAPTIVE_CHILD, (*itr)->GetGUID());
(*itr)->DespawnOrUnsummon(5000);
(*itr)->GetMotionMaster()->MovePoint(1, go->GetPositionX()+5, go->GetPositionY(), go->GetPositionZ());
(*itr)->AI()->Talk(SAY_FREE_0);
(*itr)->GetMotionMaster()->Clear();
}
}
return false;
}
bool OnGossipHello(Player* player, GameObject* go) override
{
go->UseDoorOrButton();
if (player->GetQuestStatus(QUEST_MISSING_FRIENDS) == QUEST_STATUS_INCOMPLETE)
{
std::list<Creature*> childrenList;
GetCreatureListWithEntryInGrid(childrenList, go, NPC_CAPTIVE_CHILD, INTERACTION_DISTANCE);
for (std::list<Creature*>::const_iterator itr = childrenList.begin(); itr != childrenList.end(); ++itr)
{
player->KilledMonsterCredit(NPC_CAPTIVE_CHILD, (*itr)->GetGUID());
(*itr)->DespawnOrUnsummon(5000);
(*itr)->GetMotionMaster()->MovePoint(1, go->GetPositionX()+5, go->GetPositionY(), go->GetPositionZ());
(*itr)->AI()->Talk(SAY_FREE_0);
(*itr)->GetMotionMaster()->Clear();
}
}
return false;
}
};
void AddSC_go_scripts()

View file

@ -19,38 +19,38 @@ class npc_innkeeper : public CreatureScript
public:
npc_innkeeper() : CreatureScript("npc_innkeeper") { }
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (IsEventActive(HALLOWEEN_EVENTID) && !player->HasAura(SPELL_TRICKED_OR_TREATED))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Trick or Treat!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+HALLOWEEN_EVENTID);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, "Trick or Treat!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+HALLOWEEN_EVENTID);
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
if (creature->IsVendor())
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
AddGossipItemFor(player, GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
if (creature->IsInnkeeper())
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, "Make this inn my home.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INN);
AddGossipItemFor(player, GOSSIP_ICON_INTERACT_1, "Make this inn my home.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INN);
player->TalkedToCreature(creature->GetEntry(), creature->GetGUID());
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_INFO_DEF+HALLOWEEN_EVENTID && IsEventActive(HALLOWEEN_EVENTID) && !player->HasAura(SPELL_TRICKED_OR_TREATED))
{
player->CastSpell(player, SPELL_TRICKED_OR_TREATED, true);
creature->CastSpell(player, roll_chance_i(50) ? SPELL_TRICK : SPELL_TREAT, true);
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
return true;
}
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
switch (action)
{

View file

@ -394,7 +394,7 @@ void ProcessCastaction(Player* player, Creature* creature, uint32 spellId, uint3
}
else
player->SendBuyError(BUY_ERR_NOT_ENOUGHT_MONEY, creature, 0, 0);
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
}
void ProcessUnlearnAction(Player* player, Creature* creature, uint32 spellId, uint32 alternativeSpellId, int32 cost)
@ -417,7 +417,7 @@ void ProcessUnlearnAction(Player* player, Creature* creature, uint32 spellId, ui
}
else
player->SendEquipError(EQUIP_ERR_CANT_DO_RIGHT_NOW, NULL, NULL);
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
}
/*###
@ -434,16 +434,16 @@ public:
return (player->HasSpell(S_TRANSMUTE) || player->HasSpell(S_ELIXIR) || player->HasSpell(S_POTION));
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
if (creature->IsVendor())
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
AddGossipItemFor(player, GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
if (creature->IsTrainer())
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, GOSSIP_TEXT_TRAIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN);
AddGossipItemFor(player, GOSSIP_ICON_TRAINER, GOSSIP_TEXT_TRAIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN);
if (player->HasSkill(SKILL_ALCHEMY) && player->GetBaseSkillValue(SKILL_ALCHEMY) >= 350 && player->getLevel() > 67)
{
@ -453,27 +453,27 @@ public:
{
case N_TRAINER_TRANSMUTE: //Zarevhi
if (!HasAlchemySpell(player))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LEARN_TRANSMUTE, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LEARN_TRANSMUTE, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 1);
if (player->HasSpell(S_TRANSMUTE))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_UNLEARN_TRANSMUTE, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 4);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_UNLEARN_TRANSMUTE, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 4);
break;
case N_TRAINER_ELIXIR: //Lorokeem
if (!HasAlchemySpell(player))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LEARN_ELIXIR, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 2);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LEARN_ELIXIR, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 2);
if (player->HasSpell(S_ELIXIR))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_UNLEARN_ELIXIR, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 5);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_UNLEARN_ELIXIR, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 5);
break;
case N_TRAINER_POTION: //Lauranna Thar'well
if (!HasAlchemySpell(player))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LEARN_POTION, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 3);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LEARN_POTION, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 3);
if (player->HasSpell(S_POTION))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_UNLEARN_POTION, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 6);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_UNLEARN_POTION, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 6);
break;
}
}
}
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
@ -517,19 +517,19 @@ public:
switch (creature->GetEntry())
{
case N_TRAINER_TRANSMUTE:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LEARN_TRANSMUTE, GOSSIP_SENDER_CHECK, action);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LEARN_TRANSMUTE, GOSSIP_SENDER_CHECK, action);
//unknown textID ()
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
break;
case N_TRAINER_ELIXIR:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LEARN_ELIXIR, GOSSIP_SENDER_CHECK, action);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LEARN_ELIXIR, GOSSIP_SENDER_CHECK, action);
//unknown textID ()
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
break;
case N_TRAINER_POTION:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LEARN_POTION, GOSSIP_SENDER_CHECK, action);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LEARN_POTION, GOSSIP_SENDER_CHECK, action);
//unknown textID ()
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
break;
}
}
@ -542,27 +542,27 @@ public:
switch (creature->GetEntry())
{
case N_TRAINER_TRANSMUTE: //Zarevhi
player->ADD_GOSSIP_ITEM_EXTENDED(0, GOSSIP_UNLEARN_TRANSMUTE, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_ALCHEMY_SPEC, DoHighUnlearnCost(player), false);
AddGossipItemFor(player, 0, GOSSIP_UNLEARN_TRANSMUTE, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_ALCHEMY_SPEC, DoHighUnlearnCost(player), false);
//unknown textID ()
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
break;
case N_TRAINER_ELIXIR: //Lorokeem
player->ADD_GOSSIP_ITEM_EXTENDED(0, GOSSIP_UNLEARN_ELIXIR, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_ALCHEMY_SPEC, DoHighUnlearnCost(player), false);
AddGossipItemFor(player, 0, GOSSIP_UNLEARN_ELIXIR, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_ALCHEMY_SPEC, DoHighUnlearnCost(player), false);
//unknown textID ()
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
break;
case N_TRAINER_POTION: //Lauranna Thar'well
player->ADD_GOSSIP_ITEM_EXTENDED(0, GOSSIP_UNLEARN_POTION, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_ALCHEMY_SPEC, DoHighUnlearnCost(player), false);
AddGossipItemFor(player, 0, GOSSIP_UNLEARN_POTION, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_ALCHEMY_SPEC, DoHighUnlearnCost(player), false);
//unknown textID ()
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
break;
}
}
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 sender, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 sender, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (sender)
{
case GOSSIP_SENDER_MAIN:
@ -599,16 +599,16 @@ public:
return (player->HasSpell(S_HAMMER) || player->HasSpell(S_AXE) || player->HasSpell(S_SWORD));
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
if (creature->IsVendor())
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
AddGossipItemFor(player, GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
if (creature->IsTrainer())
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, GOSSIP_TEXT_TRAIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN);
AddGossipItemFor(player, GOSSIP_ICON_TRAINER, GOSSIP_TEXT_TRAIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN);
uint32 creatureId = creature->GetEntry();
//WEAPONSMITH & ARMORSMITH
@ -621,19 +621,19 @@ public:
case N_TRAINER_SMITHOMNI1: //Myolor Sunderfury
case N_TRAINER_SMITHOMNI2: //Krathok Moltenfist
if (!player->HasSpell(S_ARMOR) && !player->HasSpell(S_WEAPON))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ARMOR_LEARN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ARMOR_LEARN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
if (!player->HasSpell(S_WEAPON) && !player->HasSpell(S_ARMOR))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_WEAPON_LEARN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_WEAPON_LEARN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
break;
case N_TRAINER_WEAPON1: //Ironus Coldsteel
case N_TRAINER_WEAPON2: //Borgosh Corebender
if (player->HasSpell(S_WEAPON))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_WEAPON_UNLEARN, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 3);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_WEAPON_UNLEARN, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 3);
break;
case N_TRAINER_ARMOR1: //Grumnus Steelshaper
case N_TRAINER_ARMOR2: //Okothos Ironrager
if (player->HasSpell(S_ARMOR))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ARMOR_UNLEARN, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 4);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ARMOR_UNLEARN, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 4);
break;
}
}
@ -645,26 +645,26 @@ public:
{
case N_TRAINER_HAMMER: //Lilith the Lithe
if (!HasWeaponSub(player))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LEARN_HAMMER, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 5);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LEARN_HAMMER, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 5);
if (player->HasSpell(S_HAMMER))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_UNLEARN_HAMMER, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 8);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_UNLEARN_HAMMER, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 8);
break;
case N_TRAINER_AXE: //Kilram
if (!HasWeaponSub(player))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LEARN_AXE, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 6);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LEARN_AXE, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 6);
if (player->HasSpell(S_AXE))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_UNLEARN_AXE, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 9);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_UNLEARN_AXE, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 9);
break;
case N_TRAINER_SWORD: //Seril Scourgebane
if (!HasWeaponSub(player))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LEARN_SWORD, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 7);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LEARN_SWORD, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 7);
if (player->HasSpell(S_SWORD))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_UNLEARN_SWORD, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 10);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_UNLEARN_SWORD, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 10);
break;
}
}
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
@ -688,7 +688,7 @@ public:
//Unlearn Armor/Weapon
case GOSSIP_ACTION_INFO_DEF + 3:
if (HasWeaponSub(player))
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
else
ProcessUnlearnAction(player, creature, S_UNLEARN_WEAPON, S_REP_ARMOR, DoLowUnlearnCost(player));
break;
@ -725,19 +725,19 @@ public:
switch (creature->GetEntry())
{
case N_TRAINER_HAMMER:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LEARN_HAMMER, GOSSIP_SENDER_CHECK, action);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LEARN_HAMMER, GOSSIP_SENDER_CHECK, action);
//unknown textID (TALK_HAMMER_LEARN)
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
break;
case N_TRAINER_AXE:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LEARN_AXE, GOSSIP_SENDER_CHECK, action);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LEARN_AXE, GOSSIP_SENDER_CHECK, action);
//unknown textID (TALK_AXE_LEARN)
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
break;
case N_TRAINER_SWORD:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LEARN_SWORD, GOSSIP_SENDER_CHECK, action);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LEARN_SWORD, GOSSIP_SENDER_CHECK, action);
//unknown textID (TALK_SWORD_LEARN)
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
break;
}
}
@ -753,33 +753,33 @@ public:
case N_TRAINER_WEAPON2: //Borgosh Corebender
case N_TRAINER_ARMOR1: //Grumnus Steelshaper
case N_TRAINER_ARMOR2: //Okothos Ironrager
player->ADD_GOSSIP_ITEM_EXTENDED(0, GOSSIP_UNLEARN_SMITH_SPEC, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_ARMORORWEAPON, DoLowUnlearnCost(player), false);
AddGossipItemFor(player, 0, GOSSIP_UNLEARN_SMITH_SPEC, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_ARMORORWEAPON, DoLowUnlearnCost(player), false);
//unknown textID (TALK_UNLEARN_AXEORWEAPON)
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
break;
case N_TRAINER_HAMMER:
player->ADD_GOSSIP_ITEM_EXTENDED(0, GOSSIP_UNLEARN_HAMMER, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_WEAPON_SPEC, DoMedUnlearnCost(player), false);
AddGossipItemFor(player, 0, GOSSIP_UNLEARN_HAMMER, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_WEAPON_SPEC, DoMedUnlearnCost(player), false);
//unknown textID (TALK_HAMMER_UNLEARN)
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
break;
case N_TRAINER_AXE:
player->ADD_GOSSIP_ITEM_EXTENDED(0, GOSSIP_UNLEARN_AXE, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_WEAPON_SPEC, DoMedUnlearnCost(player), false);
AddGossipItemFor(player, 0, GOSSIP_UNLEARN_AXE, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_WEAPON_SPEC, DoMedUnlearnCost(player), false);
//unknown textID (TALK_AXE_UNLEARN)
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
break;
case N_TRAINER_SWORD:
player->ADD_GOSSIP_ITEM_EXTENDED(0, GOSSIP_UNLEARN_SWORD, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_WEAPON_SPEC, DoMedUnlearnCost(player), false);
AddGossipItemFor(player, 0, GOSSIP_UNLEARN_SWORD, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_WEAPON_SPEC, DoMedUnlearnCost(player), false);
//unknown textID (TALK_SWORD_UNLEARN)
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
break;
}
}
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 sender, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 sender, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (sender)
{
case GOSSIP_SENDER_MAIN:
@ -847,7 +847,7 @@ public:
return res;
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
uint32 npcTextId = 0;
std::string gossipItem;
@ -881,17 +881,17 @@ public:
}
if (canLearn)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, gossipItem, creature->GetEntry(), GOSSIP_ACTION_INFO_DEF + 1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, gossipItem, creature->GetEntry(), GOSSIP_ACTION_INFO_DEF + 1);
player->SEND_GOSSIP_MENU(npcTextId ? npcTextId : player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, npcTextId ? npcTextId : player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 sender, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 sender, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_INFO_DEF + 1)
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
if (sender != creature->GetEntry())
return true;
@ -930,16 +930,16 @@ public:
return (player->HasSpell(S_DRAGON) || player->HasSpell(S_ELEMENTAL) || player->HasSpell(S_TRIBAL));
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
if (creature->IsVendor())
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
AddGossipItemFor(player, GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
if (creature->IsTrainer())
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, GOSSIP_TEXT_TRAIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN);
AddGossipItemFor(player, GOSSIP_ICON_TRAINER, GOSSIP_TEXT_TRAIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN);
// pussywizard: NO UNLEARNING! LEATHERWORKING SPECIALTY IS A PERMANENT DECISION AND CANNOT BE CHANGED IN ANY WAY!
// pussywizard: CAN RE-LEARN ONLY THE ONE FOR WHICH QUEST IS COMPLETED!
@ -951,22 +951,22 @@ public:
case N_TRAINER_DRAGON1: //Peter Galen
case N_TRAINER_DRAGON2: //Thorkaf Dragoneye
if (!HasLeatherSpecialty(player) && (player->GetQuestRewardStatus(5141) || player->GetQuestRewardStatus(5145)))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LEARN_DRAGON, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LEARN_DRAGON, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
break;
case N_TRAINER_ELEMENTAL1: //Sarah Tanner
case N_TRAINER_ELEMENTAL2: //Brumn Winterhoof
if (!HasLeatherSpecialty(player) && (player->GetQuestRewardStatus(5144) || player->GetQuestRewardStatus(5146)))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LEARN_ELEMENTAL, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LEARN_ELEMENTAL, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
break;
case N_TRAINER_TRIBAL1: //Caryssia Moonhunter
case N_TRAINER_TRIBAL2: //Se'Jib
if (!HasLeatherSpecialty(player) && (player->GetQuestRewardStatus(5143) || player->GetQuestRewardStatus(5148)))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LEARN_TRIBAL, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LEARN_TRIBAL, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
break;
}
}
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
@ -993,9 +993,9 @@ public:
}
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 sender, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 sender, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (sender)
{
case GOSSIP_SENDER_MAIN:
@ -1020,16 +1020,16 @@ public:
return (player->HasSpell(S_MOONCLOTH) || player->HasSpell(S_SHADOWEAVE) || player->HasSpell(S_SPELLFIRE));
}
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
if (creature->IsVendor())
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
AddGossipItemFor(player, GOSSIP_ICON_VENDOR, GOSSIP_TEXT_BROWSE_GOODS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRADE);
if (creature->IsTrainer())
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, GOSSIP_TEXT_TRAIN, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN);
AddGossipItemFor(player, GOSSIP_ICON_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)
@ -1040,27 +1040,27 @@ public:
{
case N_TRAINER_SPELLFIRE: //Gidge Spellweaver
if (!HasTailorSpell(player))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LEARN_SPELLFIRE, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LEARN_SPELLFIRE, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 1);
if (player->HasSpell(S_SPELLFIRE))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_UNLEARN_SPELLFIRE, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 4);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_UNLEARN_SPELLFIRE, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 4);
break;
case N_TRAINER_MOONCLOTH: //Nasmara Moonsong
if (!HasTailorSpell(player))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LEARN_MOONCLOTH, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 2);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LEARN_MOONCLOTH, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 2);
if (player->HasSpell(S_MOONCLOTH))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_UNLEARN_MOONCLOTH, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 5);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_UNLEARN_MOONCLOTH, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 5);
break;
case N_TRAINER_SHADOWEAVE: //Andrion Darkspinner
if (!HasTailorSpell(player))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LEARN_SHADOWEAVE, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 3);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LEARN_SHADOWEAVE, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 3);
if (player->HasSpell(S_SHADOWEAVE))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_UNLEARN_SHADOWEAVE, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 6);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_UNLEARN_SHADOWEAVE, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 6);
break;
}
}
}
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
@ -1104,19 +1104,19 @@ public:
switch (creature->GetEntry())
{
case N_TRAINER_SPELLFIRE:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LEARN_SPELLFIRE, GOSSIP_SENDER_CHECK, action);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LEARN_SPELLFIRE, GOSSIP_SENDER_CHECK, action);
//unknown textID ()
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
break;
case N_TRAINER_MOONCLOTH:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LEARN_MOONCLOTH, GOSSIP_SENDER_CHECK, action);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LEARN_MOONCLOTH, GOSSIP_SENDER_CHECK, action);
//unknown textID ()
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
break;
case N_TRAINER_SHADOWEAVE:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LEARN_SHADOWEAVE, GOSSIP_SENDER_CHECK, action);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LEARN_SHADOWEAVE, GOSSIP_SENDER_CHECK, action);
//unknown textID ()
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
break;
}
}
@ -1129,27 +1129,27 @@ public:
switch (creature->GetEntry())
{
case N_TRAINER_SPELLFIRE: //Gidge Spellweaver
player->ADD_GOSSIP_ITEM_EXTENDED(0, GOSSIP_UNLEARN_SPELLFIRE, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_TAILOR_SPEC, DoHighUnlearnCost(player), false);
AddGossipItemFor(player, 0, GOSSIP_UNLEARN_SPELLFIRE, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_TAILOR_SPEC, DoHighUnlearnCost(player), false);
//unknown textID ()
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
break;
case N_TRAINER_MOONCLOTH: //Nasmara Moonsong
player->ADD_GOSSIP_ITEM_EXTENDED(0, GOSSIP_UNLEARN_MOONCLOTH, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_TAILOR_SPEC, DoHighUnlearnCost(player), false);
AddGossipItemFor(player, 0, GOSSIP_UNLEARN_MOONCLOTH, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_TAILOR_SPEC, DoHighUnlearnCost(player), false);
//unknown textID ()
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
break;
case N_TRAINER_SHADOWEAVE: //Andrion Darkspinner
player->ADD_GOSSIP_ITEM_EXTENDED(0, GOSSIP_UNLEARN_SHADOWEAVE, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_TAILOR_SPEC, DoHighUnlearnCost(player), false);
AddGossipItemFor(player, 0, GOSSIP_UNLEARN_SHADOWEAVE, GOSSIP_SENDER_CHECK, action, BOX_UNLEARN_TAILOR_SPEC, DoHighUnlearnCost(player), false);
//unknown textID ()
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
break;
}
}
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 sender, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 sender, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (sender)
{
case GOSSIP_SENDER_MAIN:
@ -1177,7 +1177,7 @@ class go_evil_book_for_dummies : public GameObjectScript
public:
go_evil_book_for_dummies() : GameObjectScript("go_evil_book_for_dummies") { }
bool OnGossipHello(Player* player, GameObject* gameobject)
bool OnGossipHello(Player* player, GameObject* gameobject) override
{ //TAILORING SPEC
if (player->HasSkill(SKILL_ENGINEERING) && player->GetBaseSkillValue(SKILL_ENGINEERING) >= 225 && player->getLevel() >= 35)
{
@ -1185,21 +1185,21 @@ public:
{
if (player->HasSpell(S_GOBLIN)) // Has Goblin specialization
{
player->ADD_GOSSIP_ITEM_EXTENDED(0, GOSSIP_UNLEARN_GOBLIN, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 3, BOX_UNLEARN_ENGIN_SPEC, DoHighUnlearnCost(player), false);
AddGossipItemFor(player, 0, GOSSIP_UNLEARN_GOBLIN, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 3, BOX_UNLEARN_ENGIN_SPEC, DoHighUnlearnCost(player), false);
}
else if (player->HasSpell(S_GNOMISH)) // Has Gnomish specialization
{
player->ADD_GOSSIP_ITEM_EXTENDED(0, GOSSIP_UNLEARN_GNOMISH, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 4, BOX_UNLEARN_ENGIN_SPEC, DoHighUnlearnCost(player), false);
AddGossipItemFor(player, 0, GOSSIP_UNLEARN_GNOMISH, GOSSIP_SENDER_UNLEARN, GOSSIP_ACTION_INFO_DEF + 4, BOX_UNLEARN_ENGIN_SPEC, DoHighUnlearnCost(player), false);
}
else // does not have any specialization
{
player->ADD_GOSSIP_ITEM_EXTENDED(GOSSIP_ICON_CHAT, GOSSIP_LEARN_GOBLIN, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 1, BOX_LEARN_ENGIN_SPEC, DoLearnCost(player), false);
player->ADD_GOSSIP_ITEM_EXTENDED(GOSSIP_ICON_CHAT, GOSSIP_LEARN_GNOMISH, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 2, BOX_LEARN_ENGIN_SPEC, DoLearnCost(player), false);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LEARN_GOBLIN, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 1, BOX_LEARN_ENGIN_SPEC, DoLearnCost(player), false);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LEARN_GNOMISH, GOSSIP_SENDER_LEARN, GOSSIP_ACTION_INFO_DEF + 2, BOX_LEARN_ENGIN_SPEC, DoLearnCost(player), false);
}
}
}
player->SEND_GOSSIP_MENU(player->GetGossipTextId(gameobject), gameobject->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(gameobject), gameobject->GetGUID());
return true;
}
@ -1232,13 +1232,13 @@ public:
{
// Goblin
case GOSSIP_ACTION_INFO_DEF + 1:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LEARN_GOBLIN, GOSSIP_SENDER_CHECK, uiAction);
player->SEND_GOSSIP_MENU(player->GetGossipTextId(gameobject), gameobject->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LEARN_GOBLIN, GOSSIP_SENDER_CHECK, uiAction);
SendGossipMenuFor(player, player->GetGossipTextId(gameobject), gameobject->GetGUID());
break;
// Gnomish
case GOSSIP_ACTION_INFO_DEF + 2:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LEARN_GNOMISH, GOSSIP_SENDER_CHECK, uiAction);
player->SEND_GOSSIP_MENU(player->GetGossipTextId(gameobject), gameobject->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LEARN_GNOMISH, GOSSIP_SENDER_CHECK, uiAction);
SendGossipMenuFor(player, player->GetGossipTextId(gameobject), gameobject->GetGUID());
break;
}
}
@ -1249,20 +1249,20 @@ public:
{
// Goblin
case GOSSIP_ACTION_INFO_DEF + 3:
player->ADD_GOSSIP_ITEM_EXTENDED(0, GOSSIP_UNLEARN_GOBLIN, GOSSIP_SENDER_CHECK, uiAction, BOX_UNLEARN_ENGIN_SPEC, DoHighUnlearnCost(player), false);
player->SEND_GOSSIP_MENU(player->GetGossipTextId(gameobject), gameobject->GetGUID());
AddGossipItemFor(player, 0, GOSSIP_UNLEARN_GOBLIN, GOSSIP_SENDER_CHECK, uiAction, BOX_UNLEARN_ENGIN_SPEC, DoHighUnlearnCost(player), false);
SendGossipMenuFor(player, player->GetGossipTextId(gameobject), gameobject->GetGUID());
break;
// Gnomish
case GOSSIP_ACTION_INFO_DEF + 4:
player->ADD_GOSSIP_ITEM_EXTENDED(0, GOSSIP_UNLEARN_GNOMISH, GOSSIP_SENDER_CHECK, uiAction, BOX_UNLEARN_ENGIN_SPEC, DoHighUnlearnCost(player), false);
player->SEND_GOSSIP_MENU(player->GetGossipTextId(gameobject), gameobject->GetGUID());
AddGossipItemFor(player, 0, GOSSIP_UNLEARN_GNOMISH, GOSSIP_SENDER_CHECK, uiAction, BOX_UNLEARN_ENGIN_SPEC, DoHighUnlearnCost(player), false);
SendGossipMenuFor(player, player->GetGossipTextId(gameobject), gameobject->GetGUID());
break;
}
}
bool OnGossipSelect(Player* player, GameObject* gameobject, uint32 uiSender, uint32 uiAction)
bool OnGossipSelect(Player* player, GameObject* gameobject, uint32 uiSender, uint32 uiAction) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch(uiSender)
{
case GOSSIP_SENDER_LEARN: SendActionMenu(player, gameobject, uiAction); break;

View file

@ -50,7 +50,7 @@ class npc_taxi : public CreatureScript
public:
npc_taxi() : CreatureScript("npc_taxi") { }
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
@ -59,220 +59,220 @@ public:
{
case 17435: // Azuremyst Isle - Susurrus
if (player->HasItemCount(23843, 1, true))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SUSURRUS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_SUSURRUS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
break;
case 20903: // Netherstorm - Protectorate Nether Drake
if (player->GetQuestStatus(10438) == QUEST_STATUS_INCOMPLETE && player->HasItemCount(29778))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_NETHER_DRAKE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_NETHER_DRAKE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
break;
case 29154: // Stormwind City - Thargold Ironwing
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_IRONWING, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_IRONWING, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
break;
case 19409: // Hellfire Peninsula - Wing Commander Dabir'ee
//Mission: The Murketh and Shaadraz Gateways
if (player->GetQuestStatus(10146) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_DABIREE1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_DABIREE1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
//Shatter Point
if (!player->GetQuestRewardStatus(10340))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_DABIREE2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_DABIREE2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
break;
case 20235: // Hellfire Peninsula - Gryphoneer Windbellow
//Mission: The Abyssal Shelf || Return to the Abyssal Shelf
if (player->GetQuestStatus(10163) == QUEST_STATUS_INCOMPLETE || player->GetQuestStatus(10346) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_WINDBELLOW1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_WINDBELLOW1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6);
//Go to the Front
if (player->GetQuestStatus(10382) != QUEST_STATUS_NONE && !player->GetQuestRewardStatus(10382))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_WINDBELLOW2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 7);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_WINDBELLOW2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 7);
break;
case 19401: // Hellfire Peninsula - Wing Commander Brack
//Mission: The Murketh and Shaadraz Gateways
if (player->GetQuestStatus(10129) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_BRACK1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 8);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_BRACK1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 8);
//Mission: The Abyssal Shelf || Return to the Abyssal Shelf
if (player->GetQuestStatus(10162) == QUEST_STATUS_INCOMPLETE || player->GetQuestStatus(10347) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_BRACK2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 9);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_BRACK2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 9);
//Spinebreaker Post
if (player->GetQuestStatus(10242) == QUEST_STATUS_COMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_BRACK3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 10);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_BRACK3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 10);
break;
case 23413: // Blade's Edge Mountains - Skyguard Handler Irena
if (player->GetReputationRank(1031) >= REP_HONORED)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_IRENA, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 11);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_IRENA, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 11);
break;
case 25059: // Isle of Quel'Danas - Ayren Cloudbreaker
if (player->GetQuestStatus(11532) == QUEST_STATUS_INCOMPLETE || player->GetQuestStatus(11533) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_CLOUDBREAKER1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 12);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_CLOUDBREAKER1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 12);
if (player->GetQuestStatus(11542) == QUEST_STATUS_INCOMPLETE || player->GetQuestStatus(11543) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_CLOUDBREAKER2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 13);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_CLOUDBREAKER2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 13);
break;
case 25236: // Isle of Quel'Danas - Unrestrained Dragonhawk
if (player->GetQuestStatus(11542) == QUEST_STATUS_COMPLETE || player->GetQuestStatus(11543) == QUEST_STATUS_COMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_DRAGONHAWK, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 14);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_DRAGONHAWK, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 14);
break;
case 20162: // Netherstorm - Veronia
//Behind Enemy Lines
if (player->GetQuestStatus(10652) != QUEST_STATUS_REWARDED)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_VERONIA, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 15);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_VERONIA, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 15);
break;
case 23415: // Terokkar Forest - Skyguard Handler Deesak
if (player->GetReputationRank(1031) >= REP_HONORED)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_DEESAK, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 16);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_DEESAK, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 16);
break;
case 27575: // Dragonblight - Lord Afrasastrasz
// middle -> ground
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_AFRASASTRASZ1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 17);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_AFRASASTRASZ1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 17);
// middle -> top
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_AFRASASTRASZ2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 18);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_AFRASASTRASZ2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 18);
break;
case 26443: // Dragonblight - Tariolstrasz //need to check if quests are required before gossip available (12123, 12124)
// ground -> top
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_TARIOLSTRASZ1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 19);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_TARIOLSTRASZ1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 19);
// ground -> middle
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_TARIOLSTRASZ2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 20);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_TARIOLSTRASZ2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 20);
break;
case 26949: // Dragonblight - Torastrasza
// top -> middle
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_TORASTRASZA1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 21);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_TORASTRASZA1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 21);
// top -> ground
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_TORASTRASZA2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 22);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_TORASTRASZA2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 22);
break;
case 23704: // Dustwallow Marsh - Cassa Crimsonwing
if (player->GetQuestStatus(11142) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_CRIMSONWING, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+25);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_CRIMSONWING, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+25);
break;
case 17209:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_WILLIAMKEILAR1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 26);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_WILLIAMKEILAR2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 27);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_WILLIAMKEILAR3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 28);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_WILLIAMKEILAR1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 26);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_WILLIAMKEILAR2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 27);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_WILLIAMKEILAR3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 28);
break;
}
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (action)
{
case GOSSIP_ACTION_INFO_DEF:
//spellId is correct, however it gives flight a somewhat funny effect //TaxiPath 506.
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->CastSpell(player, 32474, true);
break;
case GOSSIP_ACTION_INFO_DEF + 1:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->ActivateTaxiPathTo(627); //TaxiPath 627 (possibly 627+628(152->153->154->155))
break;
case GOSSIP_ACTION_INFO_DEF + 3:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->CastSpell(player, 53335, true); //TaxiPath 1041 (Stormwind Harbor)
break;
case GOSSIP_ACTION_INFO_DEF + 4:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->CastSpell(player, 33768, true); //TaxiPath 585 (Gateways Murket and Shaadraz)
break;
case GOSSIP_ACTION_INFO_DEF + 5:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->CastSpell(player, 35069, true); //TaxiPath 612 (Taxi - Hellfire Peninsula - Expedition Point to Shatter Point)
break;
case GOSSIP_ACTION_INFO_DEF + 6:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->CastSpell(player, 33899, true); //TaxiPath 589 (Aerial Assault Flight (Alliance))
break;
case GOSSIP_ACTION_INFO_DEF + 7:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->CastSpell(player, 35065, true); //TaxiPath 607 (Taxi - Hellfire Peninsula - Shatter Point to Beach Head)
break;
case GOSSIP_ACTION_INFO_DEF + 8:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->CastSpell(player, 33659, true); //TaxiPath 584 (Gateways Murket and Shaadraz)
break;
case GOSSIP_ACTION_INFO_DEF + 9:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->CastSpell(player, 33825, true); //TaxiPath 587 (Aerial Assault Flight (Horde))
break;
case GOSSIP_ACTION_INFO_DEF + 10:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->CastSpell(player, 34578, true); //TaxiPath 604 (Taxi - Reaver's Fall to Spinebreaker Ridge)
break;
case GOSSIP_ACTION_INFO_DEF + 11:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->CastSpell(player, 41278, true); //TaxiPath 706
break;
case GOSSIP_ACTION_INFO_DEF + 12:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->CastSpell(player, 45071, true); //TaxiPath 779
break;
case GOSSIP_ACTION_INFO_DEF + 13:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->CastSpell(player, 45113, true); //TaxiPath 784
break;
case GOSSIP_ACTION_INFO_DEF + 14:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->CastSpell(player, 45353, true); //TaxiPath 788
break;
case GOSSIP_ACTION_INFO_DEF + 15:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->CastSpell(player, 34905, true); //TaxiPath 606
break;
case GOSSIP_ACTION_INFO_DEF + 16:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->CastSpell(player, 41279, true); //TaxiPath 705 (Taxi - Skettis to Skyguard Outpost)
break;
case GOSSIP_ACTION_INFO_DEF + 17:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->ActivateTaxiPathTo(882);
break;
case GOSSIP_ACTION_INFO_DEF + 18:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->ActivateTaxiPathTo(881);
break;
case GOSSIP_ACTION_INFO_DEF + 19:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->ActivateTaxiPathTo(878);
break;
case GOSSIP_ACTION_INFO_DEF + 20:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->ActivateTaxiPathTo(883);
break;
case GOSSIP_ACTION_INFO_DEF + 21:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->ActivateTaxiPathTo(880);
break;
case GOSSIP_ACTION_INFO_DEF + 22:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->ActivateTaxiPathTo(879);
break;
case GOSSIP_ACTION_INFO_DEF + 23:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->CastSpell(player, 43074, true); //TaxiPath 736
break;
case GOSSIP_ACTION_INFO_DEF + 24:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
//player->ActivateTaxiPathTo(738);
player->CastSpell(player, 43136, false);
break;
case GOSSIP_ACTION_INFO_DEF + 25:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->CastSpell(player, 42295, true);
break;
case GOSSIP_ACTION_INFO_DEF + 26:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->ActivateTaxiPathTo(494);
break;
case GOSSIP_ACTION_INFO_DEF + 27:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->ActivateTaxiPathTo(495);
break;
case GOSSIP_ACTION_INFO_DEF + 28:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->ActivateTaxiPathTo(496);
break;
}

View file

@ -71,7 +71,7 @@ public:
struct npc_elder_clearwaterAI : public ScriptedAI
{
npc_elder_clearwaterAI(Creature *c) : ScriptedAI(c)
npc_elder_clearwaterAI(Creature *c) : ScriptedAI(c)
{
events.Reset();
events.ScheduleEvent(EVENT_CLEARWATER_ANNOUNCE, 1000, 1, 0);
@ -87,7 +87,7 @@ public:
bool startWarning;
bool finishWarning;
uint32 GetData(uint32 type) const
uint32 GetData(uint32 type) const override
{
if (type == DATA_DERBY_FINISHED)
return (uint32)finished;
@ -95,13 +95,13 @@ public:
return 0;
}
void DoAction(int32 param)
void DoAction(int32 param) override
{
if (param == DATA_DERBY_FINISHED)
finished = true;
}
void UpdateAI(uint32 diff)
void UpdateAI(uint32 diff) override
{
events.Update(diff);
switch (events.GetEvent())
@ -142,7 +142,7 @@ public:
}
};
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
QuestRelationBounds pObjectQR;
QuestRelationBounds pObjectQIR;
@ -181,18 +181,18 @@ public:
return true;
}
bool OnQuestReward(Player* player, Creature* creature, Quest const* quest, uint32 /*opt*/)
bool OnQuestReward(Player* player, Creature* creature, Quest const* quest, uint32 /*opt*/) override
{
if (!creature->AI()->GetData(DATA_DERBY_FINISHED) && quest->GetQuestId() == QUEST_FISHING_DERBY)
{
creature->AI()->DoAction(DATA_DERBY_FINISHED);
sCreatureTextMgr->SendChat(creature, CLEARWATER_SAY_WINNER, player, CHAT_MSG_MONSTER_YELL, LANG_UNIVERSAL, TEXT_RANGE_MAP);
}
return true;
}
CreatureAI* GetAI(Creature* pCreature) const
CreatureAI* GetAI(Creature* pCreature) const override
{
return new npc_elder_clearwaterAI (pCreature);
}
@ -218,7 +218,7 @@ public:
struct npc_riggle_bassbaitAI : public ScriptedAI
{
npc_riggle_bassbaitAI(Creature *c) : ScriptedAI(c)
npc_riggle_bassbaitAI(Creature *c) : ScriptedAI(c)
{
events.Reset();
events.ScheduleEvent(EVENT_RIGGLE_ANNOUNCE, 1000, 1, 0);
@ -232,7 +232,7 @@ public:
bool startWarning;
bool finishWarning;
uint32 GetData(uint32 type) const
uint32 GetData(uint32 type) const override
{
if (type == DATA_ANGLER_FINISHED)
return (uint32)finished;
@ -240,13 +240,13 @@ public:
return 0;
}
void DoAction(int32 param)
void DoAction(int32 param) override
{
if (param == DATA_ANGLER_FINISHED)
finished = true;
}
void UpdateAI(uint32 diff)
void UpdateAI(uint32 diff) override
{
events.Update(diff);
switch (events.GetEvent())
@ -281,16 +281,16 @@ public:
}
};
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (!creature->AI()->GetData(DATA_ANGLER_FINISHED))
player->PrepareQuestMenu(creature->GetGUID());
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
bool OnQuestReward(Player* player, Creature* creature, Quest const* quest, uint32 /*opt*/)
bool OnQuestReward(Player* player, Creature* creature, Quest const* quest, uint32 /*opt*/) override
{
if (!creature->AI()->GetData(DATA_ANGLER_FINISHED) && quest->GetQuestId() == QUEST_MASTER_ANGLER)
{
@ -300,8 +300,7 @@ public:
return true;
}
CreatureAI* GetAI(Creature* pCreature) const
CreatureAI* GetAI(Creature* pCreature) const override
{
return new npc_riggle_bassbaitAI (pCreature);
}
@ -659,21 +658,21 @@ class npc_lunaclaw_spirit : public CreatureScript
public:
npc_lunaclaw_spirit() : CreatureScript("npc_lunaclaw_spirit") { }
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (player->GetQuestStatus(QUEST_BODY_HEART_A) == QUEST_STATUS_INCOMPLETE || player->GetQuestStatus(QUEST_BODY_HEART_H) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ITEM_GRANT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_GRANT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
player->SEND_GOSSIP_MENU(TEXT_ID_DEFAULT, creature->GetGUID());
SendGossipMenuFor(player, TEXT_ID_DEFAULT, creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
if (action == GOSSIP_ACTION_INFO_DEF + 1)
{
player->SEND_GOSSIP_MENU(TEXT_ID_PROGRESS, creature->GetGUID());
SendGossipMenuFor(player, TEXT_ID_PROGRESS, creature->GetGUID());
player->AreaExploredOrEventHappens(player->GetTeamId() == TEAM_ALLIANCE ? QUEST_BODY_HEART_A : QUEST_BODY_HEART_H);
}
return true;
@ -706,16 +705,16 @@ public:
uint32 ResetFlagTimer;
void Reset()
void Reset() override
{
ResetFlagTimer = 120000;
me->setFaction(FACTION_CHICKEN);
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
}
void EnterCombat(Unit* /*who*/) { }
void EnterCombat(Unit* /*who*/) override { }
void UpdateAI(uint32 diff)
void UpdateAI(uint32 diff) override
{
// Reset flags after a certain time has passed so that the next player has to start the 'event' again
if (me->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER))
@ -733,7 +732,7 @@ public:
DoMeleeAttackIfReady();
}
void ReceiveEmote(Player* player, uint32 emote)
void ReceiveEmote(Player* player, uint32 emote) override
{
switch (emote)
{
@ -1552,7 +1551,7 @@ class npc_sayge : public CreatureScript
public:
npc_sayge() : CreatureScript("npc_sayge") { }
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
@ -1565,11 +1564,11 @@ public:
player->HasSpellCooldown(SPELL_AGI) ||
player->HasSpellCooldown(SPELL_STM) ||
player->HasSpellCooldown(SPELL_SPI))
player->SEND_GOSSIP_MENU(7393, creature->GetGUID());
SendGossipMenuFor(player, 7393, creature->GetGUID());
else
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_HELLO_SAYGE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
player->SEND_GOSSIP_MENU(7339, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HELLO_SAYGE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
SendGossipMenuFor(player, 7339, creature->GetGUID());
}
return true;
@ -1580,50 +1579,50 @@ public:
switch (action)
{
case GOSSIP_ACTION_INFO_DEF + 1:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
player->SEND_GOSSIP_MENU(7340, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
SendGossipMenuFor(player, 7340, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 2:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE5, GOSSIP_SENDER_MAIN + 1, GOSSIP_ACTION_INFO_DEF);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE6, GOSSIP_SENDER_MAIN + 2, GOSSIP_ACTION_INFO_DEF);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE7, GOSSIP_SENDER_MAIN + 3, GOSSIP_ACTION_INFO_DEF);
player->SEND_GOSSIP_MENU(7341, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE5, GOSSIP_SENDER_MAIN + 1, GOSSIP_ACTION_INFO_DEF);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE6, GOSSIP_SENDER_MAIN + 2, GOSSIP_ACTION_INFO_DEF);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE7, GOSSIP_SENDER_MAIN + 3, GOSSIP_ACTION_INFO_DEF);
SendGossipMenuFor(player, 7341, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 3:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE8, GOSSIP_SENDER_MAIN + 4, GOSSIP_ACTION_INFO_DEF);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE9, GOSSIP_SENDER_MAIN + 5, GOSSIP_ACTION_INFO_DEF);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE10, GOSSIP_SENDER_MAIN + 2, GOSSIP_ACTION_INFO_DEF);
player->SEND_GOSSIP_MENU(7361, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE8, GOSSIP_SENDER_MAIN + 4, GOSSIP_ACTION_INFO_DEF);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE9, GOSSIP_SENDER_MAIN + 5, GOSSIP_ACTION_INFO_DEF);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE10, GOSSIP_SENDER_MAIN + 2, GOSSIP_ACTION_INFO_DEF);
SendGossipMenuFor(player, 7361, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 4:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE11, GOSSIP_SENDER_MAIN + 6, GOSSIP_ACTION_INFO_DEF);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE12, GOSSIP_SENDER_MAIN + 7, GOSSIP_ACTION_INFO_DEF);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE13, GOSSIP_SENDER_MAIN + 8, GOSSIP_ACTION_INFO_DEF);
player->SEND_GOSSIP_MENU(7362, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE11, GOSSIP_SENDER_MAIN + 6, GOSSIP_ACTION_INFO_DEF);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE12, GOSSIP_SENDER_MAIN + 7, GOSSIP_ACTION_INFO_DEF);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE13, GOSSIP_SENDER_MAIN + 8, GOSSIP_ACTION_INFO_DEF);
SendGossipMenuFor(player, 7362, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 5:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE14, GOSSIP_SENDER_MAIN + 5, GOSSIP_ACTION_INFO_DEF);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE15, GOSSIP_SENDER_MAIN + 4, GOSSIP_ACTION_INFO_DEF);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE16, GOSSIP_SENDER_MAIN + 3, GOSSIP_ACTION_INFO_DEF);
player->SEND_GOSSIP_MENU(7363, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE14, GOSSIP_SENDER_MAIN + 5, GOSSIP_ACTION_INFO_DEF);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE15, GOSSIP_SENDER_MAIN + 4, GOSSIP_ACTION_INFO_DEF);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE16, GOSSIP_SENDER_MAIN + 3, GOSSIP_ACTION_INFO_DEF);
SendGossipMenuFor(player, 7363, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF:
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE17, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6);
player->SEND_GOSSIP_MENU(7364, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_SENDACTION_SAYGE17, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6);
SendGossipMenuFor(player, 7364, creature->GetGUID());
break;
case GOSSIP_ACTION_INFO_DEF + 6:
creature->CastSpell(player, SPELL_FORTUNE, false);
player->SEND_GOSSIP_MENU(7365, creature->GetGUID());
SendGossipMenuFor(player, 7365, creature->GetGUID());
break;
}
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 sender, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 sender, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (sender)
{
case GOSSIP_SENDER_MAIN:
@ -1755,56 +1754,56 @@ class npc_wormhole : public CreatureScript
bool _showUnderground;
};
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsSummon())
{
if (player == creature->ToTempSummon()->GetSummoner())
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ENGINEERING1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ENGINEERING2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ENGINEERING3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ENGINEERING4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ENGINEERING5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ENGINEERING1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ENGINEERING2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ENGINEERING3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ENGINEERING4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ENGINEERING5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
if (creature->AI()->GetData(DATA_SHOW_UNDERGROUND))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_ENGINEERING6, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ENGINEERING6, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6);
player->PlayerTalkClass->SendGossipMenu(TEXT_WORMHOLE, creature->GetGUID());
SendGossipMenuFor(player, TEXT_WORMHOLE, creature);
}
}
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (action)
{
case GOSSIP_ACTION_INFO_DEF + 1: // Borean Tundra
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
creature->CastSpell(player, SPELL_BOREAN_TUNDRA, false);
break;
case GOSSIP_ACTION_INFO_DEF + 2: // Howling Fjord
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
creature->CastSpell(player, SPELL_HOWLING_FJORD, false);
break;
case GOSSIP_ACTION_INFO_DEF + 3: // Sholazar Basin
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
creature->CastSpell(player, SPELL_SHOLAZAR_BASIN, false);
break;
case GOSSIP_ACTION_INFO_DEF + 4: // Icecrown
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
creature->CastSpell(player, SPELL_ICECROWN, false);
break;
case GOSSIP_ACTION_INFO_DEF + 5: // Storm peaks
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
creature->CastSpell(player, SPELL_STORM_PEAKS, false);
break;
case GOSSIP_ACTION_INFO_DEF + 6: // Underground
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
creature->CastSpell(player, SPELL_UNDERGROUND, false);
break;
}
@ -1812,7 +1811,7 @@ class npc_wormhole : public CreatureScript
return true;
}
CreatureAI* GetAI(Creature* creature) const
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_wormholeAI(creature);
}
@ -1837,7 +1836,6 @@ public:
{
npc_pet_trainerAI(Creature* creature) : ScriptedAI(creature) { }
void sGossipSelect(Player* player, uint32 menuId, uint32 gossipListId) override
{
if (menuId == PET_UNLEARN && gossipListId == YES_PLEASE_DO)
@ -1907,90 +1905,90 @@ class npc_locksmith : public CreatureScript
public:
npc_locksmith() : CreatureScript("npc_locksmith") { }
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
// Arcatraz Key
if (player->GetQuestRewardStatus(QUEST_HOW_TO_BRAKE_IN_TO_THE_ARCATRAZ) && !player->HasItemCount(ITEM_ARCATRAZ_KEY, 1, true))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LOST_ARCATRAZ_KEY, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LOST_ARCATRAZ_KEY, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
// Shadowforge Key
if (player->GetQuestRewardStatus(QUEST_DARK_IRON_LEGACY) && !player->HasItemCount(ITEM_SHADOWFORGE_KEY, 1, true))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LOST_SHADOWFORGE_KEY, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LOST_SHADOWFORGE_KEY, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
// Skeleton Key
if ((player->GetQuestRewardStatus(QUEST_THE_KEY_TO_SCHOLOMANCE_A) || player->GetQuestRewardStatus(QUEST_THE_KEY_TO_SCHOLOMANCE_H)) &&
!player->HasItemCount(ITEM_SKELETON_KEY, 1, true))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LOST_SKELETON_KEY, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LOST_SKELETON_KEY, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
// Shatered Halls Key
if ((player->GetQuestRewardStatus(QUEST_HOTTER_THAN_HELL_A) || player->GetQuestRewardStatus(QUEST_HOTTER_THAN_HELL_H)) &&
!player->HasItemCount(ITEM_SHATTERED_HALLS_KEY, 1, true))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LOST_SHATTERED_HALLS_KEY, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LOST_SHATTERED_HALLS_KEY, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
// Master's Key
if (player->GetQuestRewardStatus(QUEST_RETURN_TO_KHAGDAR) && !player->HasItemCount(ITEM_THE_MASTERS_KEY, 1, true))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LOST_THE_MASTERS_KEY, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LOST_THE_MASTERS_KEY, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
// Violet Hold Key
if (player->GetQuestRewardStatus(QUEST_CONTAINMENT) && !player->HasItemCount(ITEM_VIOLET_HOLD_KEY, 1, true))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LOST_VIOLET_HOLD_KEY, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LOST_VIOLET_HOLD_KEY, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6);
// Essence-Infused Moonstone
if (player->GetQuestRewardStatus(QUEST_ETERNAL_VIGILANCE) && !player->HasItemCount(ITEM_ESSENCE_INFUSED_MOONSTONE, 1, true))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LOST_ESSENCE_INFUSED_MOONSTONE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 7);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LOST_ESSENCE_INFUSED_MOONSTONE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 7);
// Key to the Focusing Iris
if (player->GetQuestRewardStatus(QUEST_KEY_TO_THE_FOCUSING_IRIS) && !player->HasItemCount(ITEM_KEY_TO_THE_FOCUSING_IRIS, 1, true))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LOST_KEY_TO_THE_FOCUSING_IRIS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 8);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LOST_KEY_TO_THE_FOCUSING_IRIS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 8);
// Heroic Key to the Focusing Iris
if (player->GetQuestRewardStatus(QUEST_HC_KEY_TO_THE_FOCUSING_IRIS) && !player->HasItemCount(ITEM_HC_KEY_TO_THE_FOCUSING_IRIS, 1, true))
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_LOST_HC_KEY_TO_THE_FOCUSING_IRIS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 9);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_LOST_HC_KEY_TO_THE_FOCUSING_IRIS, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 9);
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
switch (action)
{
case GOSSIP_ACTION_INFO_DEF + 1:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->CastSpell(player, SPELL_ARCATRAZ_KEY, false);
break;
case GOSSIP_ACTION_INFO_DEF + 2:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->CastSpell(player, SPELL_SHADOWFORGE_KEY, false);
break;
case GOSSIP_ACTION_INFO_DEF + 3:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->CastSpell(player, SPELL_SKELETON_KEY, false);
break;
case GOSSIP_ACTION_INFO_DEF + 4:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->CastSpell(player, SPELL_SHATTERED_HALLS_KEY, false);
break;
case GOSSIP_ACTION_INFO_DEF + 5:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->CastSpell(player, SPELL_THE_MASTERS_KEY, false);
break;
case GOSSIP_ACTION_INFO_DEF + 6:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->CastSpell(player, SPELL_VIOLET_HOLD_KEY, false);
break;
case GOSSIP_ACTION_INFO_DEF + 7:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->CastSpell(player, SPELL_ESSENCE_INFUSED_MOONSTONE, false);
break;
case GOSSIP_ACTION_INFO_DEF + 8:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->AddItem(ITEM_KEY_TO_THE_FOCUSING_IRIS, 1);
break;
case GOSSIP_ACTION_INFO_DEF + 9:
player->CLOSE_GOSSIP_MENU();
CloseGossipMenuFor(player);
player->AddItem(ITEM_HC_KEY_TO_THE_FOCUSING_IRIS, 1);
break;
}
@ -2012,17 +2010,17 @@ class npc_experience : public CreatureScript
public:
npc_experience() : CreatureScript("npc_experience") { }
bool OnGossipHello(Player* player, Creature* creature)
bool OnGossipHello(Player* player, Creature* creature) override
{
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_XP_OFF, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_XP_ON, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
player->PlayerTalkClass->SendGossipMenu(GOSSIP_TEXT_EXP, creature->GetGUID());
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_XP_OFF, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_XP_ON, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
SendGossipMenuFor(player, GOSSIP_TEXT_EXP, creature);
return true;
}
bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 action)
bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 action) override
{
player->PlayerTalkClass->ClearMenus();
ClearGossipMenuFor(player);
bool noXPGain = player->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_NO_XP_GAIN);
bool doSwitch = false;