[Feature] Zone Scripting (#4908)

* [Feature] Add Zone Scripting Capabilities

* Push

* Update zone.cpp

* Fix crashes

* Lua

* Add other events, finish Lua

* Add EVENT_ENTER_ZONE

* Final

* Push

* Push

* [Feature] Add Zone Scripting Capabilities

* Push

* Update zone.cpp

* Fix crashes

* Add EVENT_ENTER_ZONE

* Remove duplicates

* Update embparser.cpp
This commit is contained in:
Alex King
2025-07-10 15:08:08 -04:00
committed by GitHub
parent ab45d4358d
commit 323a0c0b27
22 changed files with 2009 additions and 340 deletions
+14 -11
View File
@@ -33,15 +33,17 @@ namespace EQ
class ItemInstance;
}
struct RunningQuest {
Mob* owner = nullptr;
Client* initiator = nullptr;
EQ::ItemInstance* questitem = nullptr;
const SPDat_Spell_Struct* questspell = nullptr;
bool depop_npc = false;
std::string encounter = "";
Zone* zone = nullptr;
};
class QuestManager {
struct running_quest {
Mob *owner;
Client *initiator;
EQ::ItemInstance* questitem;
const SPDat_Spell_Struct* questspell;
bool depop_npc;
std::string encounter;
};
struct PausedTimer {
Mob* owner;
@@ -49,12 +51,13 @@ class QuestManager {
uint32 time;
};
public:
QuestManager();
virtual ~QuestManager();
void StartQuest(Mob *_owner, Client *_initiator = nullptr, EQ::ItemInstance* _questitem = nullptr, const SPDat_Spell_Struct* _questspell = nullptr, std::string encounter = "");
void StartQuest(const RunningQuest& q);
void EndQuest();
bool QuestsRunning() { return !quests_running_.empty(); }
bool QuestsRunning() { return !m_running_quests.empty(); }
void Process();
@@ -381,7 +384,7 @@ public:
bool handin(std::map<std::string, uint32> required);
private:
std::stack<running_quest> quests_running_;
std::stack<RunningQuest> m_running_quests;
bool HaveProximitySays;