[Quest API] Add EVENT_LEVEL_DOWN to Perl/Lua. (#2620)

* [Quest API] Add EVENT_LEVEL_DOWN to Perl/Lua.

# Perl
- Add `EVENT_LEVEL_DOWN`, exports `$levels_lost`.
- Add `$levels_gained` export to `EVENT_LEVEL_UP`.

# Lua
- Add `event_level_down`, exports `e.levels_lost`.
- Add `e.levels_gained` export to `event_level_up`.

# Notes
- Allows operators to perform actions on level down.
- Allows operators to tell how many levels were lost or gained in case people are gaining/losing multiple levels and they want to keep track or use this as a mechanic in their code somewhere.

* Update exp.cpp

* Update embparser.cpp
This commit is contained in:
Alex King
2022-12-10 19:22:31 -05:00
committed by GitHub
parent 8c707f9fe5
commit d3fac8a0cb
7 changed files with 126 additions and 37 deletions
+21 -4
View File
@@ -163,11 +163,11 @@ const char *QuestEventSubroutines[_LargestEventID] = {
"EVENT_TASK_BEFORE_UPDATE",
"EVENT_AA_BUY",
"EVENT_AA_GAIN",
"EVENT_PAYLOAD"
#ifdef BOTS
,
"EVENT_PAYLOAD",
"EVENT_LEVEL_DOWN",
#ifdef BOTS
"EVENT_SPELL_EFFECT_BOT",
"EVENT_SPELL_EFFECT_BUFF_TIC_BOT"
"EVENT_SPELL_EFFECT_BUFF_TIC_BOT",
#endif
};
@@ -1703,6 +1703,7 @@ void PerlembParser::ExportEventVariables(
ExportVar(package_name.c_str(), "popupid", data);
break;
}
case EVENT_ENVIRONMENTAL_DAMAGE: {
Seperator sep(data);
ExportVar(package_name.c_str(), "env_damage", sep.arg[0]);
@@ -1845,6 +1846,7 @@ void PerlembParser::ExportEventVariables(
}
break;
}
case EVENT_DROP_ITEM: {
ExportVar(package_name.c_str(), "quantity", item_inst->IsStackable() ? item_inst->GetCharges() : 1);
ExportVar(package_name.c_str(), "itemname", item_inst->GetItem()->Name);
@@ -1853,17 +1855,20 @@ void PerlembParser::ExportEventVariables(
ExportVar(package_name.c_str(), "slotid", extradata);
break;
}
case EVENT_SPAWN_ZONE: {
ExportVar(package_name.c_str(), "spawned_entity_id", mob->GetID());
ExportVar(package_name.c_str(), "spawned_npc_id", mob->GetNPCTypeID());
break;
}
case EVENT_USE_SKILL: {
Seperator sep(data);
ExportVar(package_name.c_str(), "skill_id", sep.arg[0]);
ExportVar(package_name.c_str(), "skill_level", sep.arg[1]);
break;
}
case EVENT_COMBINE_VALIDATE: {
Seperator sep(data);
ExportVar(package_name.c_str(), "recipe_id", extradata);
@@ -1882,6 +1887,7 @@ void PerlembParser::ExportEventVariables(
ExportVar(package_name.c_str(), "tradeskill_id", tradeskill_id.c_str());
break;
}
case EVENT_BOT_COMMAND: {
Seperator sep(data);
ExportVar(package_name.c_str(), "bot_command", (sep.arg[0] + 1));
@@ -1891,6 +1897,7 @@ void PerlembParser::ExportEventVariables(
ExportVar(package_name.c_str(), "langid", extradata);
break;
}
case EVENT_WARP: {
Seperator sep(data);
ExportVar(package_name.c_str(), "from_x", sep.arg[0]);
@@ -1981,6 +1988,16 @@ void PerlembParser::ExportEventVariables(
break;
}
case EVENT_LEVEL_UP: {
ExportVar(package_name.c_str(), "levels_gained", data);
break;
}
case EVENT_LEVEL_DOWN: {
ExportVar(package_name.c_str(), "levels_lost", data);
break;
}
default: {
break;
}