diff options
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: |