landsandboat/scripts/commands/getpool.lua
2025-03-04 07:15:04 -07:00

82 lines
2.3 KiB
Lua

-----------------------------------
-- func: getpool
-- desc: prints the treasure pool of the current target.
-----------------------------------
---@type TCommand
local commandObj = {}
commandObj.cmdprops =
{
permission = 3,
parameters = ''
}
local function getItemNameById(id)
for name, value in pairs(xi.item) do
if value == id then
return name
end
end
return id
end
local function getPoolTypeById(id)
for name, value in pairs(xi.treasurePool) do
if value == id then
return name
end
end
return id
end
local function printPool(player, target, treasurePool)
local itemsInPool = treasurePool:getItems()
local members = treasurePool:getMembers()
player:printToPlayer(
string.format('%s\'s Treasure Pool (%s)', target:getName(), getPoolTypeById(treasurePool:getType())), xi.msg.channel.SYSTEM_3)
player:printToPlayer(
string.format('%d/%d member(s)', #members, treasurePool:getType()), xi.msg.channel.SYSTEM_3)
for _, member in pairs(members) do
player:printToPlayer(
string.format(' %s (%d)', member:getName(), member:getID()), xi.msg.channel.SYSTEM_3)
end
for _, item in pairs(itemsInPool) do
if item.id ~= 0 then
local lotters = item.lotters
player:printToPlayer(
string.format('Slot_%d = %s', item.slotId, getItemNameById(item.id), #lotters), xi.msg.channel.SYSTEM_3)
if #lotters == 0 then
player:printToPlayer(
' No lots', xi.msg.channel.SYSTEM_3)
else
for _, lotter in pairs(lotters) do
player:printToPlayer(
string.format(' %s -> %d', lotter.member:getName(), lotter.lot), xi.msg.channel.SYSTEM_3)
end
end
end
end
end
local function error(player, msg)
player:printToPlayer(msg)
player:printToPlayer('!getpool')
end
commandObj.onTrigger = function(player)
local target = player:getCursorTarget()
if target == nil then
target = player
elseif target:isNPC() then
error(player, 'Current target is an NPC.')
return
end
local treasurePool = target:getTreasurePool()
printPool(player, target, treasurePool)
end
return commandObj