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:
@@ -151,6 +151,14 @@ class UnitAI
|
|||||||
|
|
||||||
static AISpellInfoType *AISpellInfo;
|
static AISpellInfoType *AISpellInfo;
|
||||||
static void FillAISpellInfo();
|
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
|
class PlayerAI : public UnitAI
|
||||||
|
|||||||
@@ -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()))
|
if (!sScriptMgr.OnGossipSelectCode(_player, unit, _player->PlayerTalkClass->GossipOptionSender(gossipListId), _player->PlayerTalkClass->GossipOptionAction(gossipListId), code.c_str()))
|
||||||
_player->OnGossipSelect(unit, gossipListId, menuId);
|
_player->OnGossipSelect(unit, gossipListId, menuId);
|
||||||
|
|
||||||
|
unit->AI()->sGossipSelectCode(_player, _player->PlayerTalkClass->GossipOptionSender(gossipListId), _player->PlayerTalkClass->GossipOptionAction(gossipListId), code.c_str());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
sScriptMgr.OnGossipSelectCode(_player, go, _player->PlayerTalkClass->GossipOptionSender(gossipListId), _player->PlayerTalkClass->GossipOptionAction(gossipListId), code.c_str());
|
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)))
|
if (!sScriptMgr.OnGossipSelect(_player, unit, _player->PlayerTalkClass->GossipOptionSender(gossipListId), _player->PlayerTalkClass->GossipOptionAction(gossipListId)))
|
||||||
_player->OnGossipSelect(unit, gossipListId, menuId);
|
_player->OnGossipSelect(unit, gossipListId, menuId);
|
||||||
|
|
||||||
|
unit->AI()->sGossipSelect(_player, _player->PlayerTalkClass->GossipOptionSender(gossipListId), _player->PlayerTalkClass->GossipOptionAction(gossipListId));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
sScriptMgr.OnGossipSelect(_player, go, _player->PlayerTalkClass->GossipOptionSender(gossipListId), _player->PlayerTalkClass->GossipOptionAction(gossipListId));
|
sScriptMgr.OnGossipSelect(_player, go, _player->PlayerTalkClass->GossipOptionSender(gossipListId), _player->PlayerTalkClass->GossipOptionAction(gossipListId));
|
||||||
|
|||||||
@@ -34,6 +34,7 @@
|
|||||||
#include "BattlegroundMgr.h"
|
#include "BattlegroundMgr.h"
|
||||||
#include "Battleground.h"
|
#include "Battleground.h"
|
||||||
#include "ScriptMgr.h"
|
#include "ScriptMgr.h"
|
||||||
|
#include "CreatureAI.h"
|
||||||
|
|
||||||
enum StableResultCode
|
enum StableResultCode
|
||||||
{
|
{
|
||||||
@@ -343,6 +344,7 @@ void WorldSession::HandleGossipHelloOpcode(WorldPacket & recv_data)
|
|||||||
_player->PrepareGossipMenu(unit, unit->GetCreatureInfo()->GossipMenuId, true);
|
_player->PrepareGossipMenu(unit, unit->GetCreatureInfo()->GossipMenuId, true);
|
||||||
_player->SendPreparedGossip(unit);
|
_player->SendPreparedGossip(unit);
|
||||||
}
|
}
|
||||||
|
unit->AI()->sGossipHello(_player);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*void WorldSession::HandleGossipSelectOptionOpcode(WorldPacket & recv_data)
|
/*void WorldSession::HandleGossipSelectOptionOpcode(WorldPacket & recv_data)
|
||||||
|
|||||||
@@ -32,6 +32,8 @@
|
|||||||
#include "BattlegroundAV.h"
|
#include "BattlegroundAV.h"
|
||||||
#include "ScriptMgr.h"
|
#include "ScriptMgr.h"
|
||||||
#include "ConditionMgr.h"
|
#include "ConditionMgr.h"
|
||||||
|
#include "Creature.h"
|
||||||
|
#include "CreatureAI.h"
|
||||||
|
|
||||||
void WorldSession::HandleQuestgiverStatusQueryOpcode(WorldPacket & recv_data)
|
void WorldSession::HandleQuestgiverStatusQueryOpcode(WorldPacket & recv_data)
|
||||||
{
|
{
|
||||||
@@ -105,6 +107,8 @@ void WorldSession::HandleQuestgiverHelloOpcode(WorldPacket & recv_data)
|
|||||||
|
|
||||||
_player->PrepareGossipMenu(pCreature, pCreature->GetCreatureInfo()->GossipMenuId, true);
|
_player->PrepareGossipMenu(pCreature, pCreature->GetCreatureInfo()->GossipMenuId, true);
|
||||||
_player->SendPreparedGossip(pCreature);
|
_player->SendPreparedGossip(pCreature);
|
||||||
|
|
||||||
|
pCreature->AI()->sGossipHello(_player);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WorldSession::HandleQuestgiverAcceptQuestOpcode(WorldPacket & recv_data)
|
void WorldSession::HandleQuestgiverAcceptQuestOpcode(WorldPacket & recv_data)
|
||||||
@@ -188,6 +192,7 @@ void WorldSession::HandleQuestgiverAcceptQuestOpcode(WorldPacket & recv_data)
|
|||||||
{
|
{
|
||||||
case TYPEID_UNIT:
|
case TYPEID_UNIT:
|
||||||
sScriptMgr.OnQuestAccept(_player, (pObject->ToCreature()), qInfo);
|
sScriptMgr.OnQuestAccept(_player, (pObject->ToCreature()), qInfo);
|
||||||
|
(pObject->ToCreature())->AI()->sQuestAccept(_player, qInfo);
|
||||||
break;
|
break;
|
||||||
case TYPEID_ITEM:
|
case TYPEID_ITEM:
|
||||||
case TYPEID_CONTAINER:
|
case TYPEID_CONTAINER:
|
||||||
@@ -316,6 +321,8 @@ void WorldSession::HandleQuestgiverChooseRewardOpcode(WorldPacket & recv_data)
|
|||||||
// Send next quest
|
// Send next quest
|
||||||
if (Quest const* nextquest = _player->GetNextQuest(guid ,pQuest))
|
if (Quest const* nextquest = _player->GetNextQuest(guid ,pQuest))
|
||||||
_player->PlayerTalkClass->SendQuestGiverQuestDetails(nextquest,guid,true);
|
_player->PlayerTalkClass->SendQuestGiverQuestDetails(nextquest,guid,true);
|
||||||
|
|
||||||
|
(pObject->ToCreature())->AI()->sQuestReward(_player, pQuest, reward);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case TYPEID_GAMEOBJECT:
|
case TYPEID_GAMEOBJECT:
|
||||||
|
|||||||
Reference in New Issue
Block a user