mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 13:41:31 +00:00
Change task selector quest function to not directly call the Send
function
This commit is contained in:
parent
6708cd3d75
commit
4c826dfbcc
@ -1019,6 +1019,7 @@ public:
|
|||||||
inline bool UpdateTasksOnSpeakWith(int NPCTypeID) { if(taskstate) return taskstate->UpdateTasksOnSpeakWith(this, NPCTypeID); else return false; }
|
inline bool UpdateTasksOnSpeakWith(int NPCTypeID) { if(taskstate) return taskstate->UpdateTasksOnSpeakWith(this, NPCTypeID); else return false; }
|
||||||
inline bool UpdateTasksOnDeliver(std::list<EQEmu::ItemInstance*>& Items, int Cash, int NPCTypeID) { if (taskstate) return taskstate->UpdateTasksOnDeliver(this, Items, Cash, NPCTypeID); else return false; }
|
inline bool UpdateTasksOnDeliver(std::list<EQEmu::ItemInstance*>& Items, int Cash, int NPCTypeID) { if (taskstate) return taskstate->UpdateTasksOnDeliver(this, Items, Cash, NPCTypeID); else return false; }
|
||||||
inline void TaskSetSelector(Mob *mob, int TaskSetID) { if(taskmanager) taskmanager->TaskSetSelector(this, taskstate, mob, TaskSetID); }
|
inline void TaskSetSelector(Mob *mob, int TaskSetID) { if(taskmanager) taskmanager->TaskSetSelector(this, taskstate, mob, TaskSetID); }
|
||||||
|
inline void TaskQuestSetSelector(Mob *mob, int count, int *tasks) { if(taskmanager) taskmanager->TaskQuestSetSelector(this, taskstate, mob, count, tasks); }
|
||||||
inline void EnableTask(int TaskCount, int *TaskList) { if(taskstate) taskstate->EnableTask(CharacterID(), TaskCount, TaskList); }
|
inline void EnableTask(int TaskCount, int *TaskList) { if(taskstate) taskstate->EnableTask(CharacterID(), TaskCount, TaskList); }
|
||||||
inline void DisableTask(int TaskCount, int *TaskList) { if(taskstate) taskstate->DisableTask(CharacterID(), TaskCount, TaskList); }
|
inline void DisableTask(int TaskCount, int *TaskList) { if(taskstate) taskstate->DisableTask(CharacterID(), TaskCount, TaskList); }
|
||||||
inline bool IsTaskEnabled(int TaskID) { return (taskstate ? taskstate->IsTaskEnabled(TaskID) : false); }
|
inline bool IsTaskEnabled(int TaskID) { return (taskstate ? taskstate->IsTaskEnabled(TaskID) : false); }
|
||||||
|
|||||||
@ -2149,7 +2149,7 @@ bool QuestManager::createBot(const char *name, const char *lastname, uint8 level
|
|||||||
void QuestManager::taskselector(int taskcount, int *tasks) {
|
void QuestManager::taskselector(int taskcount, int *tasks) {
|
||||||
QuestManagerCurrentQuestVars();
|
QuestManagerCurrentQuestVars();
|
||||||
if(RuleB(TaskSystem, EnableTaskSystem) && initiator && owner && taskmanager)
|
if(RuleB(TaskSystem, EnableTaskSystem) && initiator && owner && taskmanager)
|
||||||
taskmanager->SendTaskSelector(initiator, owner, taskcount, tasks);
|
initiator->TaskQuestSetSelector(owner, taskcount, tasks);
|
||||||
}
|
}
|
||||||
void QuestManager::enabletask(int taskcount, int *tasks) {
|
void QuestManager::enabletask(int taskcount, int *tasks) {
|
||||||
QuestManagerCurrentQuestVars();
|
QuestManagerCurrentQuestVars();
|
||||||
|
|||||||
@ -941,8 +941,6 @@ int TaskManager::GetTaskMaxLevel(int TaskID)
|
|||||||
|
|
||||||
void TaskManager::TaskSetSelector(Client *c, ClientTaskState *state, Mob *mob, int TaskSetID)
|
void TaskManager::TaskSetSelector(Client *c, ClientTaskState *state, Mob *mob, int TaskSetID)
|
||||||
{
|
{
|
||||||
unsigned int EnabledTaskIndex = 0;
|
|
||||||
unsigned int TaskSetIndex = 0;
|
|
||||||
int TaskList[MAXCHOOSERENTRIES];
|
int TaskList[MAXCHOOSERENTRIES];
|
||||||
int TaskListIndex = 0;
|
int TaskListIndex = 0;
|
||||||
int PlayerLevel = c->GetLevel();
|
int PlayerLevel = c->GetLevel();
|
||||||
@ -992,6 +990,38 @@ void TaskManager::TaskSetSelector(Client *c, ClientTaskState *state, Mob *mob, i
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// unlike the non-Quest version of this function, it does not check enabled, that is assumed the responsibility of the quest to handle
|
||||||
|
// we do however still want it to check the other stuff like level, active, room, etc
|
||||||
|
void TaskManager::TaskQuestSetSelector(Client *c, ClientTaskState *state, Mob *mob, int count, int *tasks)
|
||||||
|
{
|
||||||
|
int TaskList[MAXCHOOSERENTRIES];
|
||||||
|
int TaskListIndex = 0;
|
||||||
|
int PlayerLevel = c->GetLevel();
|
||||||
|
|
||||||
|
Log(Logs::General, Logs::Tasks, "[UPDATE] TaskQuestSetSelector called for array size %d", count);
|
||||||
|
|
||||||
|
if (count <= 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (int i = 0; i < count; ++i) {
|
||||||
|
auto task = tasks[i];
|
||||||
|
// verify level, we're not currently on it, repeatable status, if it's a (shared) task
|
||||||
|
// we aren't currently on another, and if it's enabled if not all_enabled
|
||||||
|
if (AppropriateLevel(task, PlayerLevel) &&
|
||||||
|
!state->IsTaskActive(task) && state->HasSlotForTask(Tasks[task]) && // this slot checking is a bit silly, but we allow mixing of task types ...
|
||||||
|
(IsTaskRepeatable(task) || !state->IsTaskCompleted(task)))
|
||||||
|
TaskList[TaskListIndex++] = task;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (TaskListIndex > 0) {
|
||||||
|
SendTaskSelector(c, mob, TaskListIndex, TaskList);
|
||||||
|
} else {
|
||||||
|
c->Message_StringID(15, MAX_ACTIVE_TASKS, c->GetName()); // check color, I think this might be only for (Shared) Tasks, w/e
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
void TaskManager::SendTaskSelector(Client *c, Mob *mob, int TaskCount, int *TaskList) {
|
void TaskManager::SendTaskSelector(Client *c, Mob *mob, int TaskCount, int *TaskList) {
|
||||||
|
|
||||||
if (c->ClientVersion() >= EQEmu::versions::ClientVersion::RoF)
|
if (c->ClientVersion() >= EQEmu::versions::ClientVersion::RoF)
|
||||||
|
|||||||
@ -261,6 +261,7 @@ public:
|
|||||||
int GetTaskMinLevel(int TaskID);
|
int GetTaskMinLevel(int TaskID);
|
||||||
int GetTaskMaxLevel(int TaskID);
|
int GetTaskMaxLevel(int TaskID);
|
||||||
void TaskSetSelector(Client *c, ClientTaskState *state, Mob *mob, int TaskSetID);
|
void TaskSetSelector(Client *c, ClientTaskState *state, Mob *mob, int TaskSetID);
|
||||||
|
void TaskQuestSetSelector(Client *c, ClientTaskState *state, Mob *mob, int count, int *tasks); // task list provided by QuestManager (perl/lua)
|
||||||
void SendActiveTasksToClient(Client *c, bool TaskComplete=false);
|
void SendActiveTasksToClient(Client *c, bool TaskComplete=false);
|
||||||
void SendSingleActiveTaskToClient(Client *c, int TaskIndex, bool TaskComplete, bool BringUpTaskJournal=false);
|
void SendSingleActiveTaskToClient(Client *c, int TaskIndex, bool TaskComplete, bool BringUpTaskJournal=false);
|
||||||
void SendTaskActivityShort(Client *c, int TaskID, int ActivityID, int ClientTaskIndex);
|
void SendTaskActivityShort(Client *c, int TaskID, int ActivityID, int ClientTaskIndex);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user