[Quest API] Add Charges/Augment/Attuned Support to Varlink. (#2685)

# Perl
- Add `quest::varlink(item_id, charges)`.
- Add `quest::varlink(item_id, charges, aug1)`.
- Add `quest::varlink(item_id, charges, aug1, aug2)`.
- Add `quest::varlink(item_id, charges, aug1, aug2, aug3)`.
- Add `quest::varlink(item_id, charges, aug1, aug2, aug3, aug4)`.
- Add `quest::varlink(item_id, charges, aug1, aug2, aug3, aug4, aug5)`.
- Add `quest::varlink(item_id, charges, aug1, aug2, aug3, aug4, aug5, aug6)`.
- Add `quest::varlink(item_id, charges, aug1, aug2, aug3, aug4, aug5, aug6, attuned)`.

# Lua
- Add `eq.item_link(item_id, charges)`.
- Add `eq.item_link(item_id, charges, aug1)`.
- Add `eq.item_link(item_id, charges, aug1, aug2)`.
- Add `eq.item_link(item_id, charges, aug1, aug2, aug3)`.
- Add `eq.item_link(item_id, charges, aug1, aug2, aug3, aug4)`.
- Add `eq.item_link(item_id, charges, aug1, aug2, aug3, aug4, aug5)`.
- Add `eq.item_link(item_id, charges, aug1, aug2, aug3, aug4, aug5, aug6)`.
- Add `eq.item_link(item_id, charges, aug1, aug2, aug3, aug4, aug5, aug6, attuned)`.

# Notes
- Allows operators to link items with specific charges, augments, and attuned flag.
- Gives much more versatility to the varlink/item_link methods.
This commit is contained in:
Alex King
2023-01-01 10:49:07 -05:00
committed by GitHub
parent aeda7127ec
commit 501ea4b736
6 changed files with 153 additions and 31 deletions
+27 -8
View File
@@ -2904,19 +2904,38 @@ uint32 QuestManager::MerchantCountItem(uint32 NPCid, uint32 itemid) {
}
// Item Link for use in Variables - "my $example_link = quest::varlink(item_id);"
const char* QuestManager::varlink(char* perltext, int item_id) {
std::string QuestManager::varlink(
uint32 item_id,
int16 charges,
uint32 aug1,
uint32 aug2,
uint32 aug3,
uint32 aug4,
uint32 aug5,
uint32 aug6,
bool attuned
) {
QuestManagerCurrentQuestVars();
const EQ::ItemData* item = database.GetItem(item_id);
if (!item)
const auto *item = database.CreateItem(
item_id,
charges,
aug1,
aug2,
aug3,
aug4,
aug5,
aug6,
attuned
);
if (!item) {
return "INVALID ITEM ID IN VARLINK";
}
EQ::SayLinkEngine linker;
linker.SetLinkType(EQ::saylink::SayLinkItemData);
linker.SetItemData(item);
linker.SetLinkType(EQ::saylink::SayLinkItemInst);
linker.SetItemInst(item);
strcpy(perltext, linker.GenerateLink().c_str());
return perltext;
return linker.GenerateLink();
}
std::string QuestManager::getitemname(uint32 item_id) {