landsandboat/scripts/effects/sublimation_activated.lua
Xaver-DaRed f9f3d2bbd3 Remove legacy Stoneskin power tracking method
AKA: Remove stupid "stonekin" modifier
2026-07-25 00:24:55 +02:00

70 lines
2.2 KiB
Lua

-----------------------------------
-- xi.effect.SUBLIMATION_ACTIVATED
-----------------------------------
---@type TEffect
local effectObject = {}
effectObject.onEffectGain = function(target, effect)
target:delStatusEffect(xi.effect.REFRESH)
end
effectObject.onEffectTick = function(target, effect)
local complete = false
local level = 0
if target:getMainJob() == xi.job.SCH then
level = target:getMainLvl()
else
level = target:getSubLvl()
end
local basemp = math.floor((level - 15) / 10)
local bonus = target:getMod(xi.mod.SUBLIMATION_BONUS)
local dmg = 2 + bonus
local store = effect:getPower() + basemp + bonus
-- The effect changes to "Sublimation: Complete" when the total MP stored is equal to 50% of your maximum HP or when the player's HP falls to orange level (<50%).
local limit = math.floor((target:getBaseHP() + target:getMod(xi.mod.HP) + target:getMerit(xi.merit.MAX_HP)) / 2) +
target:getMerit(xi.merit.MAX_SUBLIMATION) * 10 + target:getJobPointLevel(xi.jp.SUBLIMATION_EFFECT) * 3
if target:getHPP() >= 51 then
local stoneskin = target:getStatusEffect(xi.effect.STONESKIN)
if stoneskin then
local stoneskinPower = stoneskin:getPower()
if stoneskinPower > dmg then
stoneskin:setPower(stoneskinPower - dmg)
else
target:delStatusEffect(xi.effect.STONESKIN)
target:takeDamage(dmg - stoneskinPower)
if target:getHPP() < 51 then
complete = true
end
end
else
target:takeDamage(dmg)
if target:getHPP() < 51 then
complete = true
end
end
else
complete = true
end
if store > limit then
store = limit
complete = true
end
if complete then
target:delStatusEffectSilent(xi.effect.SUBLIMATION_ACTIVATED)
target:addStatusEffect(xi.effect.SUBLIMATION_COMPLETE, { power = store, duration = 7200, origin = target })
else
effect:setPower(store)
end
end
effectObject.onEffectLose = function(target, effect)
end
return effectObject