aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/server/game/AI/CoreAI/UnitAI.h8
-rwxr-xr-xsrc/server/game/Server/Protocol/Handlers/MiscHandler.cpp4
-rwxr-xr-xsrc/server/game/Server/Protocol/Handlers/NPCHandler.cpp2
-rwxr-xr-xsrc/server/game/Server/Protocol/Handlers/QuestHandler.cpp7
4 files changed, 21 insertions, 0 deletions
diff --git a/src/server/game/AI/CoreAI/UnitAI.h b/src/server/game/AI/CoreAI/UnitAI.h
index 07e976a00b7..cb4f5c4843b 100755
--- a/src/server/game/AI/CoreAI/UnitAI.h
+++ b/src/server/game/AI/CoreAI/UnitAI.h
@@ -151,6 +151,14 @@ class UnitAI
static AISpellInfoType *AISpellInfo;
static void FillAISpellInfo();
+
+ virtual void sGossipHello(Player* player){ }
+ virtual void sGossipSelect(Player* player, uint32 sender, uint32 action){ }
+ virtual void sGossipSelectCode(Player* player, uint32 sender, uint32 action, const char* code){ }
+ virtual void sQuestAccept(Player* player, Quest const* quest){ }
+ virtual void sQuestSelect(Player* player, Quest const* quest){ }
+ virtual void sQuestComplete(Player* player, Quest const* quest){ }
+ virtual void sQuestReward(Player* player, Quest const* quest, uint32 opt){ }
};
class PlayerAI : public UnitAI
diff --git a/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp b/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp
index 3c5e3d2b06e..fcebf186f94 100755
--- a/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp
+++ b/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp
@@ -140,6 +140,8 @@ void WorldSession::HandleGossipSelectOptionOpcode(WorldPacket & recv_data)
{
if (!sScriptMgr.OnGossipSelectCode(_player, unit, _player->PlayerTalkClass->GossipOptionSender(gossipListId), _player->PlayerTalkClass->GossipOptionAction(gossipListId), code.c_str()))
_player->OnGossipSelect(unit, gossipListId, menuId);
+
+ unit->AI()->sGossipSelectCode(_player, _player->PlayerTalkClass->GossipOptionSender(gossipListId), _player->PlayerTalkClass->GossipOptionAction(gossipListId), code.c_str());
}
else
sScriptMgr.OnGossipSelectCode(_player, go, _player->PlayerTalkClass->GossipOptionSender(gossipListId), _player->PlayerTalkClass->GossipOptionAction(gossipListId), code.c_str());
@@ -150,6 +152,8 @@ void WorldSession::HandleGossipSelectOptionOpcode(WorldPacket & recv_data)
{
if (!sScriptMgr.OnGossipSelect(_player, unit, _player->PlayerTalkClass->GossipOptionSender(gossipListId), _player->PlayerTalkClass->GossipOptionAction(gossipListId)))
_player->OnGossipSelect(unit, gossipListId, menuId);
+
+ unit->AI()->sGossipSelect(_player, _player->PlayerTalkClass->GossipOptionSender(gossipListId), _player->PlayerTalkClass->GossipOptionAction(gossipListId));
}
else
sScriptMgr.OnGossipSelect(_player, go, _player->PlayerTalkClass->GossipOptionSender(gossipListId), _player->PlayerTalkClass->GossipOptionAction(gossipListId));
diff --git a/src/server/game/Server/Protocol/Handlers/NPCHandler.cpp b/src/server/game/Server/Protocol/Handlers/NPCHandler.cpp
index 5841d9c48f6..a4b7909e2b1 100755
--- a/src/server/game/Server/Protocol/Handlers/NPCHandler.cpp
+++ b/src/server/game/Server/Protocol/Handlers/NPCHandler.cpp
@@ -34,6 +34,7 @@
#include "BattlegroundMgr.h"
#include "Battleground.h"
#include "ScriptMgr.h"
+#include "CreatureAI.h"
enum StableResultCode
{
@@ -343,6 +344,7 @@ void WorldSession::HandleGossipHelloOpcode(WorldPacket & recv_data)
_player->PrepareGossipMenu(unit, unit->GetCreatureInfo()->GossipMenuId, true);
_player->SendPreparedGossip(unit);
}
+ unit->AI()->sGossipHello(_player);
}
/*void WorldSession::HandleGossipSelectOptionOpcode(WorldPacket & recv_data)
diff --git a/src/server/game/Server/Protocol/Handlers/QuestHandler.cpp b/src/server/game/Server/Protocol/Handlers/QuestHandler.cpp
index 9e9ece0c83a..81b5b91ef94 100755
--- a/src/server/game/Server/Protocol/Handlers/QuestHandler.cpp
+++ b/src/server/game/Server/Protocol/Handlers/QuestHandler.cpp
@@ -32,6 +32,8 @@
#include "BattlegroundAV.h"
#include "ScriptMgr.h"
#include "ConditionMgr.h"
+#include "Creature.h"
+#include "CreatureAI.h"
void WorldSession::HandleQuestgiverStatusQueryOpcode(WorldPacket & recv_data)
{
@@ -105,6 +107,8 @@ void WorldSession::HandleQuestgiverHelloOpcode(WorldPacket & recv_data)
_player->PrepareGossipMenu(pCreature, pCreature->GetCreatureInfo()->GossipMenuId, true);
_player->SendPreparedGossip(pCreature);
+
+ pCreature->AI()->sGossipHello(_player);
}
void WorldSession::HandleQuestgiverAcceptQuestOpcode(WorldPacket & recv_data)
@@ -188,6 +192,7 @@ void WorldSession::HandleQuestgiverAcceptQuestOpcode(WorldPacket & recv_data)
{
case TYPEID_UNIT:
sScriptMgr.OnQuestAccept(_player, (pObject->ToCreature()), qInfo);
+ (pObject->ToCreature())->AI()->sQuestAccept(_player, qInfo);
break;
case TYPEID_ITEM:
case TYPEID_CONTAINER:
@@ -316,6 +321,8 @@ void WorldSession::HandleQuestgiverChooseRewardOpcode(WorldPacket & recv_data)
// Send next quest
if (Quest const* nextquest = _player->GetNextQuest(guid ,pQuest))
_player->PlayerTalkClass->SendQuestGiverQuestDetails(nextquest,guid,true);
+
+ (pObject->ToCreature())->AI()->sQuestReward(_player, pQuest, reward);
}
break;
case TYPEID_GAMEOBJECT: