/* EQEmu: EQEmulator
Copyright (C) 2001-2026 EQEmu Development Team
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
#pragma once
#include "common/types.h"
#include "zone/event_codes.h"
#include
class Client;
class NPC;
namespace EQ {
class ItemInstance;
}
class QuestInterface {
public:
virtual int EventNPC(
QuestEventID event_id,
NPC* npc,
Mob* init,
std::string data,
uint32 extra_data,
std::vector* extra_pointers
)
{
return 0;
}
virtual int EventGlobalNPC(
QuestEventID event_id,
NPC* npc,
Mob* init,
std::string data,
uint32 extra_data,
std::vector* extra_pointers
)
{
return 0;
}
virtual int EventPlayer(
QuestEventID event_id,
Client* client,
std::string data,
uint32 extra_data,
std::vector* extra_pointers
)
{
return 0;
}
virtual int EventGlobalPlayer(
QuestEventID event_id,
Client* client,
std::string data,
uint32 extra_data,
std::vector* extra_pointers
)
{
return 0;
}
virtual int EventItem(
QuestEventID event_id,
Client* client,
EQ::ItemInstance* inst,
Mob* mob,
std::string data,
uint32 extra_data,
std::vector* extra_pointers
)
{
return 0;
}
virtual int EventSpell(
QuestEventID event_id,
Mob* mob,
Client* client,
uint32 spell_id,
std::string data,
uint32 extra_data,
std::vector* extra_pointers
)
{
return 0;
}
virtual int EventEncounter(
QuestEventID event_id,
std::string encounter_name,
std::string data,
uint32 extra_data,
std::vector* extra_pointers
)
{
return 0;
}
virtual int EventBot(
QuestEventID event_id,
Bot* bot,
Mob* init,
std::string data,
uint32 extra_data,
std::vector* extra_pointers
)
{
return 0;
}
virtual int EventGlobalBot(
QuestEventID event_id,
Bot* bot,
Mob* init,
std::string data,
uint32 extra_data,
std::vector* extra_pointers
)
{
return 0;
}
virtual int EventMerc(
QuestEventID event_id,
Merc* merc,
Mob* init,
std::string data,
uint32 extra_data,
std::vector* extra_pointers
)
{
return 0;
}
virtual int EventGlobalMerc(
QuestEventID event_id,
Merc* merc,
Mob* init,
std::string data,
uint32 extra_data,
std::vector* extra_pointers
)
{
return 0;
}
virtual int EventZone(
QuestEventID event_id,
Zone* zone,
std::string data,
uint32 extra_data,
std::vector* extra_pointers
)
{
return 0;
}
virtual int EventGlobalZone(
QuestEventID event_id,
Zone* zone,
std::string data,
uint32 extra_data,
std::vector* extra_pointers
)
{
return 0;
}
virtual bool HasQuestSub(uint32 npc_id, QuestEventID event_id)
{
return false;
}
virtual bool HasGlobalQuestSub(QuestEventID event_id)
{
return false;
}
virtual bool PlayerHasQuestSub(QuestEventID event_id)
{
return false;
}
virtual bool GlobalPlayerHasQuestSub(QuestEventID event_id)
{
return false;
}
virtual bool SpellHasQuestSub(uint32 spell_id, QuestEventID event_id)
{
return false;
}
virtual bool ItemHasQuestSub(EQ::ItemInstance* itm, QuestEventID event_id)
{
return false;
}
virtual bool EncounterHasQuestSub(std::string encounter_name, QuestEventID event_id)
{
return false;
}
virtual bool HasEncounterSub(const std::string& package_name, QuestEventID event_id)
{
return false;
}
virtual bool BotHasQuestSub(QuestEventID event_id)
{
return false;
}
virtual bool GlobalBotHasQuestSub(QuestEventID event_id)
{
return false;
}
virtual bool MercHasQuestSub(QuestEventID event_id)
{
return false;
}
virtual bool GlobalMercHasQuestSub(QuestEventID event_id)
{
return false;
}
virtual bool ZoneHasQuestSub(QuestEventID event_id)
{
return false;
}
virtual bool GlobalZoneHasQuestSub(QuestEventID event_id)
{
return false;
}
virtual void LoadNPCScript(std::string filename, int npc_id) { }
virtual void LoadGlobalNPCScript(std::string filename) { }
virtual void LoadPlayerScript(std::string filename) { }
virtual void LoadGlobalPlayerScript(std::string filename) { }
virtual void LoadItemScript(std::string filename, EQ::ItemInstance* inst) { }
virtual void LoadSpellScript(std::string filename, uint32 spell_id) { }
virtual void LoadEncounterScript(std::string filename, std::string encounter_name) { }
virtual void LoadBotScript(std::string filename) { }
virtual void LoadGlobalBotScript(std::string filename) { }
virtual void LoadMercScript(std::string filename) { }
virtual void LoadGlobalMercScript(std::string filename) { }
virtual void LoadZoneScript(std::string filename) { }
virtual void LoadGlobalZoneScript(std::string filename) { }
virtual int DispatchEventNPC(
QuestEventID event_id,
NPC* npc,
Mob* init,
std::string data,
uint32 extra_data,
std::vector* extra_pointers
)
{
return 0;
}
virtual int DispatchEventPlayer(
QuestEventID event_id,
Client* client,
std::string data,
uint32 extra_data,
std::vector* extra_pointers
)
{
return 0;
}
virtual int DispatchEventItem(
QuestEventID event_id,
Client* client,
EQ::ItemInstance* inst,
Mob* mob,
std::string data,
uint32 extra_data,
std::vector* extra_pointers
)
{
return 0;
}
virtual int DispatchEventSpell(
QuestEventID event_id,
Mob* mob,
Client* client,
uint32 spell_id,
std::string data,
uint32 extra_data,
std::vector* extra_pointers
)
{
return 0;
}
virtual int DispatchEventBot(
QuestEventID event_id,
Bot* bot,
Mob* init,
std::string data,
uint32 extra_data,
std::vector* extra_pointers
)
{
return 0;
}
virtual int DispatchEventMerc(
QuestEventID event_id,
Merc* merc,
Mob* init,
std::string data,
uint32 extra_data,
std::vector* extra_pointers
)
{
return 0;
}
virtual int DispatchEventZone(
QuestEventID event_id,
Zone* zone,
std::string data,
uint32 extra_data,
std::vector* extra_pointers
)
{
return 0;
}
virtual void AddVar(std::string name, std::string val) { }
virtual std::string GetVar(std::string name)
{
return std::string();
}
virtual void Init() { }
virtual void ReloadQuests() { }
virtual uint32 GetIdentifier() = 0;
virtual void RemoveEncounter(const std::string& name) { }
virtual void GetErrors(std::list& quest_errors)
{
quest_errors.insert(quest_errors.end(), errors_.begin(), errors_.end());
}
virtual void AddError(std::string error)
{
LogQuests("{}", error);
LogQuestErrors("{}", Strings::Trim(error));
errors_.push_back(error);
if (errors_.size() > RuleI(World, MaximumQuestErrors)) {
errors_.pop_front();
}
}
protected:
std::list errors_;
};