landsandboat/scripts/combat/basic/treasure_hunter.lua
Xaver-DaRed 0fb133ed39 Cleanup requires and hook to lua loading
Co-Authored-By: sruon <sruon@users.noreply.github.com>
2026-07-08 14:07:25 +02:00

69 lines
2.2 KiB
Lua

-----------------------------------
xi = xi or {}
xi.combat = xi.combat or {}
xi.combat.treasureHunter = xi.combat.treasureHunter or {}
-----------------------------------
-- https://forum.square-enix.com/ffxi/threads/56550
xi.combat.treasureHunter.treasureHunterTable =
{
-- TH lvl VC C UC R VR SR UR
[ 0] = { 2400, 1500, 1000, 500, 100, 50, 10 },
[ 1] = { 4800, 3000, 1200, 600, 150, 75, 20 },
[ 2] = { 5600, 4000, 1500, 700, 200, 100, 30 },
[ 3] = { 6000, 4250, 1650, 750, 225, 120, 35 },
[ 4] = { 6400, 4500, 1800, 800, 250, 140, 40 },
[ 5] = { 6666, 4750, 1900, 850, 300, 160, 45 },
[ 6] = { 6800, 5000, 2000, 900, 350, 180, 50 },
[ 7] = { 6900, 5250, 2100, 950, 400, 200, 60 },
[ 8] = { 7050, 5500, 2250, 1050, 475, 230, 70 },
[ 9] = { 7200, 5750, 2400, 1150, 550, 260, 80 },
[10] = { 7350, 6000, 2650, 1250, 650, 300, 90 },
[11] = { 7400, 6250, 2800, 1350, 750, 350, 100 },
[12] = { 7600, 6500, 2950, 1550, 825, 400, 115 },
[13] = { 7800, 6750, 3100, 1750, 900, 450, 130 },
[14] = { 8000, 7000, 3250, 2000, 1000, 500, 150 },
}
xi.combat.treasureHunter.dropBracketTable =
{
[1] = { 2400 },
[2] = { 1500 },
[3] = { 1000 },
[4] = { 500 },
[5] = { 100 },
[6] = { 50 },
[7] = { 0 }, -- Set to 0, for weird cases in DB.
}
xi.combat.treasureHunter.getDropRate = function(thLevel, dropRate)
-- Sanitize parameters
local thTier = utils.defaultIfNil(thLevel, 0)
local thDropRate = utils.defaultIfNil(dropRate, 0)
thTier = utils.clamp(thTier, 0, 14)
thDropRate = utils.clamp(thDropRate, 0, 10000)
-- Early returns: Drop is guaranteed or non-existant.
if thDropRate == 10000 then
return 10000
elseif thDropRate == 0 then
return 0
end
-- Calculate original drop rate bracket.
local thBracket = 0
for i = 1, #xi.combat.treasureHunter.dropBracketTable do
if thDropRate >= xi.combat.treasureHunter.dropBracketTable[i][1] then
thBracket = i
break
end
end
-- Calculate TH drop rate
local newDropRate = xi.combat.treasureHunter.treasureHunterTable[thTier][thBracket]
return newDropRate
end