mirror of
https://github.com/EQEmu/Server.git
synced 2026-06-03 03:50:40 +00:00
[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:
+49
-42
@@ -41,6 +41,23 @@ typedef enum {
|
||||
questFailedToLoad
|
||||
} PerlQuestStatus;
|
||||
|
||||
enum class QuestType {
|
||||
Bot,
|
||||
BotGlobal,
|
||||
Item,
|
||||
ItemGlobal,
|
||||
Merc,
|
||||
MercGlobal,
|
||||
NPC,
|
||||
NPCGlobal,
|
||||
Player,
|
||||
PlayerGlobal,
|
||||
Spell,
|
||||
SpellGlobal,
|
||||
Zone,
|
||||
ZoneGlobal
|
||||
};
|
||||
|
||||
class PerlembParser : public QuestInterface {
|
||||
public:
|
||||
PerlembParser();
|
||||
@@ -136,6 +153,22 @@ public:
|
||||
std::vector<std::any>* extra_pointers
|
||||
);
|
||||
|
||||
virtual int EventZone(
|
||||
QuestEventID event_id,
|
||||
Zone* zone,
|
||||
std::string data,
|
||||
uint32 extra_data,
|
||||
std::vector<std::any>* extra_pointers
|
||||
);
|
||||
|
||||
virtual int EventGlobalZone(
|
||||
QuestEventID event_id,
|
||||
Zone* zone,
|
||||
std::string data,
|
||||
uint32 extra_data,
|
||||
std::vector<std::any>* extra_pointers
|
||||
);
|
||||
|
||||
virtual bool HasQuestSub(uint32 npc_id, QuestEventID event_id);
|
||||
virtual bool HasGlobalQuestSub(QuestEventID event_id);
|
||||
virtual bool PlayerHasQuestSub(QuestEventID event_id);
|
||||
@@ -146,6 +179,8 @@ public:
|
||||
virtual bool GlobalBotHasQuestSub(QuestEventID event_id);
|
||||
virtual bool MercHasQuestSub(QuestEventID event_id);
|
||||
virtual bool GlobalMercHasQuestSub(QuestEventID event_id);
|
||||
virtual bool ZoneHasQuestSub(QuestEventID event_id);
|
||||
virtual bool GlobalZoneHasQuestSub(QuestEventID event_id);
|
||||
|
||||
virtual void LoadNPCScript(std::string filename, int npc_id);
|
||||
virtual void LoadGlobalNPCScript(std::string filename);
|
||||
@@ -157,6 +192,8 @@ public:
|
||||
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 void AddVar(std::string name, std::string val);
|
||||
virtual std::string GetVar(std::string name);
|
||||
@@ -182,6 +219,7 @@ private:
|
||||
EQ::ItemInstance* inst,
|
||||
const SPDat_Spell_Struct* spell,
|
||||
Mob* mob,
|
||||
Zone* zone,
|
||||
uint32 extra_data,
|
||||
bool is_global,
|
||||
std::vector<std::any>* extra_pointers
|
||||
@@ -194,59 +232,34 @@ private:
|
||||
Mob* other,
|
||||
Mob* mob,
|
||||
EQ::ItemInstance* inst,
|
||||
const SPDat_Spell_Struct* spell
|
||||
const SPDat_Spell_Struct* spell,
|
||||
Zone* zone
|
||||
);
|
||||
|
||||
void MapFunctions();
|
||||
|
||||
void GetQuestTypes(
|
||||
bool& is_player_quest,
|
||||
bool& is_global_player_quest,
|
||||
bool& is_bot_quest,
|
||||
bool& is_global_bot_quest,
|
||||
bool& is_merc_quest,
|
||||
bool& is_global_merc_quest,
|
||||
bool& is_global_npc_quest,
|
||||
bool& is_item_quest,
|
||||
bool& is_spell_quest,
|
||||
QuestType GetQuestTypes(
|
||||
QuestEventID event,
|
||||
Mob* npc_mob,
|
||||
EQ::ItemInstance* inst,
|
||||
Mob* mob,
|
||||
Zone* zone,
|
||||
bool is_global
|
||||
);
|
||||
|
||||
void GetQuestPackageName(
|
||||
bool& is_player_quest,
|
||||
bool& is_global_player_quest,
|
||||
bool& is_bot_quest,
|
||||
bool& is_global_bot_quest,
|
||||
bool& is_merc_quest,
|
||||
bool& is_global_merc_quest,
|
||||
bool& is_global_npc_quest,
|
||||
bool& is_item_quest,
|
||||
bool& is_spell_quest,
|
||||
std::string& package_name,
|
||||
std::string GetQuestPackageName(
|
||||
QuestType quest_type,
|
||||
QuestEventID event,
|
||||
uint32 object_id,
|
||||
const char* data,
|
||||
Mob* npc_mob,
|
||||
EQ::ItemInstance* inst,
|
||||
bool is_global
|
||||
EQ::ItemInstance* inst
|
||||
);
|
||||
|
||||
void ExportCharID(const std::string& package_name, int& char_id, Mob* npc_mob, Mob* mob);
|
||||
|
||||
void ExportQGlobals(
|
||||
bool is_player_quest,
|
||||
bool is_global_player_quest,
|
||||
bool is_bot_quest,
|
||||
bool is_global_bot_quest,
|
||||
bool is_merc_quest,
|
||||
bool is_global_merc_quest,
|
||||
bool is_global_npc_quest,
|
||||
bool is_item_quest,
|
||||
bool is_spell_quest,
|
||||
QuestType quest_type,
|
||||
std::string& package_name,
|
||||
Mob* npc_mob,
|
||||
Mob* mob,
|
||||
@@ -254,15 +267,7 @@ private:
|
||||
);
|
||||
|
||||
void ExportMobVariables(
|
||||
bool is_player_quest,
|
||||
bool is_global_player_quest,
|
||||
bool is_bot_quest,
|
||||
bool is_global_bot_quest,
|
||||
bool is_merc_quest,
|
||||
bool is_global_merc_quest,
|
||||
bool is_global_npc_quest,
|
||||
bool is_item_quest,
|
||||
bool is_spell_quest,
|
||||
QuestType quest_type,
|
||||
std::string& package_name,
|
||||
Mob* mob,
|
||||
Mob* npc_mob
|
||||
@@ -295,6 +300,8 @@ private:
|
||||
PerlQuestStatus global_bot_quest_status_;
|
||||
PerlQuestStatus merc_quest_status_;
|
||||
PerlQuestStatus global_merc_quest_status_;
|
||||
PerlQuestStatus zone_quest_status_;
|
||||
PerlQuestStatus global_zone_quest_status_;
|
||||
|
||||
SV* _empty_sv;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user