Core/AI: added Gossip* and Quest* virtual functions to UnitAI, will be used in future system (not all functions hooked yet)

--HG--
branch : trunk
This commit is contained in:
Rat
2010-10-25 18:23:45 +02:00
parent 67346f449a
commit a792e3d67c
4 changed files with 21 additions and 0 deletions

View File

@@ -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

View File

@@ -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));

View File

@@ -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)

View File

@@ -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: