From 8c6829fd9071c8df7c6bf39e22876a71d4cb5adc Mon Sep 17 00:00:00 2001 From: sruon Date: Sat, 18 Apr 2026 00:33:14 -0600 Subject: [PATCH] Uplift !additem to new exdata format --- scripts/commands/additem.lua | 43 ++++++++++++++++++++++++++++++++++- scripts/commands/giveitem.lua | 35 +++++++++++++++++++++++++++- 2 files changed, 76 insertions(+), 2 deletions(-) diff --git a/scripts/commands/additem.lua b/scripts/commands/additem.lua index 471b29c122d..05198244ef1 100644 --- a/scripts/commands/additem.lua +++ b/scripts/commands/additem.lua @@ -79,7 +79,48 @@ commandObj.onTrigger = function(player, item, quantity, aug0, aug0val, aug1, aug ----------------------------------- -- Give the GM the item ----------------------------------- - local obtained = player:addItem(itemToGet, quantity, aug0, aug0val, aug1, aug1val, aug2, aug2val, aug3, aug3val, trialId) + local itemData = + { + id = itemToGet, + quantity = quantity, + } + + local hasExdata = false + local augments = {} + local augmentPairs = + { + { aug0, aug0val }, + { aug1, aug1val }, + { aug2, aug2val }, + { aug3, aug3val }, + } + + for _, augmentData in ipairs(augmentPairs) do + local augmentId = augmentData[1] + if augmentId ~= nil and augmentId > 0 then + hasExdata = true + table.insert(augments, { id = augmentId, value = augmentData[2] or 0 }) + end + end + + if hasExdata or (trialId ~= nil and trialId > 0) then + itemData.exdata = + { + augmentKind = xi.augment.kind.HAS_AUGMENTS, + augmentSubKind = xi.augment.subKind.STANDARD, + } + + if #augments > 0 then + itemData.exdata.augments = augments + end + + if trialId ~= nil and trialId > 0 then + itemData.exdata.augmentSubKind = itemData.exdata.augmentSubKind + xi.augment.subKind.TRIAL + itemData.exdata.trial = { id = trialId, completed = false } + end + end + + local obtained = player:addItem(itemData) if obtained then if quantity and quantity > 1 then diff --git a/scripts/commands/giveitem.lua b/scripts/commands/giveitem.lua index ef038c0fcd0..507fa50cc52 100644 --- a/scripts/commands/giveitem.lua +++ b/scripts/commands/giveitem.lua @@ -31,7 +31,40 @@ commandObj.onTrigger = function(player, target, itemId, amount, aug0, aug0val, a targ:messageSpecial(ID.text.ITEM_CANNOT_BE_OBTAINED, itemId) player:printToPlayer(string.format('Player \'%s\' does not have free space for that item!', target)) else - targ:addItem(itemId, amount, aug0, aug0val, aug1, aug1val, aug2, aug2val, aug3, aug3val) + local itemData = + { + id = itemId, + quantity = amount, + } + + local hasExdata = false + local augments = {} + local augmentPairs = + { + { aug0, aug0val }, + { aug1, aug1val }, + { aug2, aug2val }, + { aug3, aug3val }, + } + + for _, augmentData in ipairs(augmentPairs) do + local augmentId = augmentData[1] + if augmentId ~= nil and augmentId > 0 then + hasExdata = true + table.insert(augments, { id = augmentId, value = augmentData[2] or 0 }) + end + end + + if hasExdata then + itemData.exdata = + { + augmentKind = xi.augment.kind.HAS_AUGMENTS, + augmentSubKind = xi.augment.subKind.STANDARD, + augments = augments, + } + end + + targ:addItem(itemData) if amount and amount > 1 then targ:messageSpecial(ID.text.ITEM_OBTAINED + 9, itemId, amount) else