feat(Scripting): Created two perl/lua scripting hooks for merchants (#5083)
Build / Linux (push) Has been cancelled
Build / Windows (push) Has been cancelled

This commit is contained in:
Dan
2026-05-13 03:18:36 -04:00
committed by GitHub
parent ef6dfe0469
commit ca704c7f88
9 changed files with 148 additions and 16 deletions
+29
View File
@@ -163,8 +163,10 @@ const char* QuestEventSubroutines[_LargestEventID] = {
"EVENT_LANGUAGE_SKILL_UP",
"EVENT_ALT_CURRENCY_MERCHANT_BUY",
"EVENT_ALT_CURRENCY_MERCHANT_SELL",
"EVENT_MERCHANT_OPEN",
"EVENT_MERCHANT_BUY",
"EVENT_MERCHANT_SELL",
"EVENT_MERCHANT_PRESELL",
"EVENT_INSPECT",
"EVENT_TASK_BEFORE_UPDATE",
"EVENT_AA_BUY",
@@ -2289,6 +2291,33 @@ void PerlembParser::ExportEventVariables(
break;
}
case EVENT_MERCHANT_OPEN: {
if (!extra_pointers || extra_pointers->size() < 1) break;
auto mob_ptr = std::any_cast<Mob*>(extra_pointers->at(0));
if (!mob_ptr) break;
ExportVar(package_name.c_str(), "other", "Mob", mob_ptr);
break;
}
case EVENT_MERCHANT_PRESELL: {
Seperator sep(data);
ExportVar(package_name.c_str(), "slot_id", sep.arg[0]);
ExportVar(package_name.c_str(), "item_id", sep.arg[1]);
ExportVar(package_name.c_str(), "item_type", sep.arg[2]);
if (!extra_pointers || extra_pointers->size() < 2) break;
auto mob_ptr = std::any_cast<Mob*>(extra_pointers->at(0));
auto inst_ptr = std::any_cast<EQ::ItemInstance*>(extra_pointers->at(1));
if (!mob_ptr || !inst_ptr) break;
ExportVar(package_name.c_str(), "other", "Mob", mob_ptr);
ExportVar(package_name.c_str(), "item", "ItemInstance", inst_ptr);
break;
}
case EVENT_AA_BUY: {
Seperator sep(data);
ExportVar(package_name.c_str(), "aa_cost", sep.arg[0]);