landsandboat/scripts/combat/basic/ability_aoe.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

44 lines
1.3 KiB
Lua

-----------------------------------
-- Global file for ability AoE type and radius calculations.
-----------------------------------
xi = xi or {}
xi.combat = xi.combat or {}
xi.combat.abilityAoE = xi.combat.abilityAoE or {}
-----------------------------------
-- Calculate ability AoE type and radius based on caster modifiers.
-- Used in core.
---@param caster CBaseEntity
---@param ability CAbility
---@return [xi.aoeType, number]
xi.combat.abilityAoE.calculateTypeAndRadius = function(caster, ability)
local baseType = ability:getAOE()
local baseRadius = ability:getRadius()
local recastId = ability:getRecastID()
-- Epeolatry makes Liement a 10y AoE
if
ability:getID() == xi.jobAbility.LIEMENT and
caster:getMod(xi.mod.LIEMENT_EXTENDS_TO_AREA) > 0
then
return { xi.aoeType.ROUND, 10 }
end
-- Contradance makes Healing Waltz a 10y AoE
if
ability:getID() == xi.jobAbility.HEALING_WALTZ and
caster:hasStatusEffect(xi.effect.CONTRADANCE)
then
return { xi.aoeType.ROUND, 10 }
end
-- Luzaf's Ring increases COR roll radius (8y -> 16y)
if
recastId == xi.recastID.PHANTOM_ROLL or
recastId == xi.recastID.DOUBLE_UP
then
return { xi.aoeType.ROUND, baseRadius + caster:getMod(xi.mod.ROLL_RANGE) }
end
return { baseType, baseRadius }
end