[Quest API] Add EVENT_DROP_ITEM_CLIENT to Perl/Lua (#2869)

* [Quest API] Add EVENT_DROP_ITEM_CLIENT to Perl/Lua

- Add `EVENT_DROP_ITEM_CLIENT`, exports `$quantity,` $item_name`, `$item_id`, `$spell_id`, `$slot_id`, and `$item`.

- Add `event_drop_item_client`, exports `e.quantity`, `e.item_name`, `e.item_id`, `e.spell_id`, `e.slot_id`, and `e.item`.

* Update inventory.cpp

* Update inventory.cpp

* Update lua_general.cpp

* Update inventory.cpp
This commit is contained in:
Alex King
2023-02-13 01:15:19 -05:00
committed by GitHub
parent 8c363320d8
commit 4df9661903
7 changed files with 81 additions and 5 deletions
+19 -4
View File
@@ -903,6 +903,9 @@ void Client::DropItem(int16 slot_id, bool recurse)
}
}
int i = 0;
if (player_event_logs.IsEventEnabled(PlayerEvent::DROPPED_ITEM)) {
auto e = PlayerEvent::DroppedItemEvent{
.item_id = inst->GetID(),
@@ -913,10 +916,22 @@ void Client::DropItem(int16 slot_id, bool recurse)
RecordPlayerEventLog(PlayerEvent::DROPPED_ITEM, e);
}
int i = parse->EventItem(EVENT_DROP_ITEM, this, inst, nullptr, "", slot_id);
if (i != 0) {
LogInventory("Item drop handled by [EVENT_DROP_ITEM]");
safe_delete(inst);
if (parse->ItemHasQuestSub(inst, EVENT_DROP_ITEM)) {
parse->EventItem(EVENT_DROP_ITEM, this, inst, nullptr, "", slot_id);
if (i != 0) {
LogInventory("Item drop handled by [EVENT_DROP_ITEM]");
safe_delete(inst);
}
}
if (parse->PlayerHasQuestSub(EVENT_DROP_ITEM_CLIENT)) {
std::vector<std::any> args = { inst };
i = parse->EventPlayer(EVENT_DROP_ITEM_CLIENT, this, "", slot_id, &args);
if (i != 0) {
LogInventory("Item drop handled by [EVENT_DROP_ITEM_CLIENT]");
safe_delete(inst);
}
}
} else {
// Item doesn't exist in inventory!