Skip to content

Commit f8da10c

Browse files
authored
Merge pull request #9817 from sruon/additem_cmd
[lua] Uplift !additem and !giveitem to new exdata format
2 parents 2f0ea30 + 8c6829f commit f8da10c

2 files changed

Lines changed: 76 additions & 2 deletions

File tree

scripts/commands/additem.lua

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,48 @@ commandObj.onTrigger = function(player, item, quantity, aug0, aug0val, aug1, aug
7979
-----------------------------------
8080
-- Give the GM the item
8181
-----------------------------------
82-
local obtained = player:addItem(itemToGet, quantity, aug0, aug0val, aug1, aug1val, aug2, aug2val, aug3, aug3val, trialId)
82+
local itemData =
83+
{
84+
id = itemToGet,
85+
quantity = quantity,
86+
}
87+
88+
local hasExdata = false
89+
local augments = {}
90+
local augmentPairs =
91+
{
92+
{ aug0, aug0val },
93+
{ aug1, aug1val },
94+
{ aug2, aug2val },
95+
{ aug3, aug3val },
96+
}
97+
98+
for _, augmentData in ipairs(augmentPairs) do
99+
local augmentId = augmentData[1]
100+
if augmentId ~= nil and augmentId > 0 then
101+
hasExdata = true
102+
table.insert(augments, { id = augmentId, value = augmentData[2] or 0 })
103+
end
104+
end
105+
106+
if hasExdata or (trialId ~= nil and trialId > 0) then
107+
itemData.exdata =
108+
{
109+
augmentKind = xi.augment.kind.HAS_AUGMENTS,
110+
augmentSubKind = xi.augment.subKind.STANDARD,
111+
}
112+
113+
if #augments > 0 then
114+
itemData.exdata.augments = augments
115+
end
116+
117+
if trialId ~= nil and trialId > 0 then
118+
itemData.exdata.augmentSubKind = itemData.exdata.augmentSubKind + xi.augment.subKind.TRIAL
119+
itemData.exdata.trial = { id = trialId, completed = false }
120+
end
121+
end
122+
123+
local obtained = player:addItem(itemData)
83124

84125
if obtained then
85126
if quantity and quantity > 1 then

scripts/commands/giveitem.lua

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,40 @@ commandObj.onTrigger = function(player, target, itemId, amount, aug0, aug0val, a
3131
targ:messageSpecial(ID.text.ITEM_CANNOT_BE_OBTAINED, itemId)
3232
player:printToPlayer(string.format('Player \'%s\' does not have free space for that item!', target))
3333
else
34-
targ:addItem(itemId, amount, aug0, aug0val, aug1, aug1val, aug2, aug2val, aug3, aug3val)
34+
local itemData =
35+
{
36+
id = itemId,
37+
quantity = amount,
38+
}
39+
40+
local hasExdata = false
41+
local augments = {}
42+
local augmentPairs =
43+
{
44+
{ aug0, aug0val },
45+
{ aug1, aug1val },
46+
{ aug2, aug2val },
47+
{ aug3, aug3val },
48+
}
49+
50+
for _, augmentData in ipairs(augmentPairs) do
51+
local augmentId = augmentData[1]
52+
if augmentId ~= nil and augmentId > 0 then
53+
hasExdata = true
54+
table.insert(augments, { id = augmentId, value = augmentData[2] or 0 })
55+
end
56+
end
57+
58+
if hasExdata then
59+
itemData.exdata =
60+
{
61+
augmentKind = xi.augment.kind.HAS_AUGMENTS,
62+
augmentSubKind = xi.augment.subKind.STANDARD,
63+
augments = augments,
64+
}
65+
end
66+
67+
targ:addItem(itemData)
3568
if amount and amount > 1 then
3669
targ:messageSpecial(ID.text.ITEM_OBTAINED + 9, itemId, amount)
3770
else

0 commit comments

Comments
 (0)