diff --git a/scripts/actions/spells/white/aurorastorm_ii.lua b/scripts/actions/spells/white/aurorastorm_ii.lua new file mode 100644 index 00000000000..16ca3075ce8 --- /dev/null +++ b/scripts/actions/spells/white/aurorastorm_ii.lua @@ -0,0 +1,15 @@ +----------------------------------- +-- Spell: Aurorastorm II +----------------------------------- +---@type TSpell +local spellObject = {} + +spellObject.onMagicCastingCheck = function(caster, target, spell) + return 0 +end + +spellObject.onSpellCast = function(caster, target, spell) + return xi.spells.enhancing.useEnhancingSpell(caster, target, spell) +end + +return spellObject diff --git a/scripts/actions/spells/white/firestorm_ii.lua b/scripts/actions/spells/white/firestorm_ii.lua new file mode 100644 index 00000000000..ae03c170fc4 --- /dev/null +++ b/scripts/actions/spells/white/firestorm_ii.lua @@ -0,0 +1,15 @@ +----------------------------------- +-- Spell: Firestorm II +----------------------------------- +---@type TSpell +local spellObject = {} + +spellObject.onMagicCastingCheck = function(caster, target, spell) + return 0 +end + +spellObject.onSpellCast = function(caster, target, spell) + return xi.spells.enhancing.useEnhancingSpell(caster, target, spell) +end + +return spellObject diff --git a/scripts/actions/spells/white/hailstorm_ii.lua b/scripts/actions/spells/white/hailstorm_ii.lua new file mode 100644 index 00000000000..c02eade7e73 --- /dev/null +++ b/scripts/actions/spells/white/hailstorm_ii.lua @@ -0,0 +1,15 @@ +----------------------------------- +-- Spell: Hailstorm II +----------------------------------- +---@type TSpell +local spellObject = {} + +spellObject.onMagicCastingCheck = function(caster, target, spell) + return 0 +end + +spellObject.onSpellCast = function(caster, target, spell) + return xi.spells.enhancing.useEnhancingSpell(caster, target, spell) +end + +return spellObject diff --git a/scripts/actions/spells/white/rainstorm_ii.lua b/scripts/actions/spells/white/rainstorm_ii.lua new file mode 100644 index 00000000000..b927d3f8dde --- /dev/null +++ b/scripts/actions/spells/white/rainstorm_ii.lua @@ -0,0 +1,15 @@ +----------------------------------- +-- Spell: Rainstorm II +----------------------------------- +---@type TSpell +local spellObject = {} + +spellObject.onMagicCastingCheck = function(caster, target, spell) + return 0 +end + +spellObject.onSpellCast = function(caster, target, spell) + return xi.spells.enhancing.useEnhancingSpell(caster, target, spell) +end + +return spellObject diff --git a/scripts/actions/spells/white/reraise.lua b/scripts/actions/spells/white/reraise.lua index ccbdfa8f888..6f1aaeb0770 100644 --- a/scripts/actions/spells/white/reraise.lua +++ b/scripts/actions/spells/white/reraise.lua @@ -9,8 +9,7 @@ spellObject.onMagicCastingCheck = function(caster, target, spell) end spellObject.onSpellCast = function(caster, target, spell) - --duration = 1800 - target:addStatusEffect(xi.effect.RERAISE, { power = 1, duration = 3600, origin = caster }) --reraise 1, 30min duration + target:addStatusEffect(xi.effect.RERAISE, { power = 1, duration = 3600, tier = 1, origin = caster }) return xi.effect.RERAISE end diff --git a/scripts/actions/spells/white/reraise_ii.lua b/scripts/actions/spells/white/reraise_ii.lua index 81536c03beb..be716526b73 100644 --- a/scripts/actions/spells/white/reraise_ii.lua +++ b/scripts/actions/spells/white/reraise_ii.lua @@ -9,9 +9,7 @@ spellObject.onMagicCastingCheck = function(caster, target, spell) end spellObject.onSpellCast = function(caster, target, spell) - --duration = 1800 - target:delStatusEffect(xi.effect.RERAISE) - target:addStatusEffect(xi.effect.RERAISE, { power = 2, duration = 3600, origin = caster }) --reraise 2, 30min duration + target:addStatusEffect(xi.effect.RERAISE, { power = 2, duration = 3600, tier = 2, origin = caster }) return xi.effect.RERAISE end diff --git a/scripts/actions/spells/white/reraise_iii.lua b/scripts/actions/spells/white/reraise_iii.lua index ce346863ebf..691aff90877 100644 --- a/scripts/actions/spells/white/reraise_iii.lua +++ b/scripts/actions/spells/white/reraise_iii.lua @@ -9,9 +9,7 @@ spellObject.onMagicCastingCheck = function(caster, target, spell) end spellObject.onSpellCast = function(caster, target, spell) - --duration = 1800 - target:delStatusEffect(xi.effect.RERAISE) - target:addStatusEffect(xi.effect.RERAISE, { power = 3, duration = 3600, origin = caster }) --reraise 3, 30min duration + target:addStatusEffect(xi.effect.RERAISE, { power = 3, duration = 3600, tier = 3, origin = caster }) return xi.effect.RERAISE end diff --git a/scripts/actions/spells/white/reraise_iv.lua b/scripts/actions/spells/white/reraise_iv.lua index 6d78039c93c..f02bc1fa709 100644 --- a/scripts/actions/spells/white/reraise_iv.lua +++ b/scripts/actions/spells/white/reraise_iv.lua @@ -9,9 +9,7 @@ spellObject.onMagicCastingCheck = function(caster, target, spell) end spellObject.onSpellCast = function(caster, target, spell) - --duration = 1800 - target:delStatusEffect(xi.effect.RERAISE) - target:addStatusEffect(xi.effect.RERAISE, { power = 4, duration = 3600, origin = caster }) --reraise 3, 30min duration + target:addStatusEffect(xi.effect.RERAISE, { power = 4, duration = 3600, tier = 4, origin = caster }) return xi.effect.RERAISE end diff --git a/scripts/actions/spells/white/sandstorm_ii.lua b/scripts/actions/spells/white/sandstorm_ii.lua new file mode 100644 index 00000000000..cd970f4572d --- /dev/null +++ b/scripts/actions/spells/white/sandstorm_ii.lua @@ -0,0 +1,15 @@ +----------------------------------- +-- Spell: Sandstorm II +----------------------------------- +---@type TSpell +local spellObject = {} + +spellObject.onMagicCastingCheck = function(caster, target, spell) + return 0 +end + +spellObject.onSpellCast = function(caster, target, spell) + return xi.spells.enhancing.useEnhancingSpell(caster, target, spell) +end + +return spellObject diff --git a/scripts/actions/spells/white/thunderstorm_ii.lua b/scripts/actions/spells/white/thunderstorm_ii.lua new file mode 100644 index 00000000000..305517557a1 --- /dev/null +++ b/scripts/actions/spells/white/thunderstorm_ii.lua @@ -0,0 +1,15 @@ +----------------------------------- +-- Spell: Thunderstorm II +----------------------------------- +---@type TSpell +local spellObject = {} + +spellObject.onMagicCastingCheck = function(caster, target, spell) + return 0 +end + +spellObject.onSpellCast = function(caster, target, spell) + return xi.spells.enhancing.useEnhancingSpell(caster, target, spell) +end + +return spellObject diff --git a/scripts/actions/spells/white/voidstorm_ii.lua b/scripts/actions/spells/white/voidstorm_ii.lua new file mode 100644 index 00000000000..0b4f6fb0f53 --- /dev/null +++ b/scripts/actions/spells/white/voidstorm_ii.lua @@ -0,0 +1,15 @@ +----------------------------------- +-- Spell: Voidstorm II +----------------------------------- +---@type TSpell +local spellObject = {} + +spellObject.onMagicCastingCheck = function(caster, target, spell) + return 0 +end + +spellObject.onSpellCast = function(caster, target, spell) + return xi.spells.enhancing.useEnhancingSpell(caster, target, spell) +end + +return spellObject diff --git a/scripts/actions/spells/white/windstorm_ii.lua b/scripts/actions/spells/white/windstorm_ii.lua new file mode 100644 index 00000000000..8bd71b3e055 --- /dev/null +++ b/scripts/actions/spells/white/windstorm_ii.lua @@ -0,0 +1,15 @@ +----------------------------------- +-- Spell: Windstorm II +----------------------------------- +---@type TSpell +local spellObject = {} + +spellObject.onMagicCastingCheck = function(caster, target, spell) + return 0 +end + +spellObject.onSpellCast = function(caster, target, spell) + return xi.spells.enhancing.useEnhancingSpell(caster, target, spell) +end + +return spellObject diff --git a/scripts/effects/addle.lua b/scripts/effects/addle.lua index df4de6bbf6f..ff2d263bc8c 100644 --- a/scripts/effects/addle.lua +++ b/scripts/effects/addle.lua @@ -5,8 +5,10 @@ local effectObject = {} effectObject.onEffectGain = function(target, effect) - effect:addMod(xi.mod.FASTCAST, -effect:getPower()) -- Yes we are subtracting in addMod() - effect:addMod(xi.mod.MACC, -effect:getSubPower()) -- This is intentional + local power = effect:getPower() + local subpower = math.floor(power / 2) + effect:addMod(xi.mod.MACC, -power) + effect:addMod(xi.mod.FASTCAST, -subpower) -- Immunobreak reset. target:setMod(xi.mod.ADDLE_IMMUNOBREAK, 0) diff --git a/scripts/effects/aurorastorm_ii.lua b/scripts/effects/aurorastorm_ii.lua new file mode 100644 index 00000000000..e48160a5fd3 --- /dev/null +++ b/scripts/effects/aurorastorm_ii.lua @@ -0,0 +1,17 @@ +----------------------------------- +-- xi.effect.AURORASTORM_II +----------------------------------- +---@type TEffect +local effectObject = {} + +effectObject.onEffectGain = function(target, effect) + effect:addMod(xi.mod.CHR, effect:getPower()) +end + +effectObject.onEffectTick = function(target, effect) +end + +effectObject.onEffectLose = function(target, effect) +end + +return effectObject diff --git a/scripts/effects/firestorm.lua b/scripts/effects/firestorm.lua index 2e9464e3857..9cf25c47976 100644 --- a/scripts/effects/firestorm.lua +++ b/scripts/effects/firestorm.lua @@ -5,14 +5,13 @@ local effectObject = {} effectObject.onEffectGain = function(target, effect) - target:addMod(xi.mod.STR, effect:getPower()) + effect:addMod(xi.mod.STR, effect:getPower()) end effectObject.onEffectTick = function(target, effect) end effectObject.onEffectLose = function(target, effect) - target:delMod(xi.mod.STR, effect:getPower()) end return effectObject diff --git a/scripts/effects/firestorm_ii.lua b/scripts/effects/firestorm_ii.lua new file mode 100644 index 00000000000..061531adb59 --- /dev/null +++ b/scripts/effects/firestorm_ii.lua @@ -0,0 +1,17 @@ +----------------------------------- +-- xi.effect.FIRESTORM_II +----------------------------------- +---@type TEffect +local effectObject = {} + +effectObject.onEffectGain = function(target, effect) + effect:addMod(xi.mod.STR, effect:getPower()) +end + +effectObject.onEffectTick = function(target, effect) +end + +effectObject.onEffectLose = function(target, effect) +end + +return effectObject diff --git a/scripts/effects/hailstorm.lua b/scripts/effects/hailstorm.lua index af9ffd516d2..7e8cdc70eef 100644 --- a/scripts/effects/hailstorm.lua +++ b/scripts/effects/hailstorm.lua @@ -5,14 +5,13 @@ local effectObject = {} effectObject.onEffectGain = function(target, effect) - target:addMod(xi.mod.INT, effect:getPower()) + effect:addMod(xi.mod.INT, effect:getPower()) end effectObject.onEffectTick = function(target, effect) end effectObject.onEffectLose = function(target, effect) - target:delMod(xi.mod.INT, effect:getPower()) end return effectObject diff --git a/scripts/effects/hailstorm_ii.lua b/scripts/effects/hailstorm_ii.lua new file mode 100644 index 00000000000..c59b9cfefe9 --- /dev/null +++ b/scripts/effects/hailstorm_ii.lua @@ -0,0 +1,17 @@ +----------------------------------- +-- xi.effect.HAILSTORM_II +----------------------------------- +---@type TEffect +local effectObject = {} + +effectObject.onEffectGain = function(target, effect) + effect:addMod(xi.mod.INT, effect:getPower()) +end + +effectObject.onEffectTick = function(target, effect) +end + +effectObject.onEffectLose = function(target, effect) +end + +return effectObject diff --git a/scripts/effects/rainstorm.lua b/scripts/effects/rainstorm.lua index 9003f7b5332..b2cc700b883 100644 --- a/scripts/effects/rainstorm.lua +++ b/scripts/effects/rainstorm.lua @@ -5,14 +5,13 @@ local effectObject = {} effectObject.onEffectGain = function(target, effect) - target:addMod(xi.mod.MND, effect:getPower()) + effect:addMod(xi.mod.MND, effect:getPower()) end effectObject.onEffectTick = function(target, effect) end effectObject.onEffectLose = function(target, effect) - target:delMod(xi.mod.MND, effect:getPower()) end return effectObject diff --git a/scripts/effects/rainstorm_ii.lua b/scripts/effects/rainstorm_ii.lua new file mode 100644 index 00000000000..3fb0ecb4dab --- /dev/null +++ b/scripts/effects/rainstorm_ii.lua @@ -0,0 +1,17 @@ +----------------------------------- +-- xi.effect.RAINSTORM_II +----------------------------------- +---@type TEffect +local effectObject = {} + +effectObject.onEffectGain = function(target, effect) + effect:addMod(xi.mod.MND, effect:getPower()) +end + +effectObject.onEffectTick = function(target, effect) +end + +effectObject.onEffectLose = function(target, effect) +end + +return effectObject diff --git a/scripts/effects/sandstorm.lua b/scripts/effects/sandstorm.lua index 80cf34fda82..f0a4066896c 100644 --- a/scripts/effects/sandstorm.lua +++ b/scripts/effects/sandstorm.lua @@ -5,14 +5,13 @@ local effectObject = {} effectObject.onEffectGain = function(target, effect) - target:addMod(xi.mod.VIT, effect:getPower()) + effect:addMod(xi.mod.VIT, effect:getPower()) end effectObject.onEffectTick = function(target, effect) end effectObject.onEffectLose = function(target, effect) - target:delMod(xi.mod.VIT, effect:getPower()) end return effectObject diff --git a/scripts/effects/sandstorm_ii.lua b/scripts/effects/sandstorm_ii.lua new file mode 100644 index 00000000000..352ce10dde8 --- /dev/null +++ b/scripts/effects/sandstorm_ii.lua @@ -0,0 +1,17 @@ +----------------------------------- +-- xi.effect.SANDSTORM_II +----------------------------------- +---@type TEffect +local effectObject = {} + +effectObject.onEffectGain = function(target, effect) + effect:addMod(xi.mod.VIT, effect:getPower()) +end + +effectObject.onEffectTick = function(target, effect) +end + +effectObject.onEffectLose = function(target, effect) +end + +return effectObject diff --git a/scripts/effects/thunderstorm.lua b/scripts/effects/thunderstorm.lua index 057cfcf1471..53708375df4 100644 --- a/scripts/effects/thunderstorm.lua +++ b/scripts/effects/thunderstorm.lua @@ -5,14 +5,13 @@ local effectObject = {} effectObject.onEffectGain = function(target, effect) - target:addMod(xi.mod.DEX, effect:getPower()) + effect:addMod(xi.mod.DEX, effect:getPower()) end effectObject.onEffectTick = function(target, effect) end effectObject.onEffectLose = function(target, effect) - target:delMod(xi.mod.DEX, effect:getPower()) end return effectObject diff --git a/scripts/effects/thunderstorm_ii.lua b/scripts/effects/thunderstorm_ii.lua new file mode 100644 index 00000000000..0331befb6c2 --- /dev/null +++ b/scripts/effects/thunderstorm_ii.lua @@ -0,0 +1,17 @@ +----------------------------------- +-- xi.effect.THUNDERSTORM_II +----------------------------------- +---@type TEffect +local effectObject = {} + +effectObject.onEffectGain = function(target, effect) + effect:addMod(xi.mod.DEX, effect:getPower()) +end + +effectObject.onEffectTick = function(target, effect) +end + +effectObject.onEffectLose = function(target, effect) +end + +return effectObject diff --git a/scripts/effects/voidstorm.lua b/scripts/effects/voidstorm.lua index 32bb4d6d8f4..ba0231d78ee 100644 --- a/scripts/effects/voidstorm.lua +++ b/scripts/effects/voidstorm.lua @@ -5,26 +5,20 @@ local effectObject = {} effectObject.onEffectGain = function(target, effect) - target:addMod(xi.mod.STR, math.floor(effect:getPower() / 2)) - target:addMod(xi.mod.DEX, math.floor(effect:getPower() / 2)) - target:addMod(xi.mod.VIT, math.floor(effect:getPower() / 2)) - target:addMod(xi.mod.AGI, math.floor(effect:getPower() / 2)) - target:addMod(xi.mod.INT, math.floor(effect:getPower() / 2)) - target:addMod(xi.mod.MND, math.floor(effect:getPower() / 2)) - target:addMod(xi.mod.CHR, math.floor(effect:getPower() / 2)) + local power = math.floor(effect:getPower() / 2) + effect:addMod(xi.mod.STR, power) + effect:addMod(xi.mod.DEX, power) + effect:addMod(xi.mod.VIT, power) + effect:addMod(xi.mod.AGI, power) + effect:addMod(xi.mod.INT, power) + effect:addMod(xi.mod.MND, power) + effect:addMod(xi.mod.CHR, power) end effectObject.onEffectTick = function(target, effect) end effectObject.onEffectLose = function(target, effect) - target:delMod(xi.mod.STR, math.floor(effect:getPower() / 2)) - target:delMod(xi.mod.DEX, math.floor(effect:getPower() / 2)) - target:delMod(xi.mod.VIT, math.floor(effect:getPower() / 2)) - target:delMod(xi.mod.AGI, math.floor(effect:getPower() / 2)) - target:delMod(xi.mod.INT, math.floor(effect:getPower() / 2)) - target:delMod(xi.mod.MND, math.floor(effect:getPower() / 2)) - target:delMod(xi.mod.CHR, math.floor(effect:getPower() / 2)) end return effectObject diff --git a/scripts/effects/voidstrom_ii.lua b/scripts/effects/voidstrom_ii.lua new file mode 100644 index 00000000000..c4bd5ea4241 --- /dev/null +++ b/scripts/effects/voidstrom_ii.lua @@ -0,0 +1,24 @@ +----------------------------------- +-- xi.effect.VOIDSTORM_II +----------------------------------- +---@type TEffect +local effectObject = {} + +effectObject.onEffectGain = function(target, effect) + local power = math.floor(effect:getPower() / 2) + effect:addMod(xi.mod.STR, power) + effect:addMod(xi.mod.DEX, power) + effect:addMod(xi.mod.VIT, power) + effect:addMod(xi.mod.AGI, power) + effect:addMod(xi.mod.INT, power) + effect:addMod(xi.mod.MND, power) + effect:addMod(xi.mod.CHR, power) +end + +effectObject.onEffectTick = function(target, effect) +end + +effectObject.onEffectLose = function(target, effect) +end + +return effectObject diff --git a/scripts/effects/windstorm.lua b/scripts/effects/windstorm.lua index b2c2464ad3b..1eab93858ee 100644 --- a/scripts/effects/windstorm.lua +++ b/scripts/effects/windstorm.lua @@ -5,14 +5,13 @@ local effectObject = {} effectObject.onEffectGain = function(target, effect) - target:addMod(xi.mod.AGI, effect:getPower()) + effect:addMod(xi.mod.AGI, effect:getPower()) end effectObject.onEffectTick = function(target, effect) end effectObject.onEffectLose = function(target, effect) - target:delMod(xi.mod.AGI, effect:getPower()) end return effectObject diff --git a/scripts/effects/windstorm_ii.lua b/scripts/effects/windstorm_ii.lua new file mode 100644 index 00000000000..d6701c88236 --- /dev/null +++ b/scripts/effects/windstorm_ii.lua @@ -0,0 +1,17 @@ +----------------------------------- +-- xi.effect.WINDSTORM_II +----------------------------------- +---@type TEffect +local effectObject = {} + +effectObject.onEffectGain = function(target, effect) + effect:addMod(xi.mod.AGI, effect:getPower()) +end + +effectObject.onEffectTick = function(target, effect) +end + +effectObject.onEffectLose = function(target, effect) +end + +return effectObject diff --git a/scripts/enum/action.lua b/scripts/enum/action.lua index ef1ad88b0a4..e744ea59438 100644 --- a/scripts/enum/action.lua +++ b/scripts/enum/action.lua @@ -256,16 +256,17 @@ xi.action.react = -- Enums for AI actions. xi.action.type = { - NONE = 0, - DAMAGE_TARGET = 1, -- No condition. - DAMAGE_FORCE_SELF = 2, -- No condition. - HEALING_TARGET = 3, -- HP Thresshold. - HEALING_FORCE_SELF = 4, -- HP Thresshold. Force caster to be the main target. - HEALING_EFFECT = 5, -- Status effect on self or ally present. - ENHANCING_TARGET = 6, -- Status effect on self or ally not present. - ENHANCING_FORCE_SELF = 7, -- Status effect on self or ally not present. Force caster to be the main target. - ENFEEBLING_TARGET = 8, -- Status effect on target or other enemy not present. - ENFEEBLING_FORCE_SELF = 9, -- Status effect on target or other enemy not present. Force caster to be the main target. - DRAIN_HP = 10, -- Enemy not undead. HP Thresshold optional. - DRAIN_MP = 11, -- Enemy not undead. Enemy has MP. MP thresshold optional. + NONE = 0, + DAMAGE_TARGET = 1, + DAMAGE_FORCE_SELF = 2, + HEALING_TARGET = 3, + HEALING_FORCE_SELF = 4, + HEALING_EFFECT = 5, + HEALING_EFFECT_FORCE_SELF = 6, + ENHANCING_TARGET = 7, + ENHANCING_FORCE_SELF = 8, + ENFEEBLING_TARGET = 9, + ENFEEBLING_FORCE_SELF = 10, + DISPEL = 11, + SUMMONING = 12, } diff --git a/scripts/globals/combat/entity_behavior.lua b/scripts/globals/combat/entity_behavior.lua index 9f75d9e2f15..a1f48056eac 100644 --- a/scripts/globals/combat/entity_behavior.lua +++ b/scripts/globals/combat/entity_behavior.lua @@ -1,9 +1,12 @@ ----------------------------------- -- Global file for globably/commonly used entity behavior/patterns. ----------------------------------- +require('scripts/globals/combat/entity_behavior_data') +----------------------------------- xi = xi or {} xi.combat = xi.combat or {} xi.combat.behavior = xi.combat.behavior or {} +----------------------------------- xi.combat.behavior.isEntityBusy = function(actor) -- Check poses (actions). @@ -57,244 +60,244 @@ xi.combat.behavior.enableAllActions = function(actor) actor:setMobAbilityEnabled(true) end -xi.combat.behavior.chooseAction = function(actor, mainTarget, optionalTargets, actionTable) +----------------------------------- +-- Action choose functions. +----------------------------------- +local function validateParameters(fedParameters) + local params = {} + + -- Common parmeters. + params.spellId = fedParameters.spellId or 0 + params.category = xi.combat.behavior.spellData[params.spellId][1] or xi.action.type.NONE + params.isSelfTarget = xi.combat.behavior.spellData[params.spellId][2] or false + params.distance = fedParameters.distance or 8 + params.weight = fedParameters.weight or 100 + + -- Effect parameters. + params.healsEffectId = fedParameters.healsEffectId ~= nil and fedParameters.healsEffectId or xi.combat.behavior.spellData[params.spellId][3] + params.appliesEffectId = fedParameters.appliesEffectId ~= nil and fedParameters.appliesEffectId or xi.combat.behavior.spellData[params.spellId][4] + params.effectTier = fedParameters.effectTier ~= nil and fedParameters.effectTier or xi.combat.behavior.spellData[params.spellId][5] + + -- Evaluation conditions. + params.evaluateAlive = fedParameters.evaluateAlive ~= nil and fedParameters.evaluateAlive or true + params.evaluateUndead = fedParameters.evaluateUndead ~= nil and fedParameters.evaluateUndead or false + params.evaluateEntityPets = fedParameters.evaluateEntityPets ~= nil and fedParameters.evaluateEntityPets or false + params.evaluateDispel = fedParameters.params.evaluateDispel ~= nil and fedParameters.evaluateDispel or false + params.evaluateErase = fedParameters.params.evaluateErase ~= nil and fedParameters.evaluateErase or false + params.evaluateAllyTargets = fedParameters.evaluateAllyTargets ~= nil and fedParameters.evaluateAllyTargets or xi.combat.behavior.spellData[params.spellId][6] + params.evaluateFoeTargets = fedParameters.evaluateFoeTargets ~= nil and fedParameters.evaluateFoeTargets or xi.combat.behavior.spellData[params.spellId][7] + params.evaluateHPP = fedParameters.hpp or 100 -- Target HPP must be this % or lower. + params.evaluateMP = fedParameters.mp or 0 -- Target MPP must be this % or higher. + params.evaluateTP = fedParameters.tp or 0 -- Target TP must be this value or higher. + + return params +end + +local function judgeEntity(actor, entity, params, validTargets, targetAmount) + -- Early return: Target entity doesn't exist. + if not entity then + return validTargets, targetAmount + end + + -- Early return: Target is not supposed to be targetable. + if entity:getUntargetable() then + return validTargets, targetAmount + end + + -- Early return: Target needs to be alivwe and isn't. + if params.evaluateAlive and not entity:isAlive() then + return validTargets, targetAmount + end + + -- Early return: Target is too far from caster. + if entity:checkDistance(actor) > params.distance then + return validTargets, targetAmount + end + + -- Early return: Target doesn't have enough HP to be casted. + if entity:getHPP() > params.evaluateHPP then + return validTargets, targetAmount + end + + -- Early return: Target doesn't have enough MP to be casted. + if entity:getMP() < params.evaluateMP then + return validTargets, targetAmount + end + + -- Early return: Target doesn't have enough TP to be casted. + if entity:getTP() < params.evaluateTP then + return validTargets, targetAmount + end + + -- Early return: Erase-type spell. + if params.evaluateErase then + if not entity:hasStatusEffectByFlag(xi.effectFlag.ERASABLE) then + return validTargets, targetAmount + end + end + + -- Early return: Dispel-type spell. + if params.evaluateDispel then + if not entity:hasStatusEffectByFlag(xi.effectFlag.DISPELABLE) then + return validTargets, targetAmount + end + end + + -- Early return: Spell heals status and target doesn't have said status. + if params.healsEffectId then + if not entity:hasStatusEffect(params.healsEffectId) then + return validTargets, targetAmount + end + end + + -- Spell adds status to target. + if params.appliesEffectId then + if entity:hasStatusEffect(params.appliesEffectId) then + return validTargets, targetAmount + end + + -- Early return: Effect wouldn't be applied. + if xi.data.statusEffect.isEffectNullified(entity, params.appliesEffectId, params.effectTier) then + return validTargets, targetAmount + end + + -- Special condition: Silence + if params.appliesEffectId == xi.effect.SILENCE then + if not xi.data.job.isInnateCaster(entity) then + return validTargets, targetAmount + end + + -- Special condition: Elemental DoT incompatibilities. This will ensure we only cast stackable effects. + elseif + params.appliesEffectId == xi.effect.BURN or + params.appliesEffectId == xi.effect.CHOKE or + params.appliesEffectId == xi.effect.DROWN or + params.appliesEffectId == xi.effect.FROST or + params.appliesEffectId == xi.effect.RASP or + params.appliesEffectId == xi.effect.SHOCK + then + if entity:hasStatusEffect(xi.data.statusEffect.getEffectToRemove(params.appliesEffectId)) then + return validTargets, targetAmount + end + + if entity:hasStatusEffect(xi.data.statusEffect.getNullificatingEffect(params.appliesEffectId)) then + return validTargets, targetAmount + end + end + end + + table.insert(validTargets, { entity }) + + return validTargets, targetAmount + 1 +end + +local function handleActionList(actor, mainTarget, params, allyEntityTable, foeEntityTable, isForcedOnSelf) + local validTargets = {} -- Table with all possible targets of this action. + local targetAmount = 0 -- Number of possible targets. + + -- Check and add main target into the list. + validTargets, targetAmount = judgeEntity(actor, mainTarget, params, validTargets, targetAmount) + + -- Check optional targets in ally list. + if allyEntityTable and params.allowAllyTargets then + for _, targetEntity in pairs(allyEntityTable) do + validTargets, targetAmount = judgeEntity(actor, targetEntity, params, validTargets, targetAmount) + + if params.includePet then + local petEntity = targetEntity:getPet() + if petEntity then + validTargets, targetAmount = judgeEntity(actor, petEntity, params, validTargets, targetAmount) + end + end + end + end + + -- Check optional targets in foe list. + if foeEntityTable and params.allowFoeTargets then + for _, targetEntity in pairs(foeEntityTable) do + validTargets, targetAmount = judgeEntity(actor, targetEntity, params, validTargets, targetAmount) + + if params.includePet then + local petEntity = targetEntity:getPet() + if petEntity then + validTargets, targetAmount = judgeEntity(actor, petEntity, params, validTargets, targetAmount) + end + end + end + end + + -- Add all valid entries to the action list. + local actionList = {} + if targetAmount > 0 then + for _, validEntity in pairs(validTargets) do + local targetEntity = isForcedOnSelf and actor or validEntity + table.insert(actionList, { params.spellId, targetEntity, params.weight / targetAmount }) + end + end + + return actionList +end + +xi.combat.behavior.chooseSpell = function(actor, target, actionTable, allyEntityTable, foeEntityTable) local actionList = {} -- Build new table with actions that meet the conditions. for entry = 1, #actionTable do - local actionId = actionTable[entry][1] -- The ID of the action. - local actionTarget = actionTable[entry][2] -- The main target of the action. - local actionAllowAllies = actionTable[entry][3] -- Boolean. Determine if we check "optionalTargets" tables for the condition. NOTE: Needs condition. - local actionType = actionTable[entry][4] -- Determines the condition type. - local actionCondition = actionTable[entry][5] -- The condition. (HP/MP under threshold, effect present.) - local effectTier = actionTable[entry][6] or 0 -- Currently used only for effect tiers. - local actionWeight = actionTable[entry][7] or 100 -- How likely it will be for the action to be chosen. - - switch (actionType): caseof + local params = validateParameters(actionTable[entry]) + local mainTarget = params.isPositive and actor or target + + switch (params.category): caseof { [xi.action.type.NONE] = function() - table.insert(actionList, { actionId, actionTarget, actionWeight }) end, [xi.action.type.DAMAGE_TARGET] = function() - table.insert(actionList, { actionId, actionTarget, actionWeight }) + actionList = handleActionList(actor, mainTarget, params, allyEntityTable, foeEntityTable, false) end, [xi.action.type.DAMAGE_FORCE_SELF] = function() - table.insert(actionList, { actionId, actor, actionWeight }) + actionList = handleActionList(actor, mainTarget, params, allyEntityTable, foeEntityTable, true) end, [xi.action.type.HEALING_TARGET] = function() - -- Check self. - if actor:getHPP() <= actionCondition then - table.insert(actionList, { actionId, actor, actionWeight }) - end - - -- Check allies. - if actionAllowAllies and optionalTargets then - for _, allyEntity in pairs(optionalTargets) do - if - allyEntity and - allyEntity:isAlive() and - allyEntity:checkDistance(actor) <= 8 and - allyEntity:getHPP() <= actionCondition - then - table.insert(actionList, { actionId, allyEntity, actionWeight }) - end - end - end + actionList = handleActionList(actor, mainTarget, params, allyEntityTable, foeEntityTable, false) end, -- For Self-targeted AoE cures. [xi.action.type.HEALING_FORCE_SELF] = function() - -- Check self. - if actor:getHPP() <= actionCondition then - table.insert(actionList, { actionId, actor, actionWeight }) - - -- Check allies. - else - if actionAllowAllies and optionalTargets then - for _, allyEntity in pairs(optionalTargets) do - if - allyEntity and - allyEntity:isAlive() and - allyEntity:checkDistance(actor) <= 8 and - allyEntity:getHPP() <= actionCondition - then - table.insert(actionList, { actionId, actor, actionWeight }) - break - end - end - end - end + actionList = handleActionList(actor, mainTarget, params, allyEntityTable, foeEntityTable, true) end, [xi.action.type.HEALING_EFFECT] = function() - -- Check self. - if actor:hasStatusEffect(actionCondition) then - table.insert(actionList, { actionId, actor, actionWeight }) - end + actionList = handleActionList(actor, mainTarget, params, allyEntityTable, foeEntityTable, false) + end, - -- Check allies. - if actionAllowAllies and optionalTargets then - for _, allyEntity in pairs(optionalTargets) do - if - allyEntity and - allyEntity:isAlive() and - allyEntity:checkDistance(actor) <= 8 and - allyEntity:hasStatusEffect(actionCondition) - then - table.insert(actionList, { actionId, allyEntity, actionWeight }) - end - end - end + [xi.action.type.HEALING_EFFECT_FORCE_SELF] = function() + actionList = handleActionList(actor, mainTarget, params, allyEntityTable, foeEntityTable, true) end, [xi.action.type.ENHANCING_TARGET] = function() - -- Check self. - if - not actor:hasStatusEffect(actionCondition) and - not xi.data.statusEffect.isEffectNullified(actor, actionCondition, effectTier) - then - table.insert(actionList, { actionId, actor, actionWeight }) - end - - -- Check allies. - if actionAllowAllies and optionalTargets then - for _, allyEntity in pairs(optionalTargets) do - if - allyEntity and - allyEntity:isAlive() and - allyEntity:checkDistance(actor) <= 8 and - not allyEntity:hasStatusEffect(actionCondition) and - not xi.data.statusEffect.isEffectNullified(allyEntity, actionCondition, effectTier) - then - table.insert(actionList, { actionId, allyEntity, actionWeight }) - end - end - end + actionList = handleActionList(actor, mainTarget, params, allyEntityTable, foeEntityTable, false) end, -- For Self-targeted AoE enhancements. [xi.action.type.ENHANCING_FORCE_SELF] = function() - -- Check self. - if - not actor:hasStatusEffect(actionCondition) and - not xi.data.statusEffect.isEffectNullified(actor, actionCondition, effectTier) - then - table.insert(actionList, { actionId, actor, actionWeight }) - - -- Check allies. - else - if actionAllowAllies and optionalTargets then - for _, allyEntity in pairs(optionalTargets) do - if - allyEntity and - allyEntity:isAlive() and - allyEntity:checkDistance(actor) <= 8 and - not allyEntity:hasStatusEffect(actionCondition) and - not xi.data.statusEffect.isEffectNullified(allyEntity, actionCondition, effectTier) - then - table.insert(actionList, { actionId, actor, actionWeight }) - break - end - end - end - end + actionList = handleActionList(actor, mainTarget, params, allyEntityTable, foeEntityTable, true) end, [xi.action.type.ENFEEBLING_TARGET] = function() - if - not actionTarget:hasStatusEffect(actionCondition) and - not xi.data.statusEffect.isEffectNullified(actionTarget, actionCondition, effectTier) - then - -- Special condition: Silence - if actionCondition == xi.effect.SILENCE then - if xi.data.job.isInnateCaster(actionTarget) then - table.insert(actionList, { actionId, actionTarget, actionWeight }) - end - - -- Special condition: Elemental DoT incompatibilities. This will ensure we only cast stackable effects. - elseif - actionCondition == xi.effect.BURN or - actionCondition == xi.effect.CHOKE or - actionCondition == xi.effect.DROWN or - actionCondition == xi.effect.FROST or - actionCondition == xi.effect.RASP or - actionCondition == xi.effect.SHOCK - then - if - not actionTarget:hasStatusEffect(xi.data.statusEffect.getEffectToRemove(actionCondition)) and - not actionTarget:hasStatusEffect(xi.data.statusEffect.getNullificatingEffect(actionCondition)) - then - table.insert(actionList, { actionId, actionTarget, actionWeight }) - end - - -- No special conditions. - else - table.insert(actionList, { actionId, actionTarget, actionWeight }) - end - end + actionList = handleActionList(actor, mainTarget, params, allyEntityTable, foeEntityTable, false) end, -- For self-targeted AoE enfeeblements. Use with care. [xi.action.type.ENFEEBLING_FORCE_SELF] = function() - if - not actionTarget:hasStatusEffect(actionCondition) and - not xi.data.statusEffect.isEffectNullified(actionTarget, actionCondition, effectTier) - then - -- Special condition: Silence - if actionCondition == xi.effect.SILENCE then - if xi.data.job.isInnateCaster(actionTarget) then - table.insert(actionList, { actionId, actor, actionWeight }) - end - - -- Special condition: Elemental DoT incompatibilities. This will ensure we only cast stackable effects. - elseif - actionCondition == xi.effect.BURN or - actionCondition == xi.effect.CHOKE or - actionCondition == xi.effect.DROWN or - actionCondition == xi.effect.FROST or - actionCondition == xi.effect.RASP or - actionCondition == xi.effect.SHOCK - then - if - not actionTarget:hasStatusEffect(xi.data.statusEffect.getEffectToRemove(actionCondition)) and - not actionTarget:hasStatusEffect(xi.data.statusEffect.getNullificatingEffect(actionCondition)) - then - table.insert(actionList, { actionId, actor, actionWeight }) - end - - -- No special conditions. - else - table.insert(actionList, { actionId, actor, actionWeight }) - end - end + actionList = handleActionList(actor, mainTarget, params, allyEntityTable, foeEntityTable, true) end, - [xi.action.type.DRAIN_HP] = function() - if not actionTarget:isUndead() then - if - actionCondition == nil or - (actionCondition and actor:getHPP() <= actionCondition) - then - table.insert(actionList, { actionId, actionTarget, actionWeight }) - end - end + [xi.action.type.DISPEL] = function() end, - [xi.action.type.DRAIN_MP] = function() - if - not actionTarget:isUndead() and - actionTarget:getMP() > 0 - then - if - actionCondition == nil or - (actionCondition and actor:getMPP() <= actionCondition) - then - table.insert(actionList, { actionId, actionTarget, actionWeight }) - end - end + [xi.action.type.SUMMONING] = function() end, } end diff --git a/scripts/globals/combat/entity_behavior_data.lua b/scripts/globals/combat/entity_behavior_data.lua new file mode 100644 index 00000000000..0924e3bb4c6 --- /dev/null +++ b/scripts/globals/combat/entity_behavior_data.lua @@ -0,0 +1,881 @@ +----------------------------------- +-- Global file for globably/commonly used entity behavior/patterns. +----------------------------------- +xi = xi or {} +xi.combat = xi.combat or {} +xi.combat.behavior = xi.combat.behavior or {} +----------------------------------- + +xi.combat.behavior.spellData = +{ + [0 ] = { xi.action.type.NONE, false, nil, nil, 0, false, false }, + [xi.magic.spell.CURE ] = { xi.action.type.HEALING_TARGET, true, nil, nil, 0, true, false }, + [xi.magic.spell.CURE_II ] = { xi.action.type.HEALING_TARGET, true, nil, nil, 0, true, false }, + [xi.magic.spell.CURE_III ] = { xi.action.type.HEALING_TARGET, true, nil, nil, 0, true, false }, + [xi.magic.spell.CURE_IV ] = { xi.action.type.HEALING_TARGET, true, nil, nil, 0, true, false }, + [xi.magic.spell.CURE_V ] = { xi.action.type.HEALING_TARGET, true, nil, nil, 0, true, false }, + [xi.magic.spell.CURE_VI ] = { xi.action.type.HEALING_TARGET, true, nil, nil, 0, true, false }, + [xi.magic.spell.CURAGA ] = { xi.action.type.HEALING_TARGET, true, nil, nil, 0, true, false }, + [xi.magic.spell.CURAGA_II ] = { xi.action.type.HEALING_TARGET, true, nil, nil, 0, true, false }, + [xi.magic.spell.CURAGA_III ] = { xi.action.type.HEALING_TARGET, true, nil, nil, 0, true, false }, + [xi.magic.spell.CURAGA_IV ] = { xi.action.type.HEALING_TARGET, true, nil, nil, 0, true, false }, + [xi.magic.spell.CURAGA_V ] = { xi.action.type.HEALING_TARGET, true, nil, nil, 0, true, false }, + [xi.magic.spell.RAISE ] = { xi.action.type.HEALING_EFFECT, true, xi.effect.WEAKNESS, nil, 0, true, false }, + [xi.magic.spell.RAISE_II ] = { xi.action.type.HEALING_EFFECT, true, xi.effect.WEAKNESS, nil, 0, true, false }, + [xi.magic.spell.POISONA ] = { xi.action.type.HEALING_EFFECT, true, xi.effect.POISON, nil, 0, true, false }, + [xi.magic.spell.PARALYNA ] = { xi.action.type.HEALING_EFFECT, true, xi.effect.PARALYSIS, nil, 0, true, false }, + [xi.magic.spell.BLINDNA ] = { xi.action.type.HEALING_EFFECT, true, xi.effect.BLINDNESS, nil, 0, true, false }, + [xi.magic.spell.SILENA ] = { xi.action.type.HEALING_EFFECT, true, xi.effect.SILENCE, nil, 0, true, false }, + [xi.magic.spell.STONA ] = { xi.action.type.HEALING_EFFECT, true, xi.effect.PETRIFICATION, nil, 0, true, false }, + [xi.magic.spell.VIRUNA ] = { xi.action.type.HEALING_EFFECT, true, xi.effect.PLAGUE, nil, 0, true, false }, + [xi.magic.spell.CURSNA ] = { xi.action.type.HEALING_EFFECT, true, xi.effect.CURSE_I, nil, 0, true, false }, + [xi.magic.spell.HOLY ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.HOLY_II ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.DIA ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.DIA, 1, false, true }, + [xi.magic.spell.DIA_II ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.DIA, 3, false, true }, + [xi.magic.spell.DIA_III ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.DIA, 5, false, true }, + [xi.magic.spell.DIA_IV ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.DIA, 7, false, true }, + [xi.magic.spell.DIA_V ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.DIA, 9, false, true }, + [xi.magic.spell.BANISH ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.BANISH_II ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.BANISH_III ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.BANISH_IV ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.BANISH_V ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.DIAGA ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.DIA, 1, false, true }, + [xi.magic.spell.DIAGA_II ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.DIA, 3, false, true }, + [xi.magic.spell.DIAGA_III ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.DIA, 5, false, true }, + [xi.magic.spell.DIAGA_IV ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.DIA, 7, false, true }, + [xi.magic.spell.DIAGA_V ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.DIA, 9, false, true }, + [xi.magic.spell.BANISHGA ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.BANISHGA_II ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.BANISHGA_III ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.BANISHGA_IV ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.BANISHGA_V ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.PROTECT ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.PROTECT, 1, true, false }, + [xi.magic.spell.PROTECT_II ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.PROTECT, 2, true, false }, + [xi.magic.spell.PROTECT_III ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.PROTECT, 3, true, false }, + [xi.magic.spell.PROTECT_IV ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.PROTECT, 4, true, false }, + [xi.magic.spell.PROTECT_V ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.PROTECT, 5, true, false }, + [xi.magic.spell.SHELL ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.SHELL, 1, true, false }, + [xi.magic.spell.SHELL_II ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.SHELL, 2, true, false }, + [xi.magic.spell.SHELL_III ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.SHELL, 3, true, false }, + [xi.magic.spell.SHELL_IV ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.SHELL, 4, true, false }, + [xi.magic.spell.SHELL_V ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.SHELL, 5, true, false }, + [xi.magic.spell.BLINK ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.BLINK, 1, false, false }, + [xi.magic.spell.STONESKIN ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.STONESKIN, 1, false, false }, + [xi.magic.spell.AQUAVEIL ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.AQUAVEIL, 1, false, false }, + [xi.magic.spell.SLOW ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.SLOW, 3, false, true }, + [xi.magic.spell.HASTE ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.HASTE, 5, true, false }, + [xi.magic.spell.PARALYZE ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.PARALYSIS, 1, false, true }, + [xi.magic.spell.SILENCE ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.SILENCE, 1, false, true }, + [xi.magic.spell.BARFIRE ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.BARFIRE, 1, false, false }, + [xi.magic.spell.BARBLIZZARD ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.BARBLIZZARD, 1, false, false }, + [xi.magic.spell.BARAERO ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.BARAERO, 1, false, false }, + [xi.magic.spell.BARSTONE ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.BARSTONE, 1, false, false }, + [xi.magic.spell.BARTHUNDER ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.BARTHUNDER, 1, false, false }, + [xi.magic.spell.BARWATER ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.BARWATER, 1, false, false }, + [xi.magic.spell.BARFIRA ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.BARFIRE, 1, true, false }, + [xi.magic.spell.BARBLIZZARA ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.BARBLIZZARD, 1, true, false }, + [xi.magic.spell.BARAERA ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.BARAERO, 1, true, false }, + [xi.magic.spell.BARSTONRA ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.BARSTONE, 1, true, false }, + [xi.magic.spell.BARTHUNDRA ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.BARTHUNDER, 1, true, false }, + [xi.magic.spell.BARWATERA ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.BARWATER, 1, true, false }, + [xi.magic.spell.BARSLEEP ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.BARSLEEP, 1, false, false }, + [xi.magic.spell.BARPOISON ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.BARPOISON, 1, false, false }, + [xi.magic.spell.BARPARALYZE ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.BARPARALYZE, 1, false, false }, + [xi.magic.spell.BARBLIND ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.BARBLIND, 1, false, false }, + [xi.magic.spell.BARSILENCE ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.BARSILENCE, 1, false, false }, + [xi.magic.spell.BARPETRIFY ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.BARPETRIFY, 1, false, false }, + [xi.magic.spell.BARVIRUS ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.BARVIRUS, 1, false, false }, + [xi.magic.spell.SLOW_II ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.SLOW, 7, false, true }, + [xi.magic.spell.PARALYZE_II ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.PARALYSIS, 3, false, true }, + [xi.magic.spell.RECALL_JUGNER ] = { xi.action.type.NONE, false, nil, nil, 0, false, false }, + [xi.magic.spell.RECALL_PASHH ] = { xi.action.type.NONE, false, nil, nil, 0, false, false }, + [xi.magic.spell.RECALL_MERIPH ] = { xi.action.type.NONE, false, nil, nil, 0, false, false }, + [xi.magic.spell.BARAMNESIA ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.BARAMNESIA, 1, false, false }, + [xi.magic.spell.BARAMNESRA ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.BARAMNESIA, 1, true, false }, + [xi.magic.spell.BARSLEEPRA ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.BARSLEEP, 1, true, false }, + [xi.magic.spell.BARPOISONRA ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.BARPOISON, 1, true, false }, + [xi.magic.spell.BARPARALYZRA ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.BARPARALYZE, 1, true, false }, + [xi.magic.spell.BARBLINDRA ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.BARBLIND, 1, true, false }, + [xi.magic.spell.BARSILENCERA ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.BARSILENCE, 1, true, false }, + [xi.magic.spell.BARPETRA ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.BARPETRIFY, 1, true, false }, + [xi.magic.spell.BARVIRA ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.BARVIRUS, 1, true, false }, + [xi.magic.spell.CURA ] = { xi.action.type.HEALING_FORCE_SELF, true, nil, nil, 0, true, false }, + --[xi.magic.spell.SACRIFICE ] = { }, + --[xi.magic.spell.ESUNA ] = { }, + --[xi.magic.spell.AUSPICE ] = { }, + --[xi.magic.spell.REPRISAL ] = { }, + --[xi.magic.spell.REPOSE ] = { }, + [xi.magic.spell.SANDSTORM ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.SANDSTORM, 1, true, false }, + [xi.magic.spell.ENFIRE ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.ENFIRE, 1, false, false }, + [xi.magic.spell.ENBLIZZARD ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.ENBLIZZARD, 1, false, false }, + [xi.magic.spell.ENAERO ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.ENAERO, 1, false, false }, + [xi.magic.spell.ENSTONE ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.ENSTONE, 1, false, false }, + [xi.magic.spell.ENTHUNDER ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.ENTHUNDER, 1, false, false }, + [xi.magic.spell.ENWATER ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.ENWATER, 1, false, false }, + [xi.magic.spell.PHALANX ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.PHALANX, 1, false, false }, + [xi.magic.spell.PHALANX_II ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.PHALANX, 2, true, false }, + [xi.magic.spell.REGEN ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.REGEN, 1, true, false }, + [xi.magic.spell.REFRESH ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.REFRESH, 1, true, false }, + [xi.magic.spell.REGEN_II ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.REGEN, 2, true, false }, + [xi.magic.spell.REGEN_III ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.REGEN, 3, true, false }, + [xi.magic.spell.FLASH ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.FLASH, 1, false, true }, + [xi.magic.spell.RAINSTORM ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.RAINSTORM, 1, true, false }, + [xi.magic.spell.WINDSTORM ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.WINDSTORM, 1, true, false }, + [xi.magic.spell.FIRESTORM ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.FIRESTORM, 1, true, false }, + [xi.magic.spell.HAILSTORM ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.HAILSTORM, 1, true, false }, + [xi.magic.spell.THUNDERSTORM ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.THUNDERSTORM, 1, true, false }, + [xi.magic.spell.VOIDSTORM ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.VOIDSTORM, 1, true, false }, + [xi.magic.spell.AURORASTORM ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.AURORASTORM, 1, true, false }, + [xi.magic.spell.TELEPORT_YHOAT ] = { xi.action.type.NONE, false, nil, nil, 0, false, false }, + [xi.magic.spell.TELEPORT_ALTEP ] = { xi.action.type.NONE, false, nil, nil, 0, false, false }, + [xi.magic.spell.TELEPORT_HOLLA ] = { xi.action.type.NONE, false, nil, nil, 0, false, false }, + [xi.magic.spell.TELEPORT_DEM ] = { xi.action.type.NONE, false, nil, nil, 0, false, false }, + [xi.magic.spell.TELEPORT_MEA ] = { xi.action.type.NONE, false, nil, nil, 0, false, false }, + [xi.magic.spell.PROTECTRA ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.PROTECT, 1, true, false }, + [xi.magic.spell.PROTECTRA_II ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.PROTECT, 2, true, false }, + [xi.magic.spell.PROTECTRA_III ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.PROTECT, 3, true, false }, + [xi.magic.spell.PROTECTRA_IV ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.PROTECT, 4, true, false }, + [xi.magic.spell.PROTECTRA_V ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.PROTECT, 5, true, false }, + [xi.magic.spell.SHELLRA ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.SHELL, 1, true, false }, + [xi.magic.spell.SHELLRA_II ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.SHELL, 2, true, false }, + [xi.magic.spell.SHELLRA_III ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.SHELL, 3, true, false }, + [xi.magic.spell.SHELLRA_IV ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.SHELL, 4, true, false }, + [xi.magic.spell.SHELLRA_V ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.SHELL, 5, true, false }, + [xi.magic.spell.RERAISE ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.RERAISE, 1, false, false }, + [xi.magic.spell.INVISIBLE ] = { xi.action.type.NONE, false, nil, nil, 0, false, false }, + [xi.magic.spell.SNEAK ] = { xi.action.type.NONE, false, nil, nil, 0, false, false }, + [xi.magic.spell.DEODORIZE ] = { xi.action.type.NONE, false, nil, nil, 0, false, false }, + [xi.magic.spell.TELEPORT_VAHZL ] = { xi.action.type.NONE, false, nil, nil, 0, false, false }, + [xi.magic.spell.RAISE_III ] = { xi.action.type.HEALING_EFFECT, true, xi.effect.WEAKNESS, nil, 0, true, false }, + [xi.magic.spell.RERAISE_II ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.RERAISE, 2, false, false }, + [xi.magic.spell.RERAISE_III ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.RERAISE, 3, false, false }, + [xi.magic.spell.ERASE ] = { xi.action.type.HEALING_EFFECT, true, nil, nil, 0, true, false }, + [xi.magic.spell.FIRE ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.FIRE_II ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.FIRE_III ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.FIRE_IV ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.FIRE_V ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.BLIZZARD ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.BLIZZARD_II ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.BLIZZARD_III ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.BLIZZARD_IV ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.BLIZZARD_V ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.AERO ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.AERO_II ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.AERO_III ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.AERO_IV ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.AERO_V ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.STONE ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.STONE_II ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.STONE_III ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.STONE_IV ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.STONE_V ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.THUNDER ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.THUNDER_II ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.THUNDER_III ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.THUNDER_IV ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.THUNDER_V ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.WATER ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.WATER_II ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.WATER_III ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.WATER_IV ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.WATER_V ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.FIRAGA ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.FIRAGA_II ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.FIRAGA_III ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.FIRAGA_IV ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.FIRAGA_V ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.BLIZZAGA ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.BLIZZAGA_II ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.BLIZZAGA_III ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.BLIZZAGA_IV ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.BLIZZAGA_V ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.AEROGA ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.AEROGA_II ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.AEROGA_III ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.AEROGA_IV ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.AEROGA_V ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.STONEGA ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.STONEGA_II ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.STONEGA_III ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.STONEGA_IV ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.STONEGA_V ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.THUNDAGA ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.THUNDAGA_II ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.THUNDAGA_III ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.THUNDAGA_IV ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.THUNDAGA_V ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.WATERGA ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.WATERGA_II ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.WATERGA_III ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.WATERGA_IV ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.WATERGA_V ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.FLARE ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.FLARE_II ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.FREEZE ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.FREEZE_II ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.TORNADO ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.TORNADO_II ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.QUAKE ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.QUAKE_II ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.BURST ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.BURST_II ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.FLOOD ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.FLOOD_II ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.GRAVITY ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.WEIGHT, 1, false, true }, + [xi.magic.spell.GRAVITY_II ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.WEIGHT, 3, false, true }, + [xi.magic.spell.METEOR ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.COMET ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.POISON ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.POISON, 1, false, true }, + [xi.magic.spell.POISON_II ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.POISON, 2, false, true }, + [xi.magic.spell.POISON_III ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.POISON, 3, false, true }, + [xi.magic.spell.POISON_IV ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.POISON, 4, false, true }, + [xi.magic.spell.POISON_V ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.POISON, 5, false, true }, + [xi.magic.spell.POISONGA ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.POISON, 1, false, true }, + [xi.magic.spell.POISONGA_II ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.POISON, 2, false, true }, + [xi.magic.spell.POISONGA_III ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.POISON, 3, false, true }, + [xi.magic.spell.POISONGA_IV ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.POISON, 4, false, true }, + [xi.magic.spell.POISONGA_V ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.POISON, 5, false, true }, + [xi.magic.spell.BIO ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.BIO, 2, false, true }, + [xi.magic.spell.BIO_II ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.BIO, 4, false, true }, + [xi.magic.spell.BIO_III ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.BIO, 6, false, true }, + [xi.magic.spell.BIO_IV ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.BIO, 8, false, true }, + [xi.magic.spell.BIO_V ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.BIO, 10, false, true }, + [xi.magic.spell.BURN ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.BURN, 1, false, true }, + [xi.magic.spell.FROST ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.FROST, 1, false, true }, + [xi.magic.spell.CHOKE ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.CHOKE, 1, false, true }, + [xi.magic.spell.RASP ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.RASP, 1, false, true }, + [xi.magic.spell.SHOCK ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.SHOCK, 1, false, true }, + [xi.magic.spell.DROWN ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.DROWN, 1, false, true }, + [xi.magic.spell.RETRACE ] = { xi.action.type.NONE, false, nil, nil, 0, false, false }, + --[xi.magic.spell.ABSORB_ACC ] = { }, + --[xi.magic.spell.ABSORB_ATTRI ] = { }, + [xi.magic.spell.METEOR_II ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.DRAIN ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.DRAIN_II ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.ASPIR ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.ASPIR_II ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.BLAZE_SPIKES ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.BLAZE_SPIKES, 1, false, false }, + [xi.magic.spell.ICE_SPIKES ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.ICE_SPIKES, 1, false, false }, + [xi.magic.spell.SHOCK_SPIKES ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.SHOCK_SPIKES, 1, false, false }, + [xi.magic.spell.STUN ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.STUN, 1, false, true }, + [xi.magic.spell.SLEEP ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.SLEEP_I, 1, false, true }, + [xi.magic.spell.BLIND ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.BLINDNESS, 1, false, true }, + [xi.magic.spell.BREAK ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.PETRIFICATION, 1, false, true }, + [xi.magic.spell.VIRUS ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.PLAGUE, 1, false, true }, + [xi.magic.spell.CURSE ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.CURSE_I, 1, false, true }, + [xi.magic.spell.BIND ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.BIND, 1, false, true }, + [xi.magic.spell.SLEEP_II ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.SLEEP_I, 2, false, true }, + [xi.magic.spell.DISPEL ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.WARP ] = { xi.action.type.NONE, false, nil, nil, 0, false, false }, + [xi.magic.spell.WARP_II ] = { xi.action.type.NONE, false, nil, nil, 0, false, false }, + [xi.magic.spell.ESCAPE ] = { xi.action.type.NONE, false, nil, nil, 0, false, false }, + [xi.magic.spell.TRACTOR ] = { xi.action.type.NONE, false, nil, nil, 0, false, false }, + [xi.magic.spell.TRACTOR_II ] = { xi.action.type.NONE, false, nil, nil, 0, false, false }, + [xi.magic.spell.ABSORB_STR ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.STR_DOWN, 1, false, true }, + [xi.magic.spell.ABSORB_DEX ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.DEX_DOWN, 1, false, true }, + [xi.magic.spell.ABSORB_VIT ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.VIT_DOWN, 1, false, true }, + [xi.magic.spell.ABSORB_AGI ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.AGI_DOWN, 1, false, true }, + [xi.magic.spell.ABSORB_INT ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.INT_DOWN, 1, false, true }, + [xi.magic.spell.ABSORB_MND ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.MND_DOWN, 1, false, true }, + [xi.magic.spell.ABSORB_CHR ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.CHR_DOWN, 1, false, true }, + [xi.magic.spell.SLEEPGA ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.SLEEP_I, 1, false, true }, + [xi.magic.spell.SLEEPGA_II ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.SLEEP_I, 2, false, true }, + --[xi.magic.spell.ABSORB_TP ] = { }, + [xi.magic.spell.BLIND_II ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.BLINDNESS, 3, false, true }, + [xi.magic.spell.DREAD_SPIKES ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.DREAD_SPIKES, 1, false, false }, + [xi.magic.spell.GEOHELIX ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.HYDROHELIX ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.ANEMOHELIX ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.PYROHELIX ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.CRYOHELIX ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.IONOHELIX ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.NOCTOHELIX ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.LUMINOHELIX ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.ADDLE ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.ADDLE, 1, false, true }, + --[xi.magic.spell.KLIMAFORM ] = { }, + [xi.magic.spell.FIRE_SPIRIT ] = { xi.action.type.SUMMONING, true, nil, nil, 0, false, false }, + [xi.magic.spell.ICE_SPIRIT ] = { xi.action.type.SUMMONING, true, nil, nil, 0, false, false }, + [xi.magic.spell.AIR_SPIRIT ] = { xi.action.type.SUMMONING, true, nil, nil, 0, false, false }, + [xi.magic.spell.EARTH_SPIRIT ] = { xi.action.type.SUMMONING, true, nil, nil, 0, false, false }, + [xi.magic.spell.THUNDER_SPIRIT ] = { xi.action.type.SUMMONING, true, nil, nil, 0, false, false }, + [xi.magic.spell.WATER_SPIRIT ] = { xi.action.type.SUMMONING, true, nil, nil, 0, false, false }, + [xi.magic.spell.LIGHT_SPIRIT ] = { xi.action.type.SUMMONING, true, nil, nil, 0, false, false }, + [xi.magic.spell.DARK_SPIRIT ] = { xi.action.type.SUMMONING, true, nil, nil, 0, false, false }, + [xi.magic.spell.CARBUNCLE ] = { xi.action.type.SUMMONING, true, nil, nil, 0, false, false }, + [xi.magic.spell.FENRIR ] = { xi.action.type.SUMMONING, true, nil, nil, 0, false, false }, + [xi.magic.spell.IFRIT ] = { xi.action.type.SUMMONING, true, nil, nil, 0, false, false }, + [xi.magic.spell.TITAN ] = { xi.action.type.SUMMONING, true, nil, nil, 0, false, false }, + [xi.magic.spell.LEVIATHAN ] = { xi.action.type.SUMMONING, true, nil, nil, 0, false, false }, + [xi.magic.spell.GARUDA ] = { xi.action.type.SUMMONING, true, nil, nil, 0, false, false }, + [xi.magic.spell.SHIVA ] = { xi.action.type.SUMMONING, true, nil, nil, 0, false, false }, + [xi.magic.spell.RAMUH ] = { xi.action.type.SUMMONING, true, nil, nil, 0, false, false }, + [xi.magic.spell.DIABOLOS ] = { xi.action.type.SUMMONING, true, nil, nil, 0, false, false }, + [xi.magic.spell.ODIN ] = { xi.action.type.SUMMONING, true, nil, nil, 0, false, false }, + [xi.magic.spell.ALEXANDER ] = { xi.action.type.SUMMONING, true, nil, nil, 0, false, false }, + [xi.magic.spell.CAIT_SITH ] = { xi.action.type.SUMMONING, true, nil, nil, 0, false, false }, + --[xi.magic.spell.ANIMUS_AUGEO ] = { }, + --[xi.magic.spell.ANIMUS_MINUO ] = { }, + [xi.magic.spell.ENLIGHT ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.ENLIGHT, 1, false, false }, + [xi.magic.spell.ENDARK ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.ENDARK, 1, false, false }, + [xi.magic.spell.ENFIRE_II ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.ENFIRE_II, 2, false, false }, + [xi.magic.spell.ENBLIZZARD_II ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.ENBLIZZARD_II, 2, false, false }, + [xi.magic.spell.ENAERO_II ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.ENAERO_II, 2, false, false }, + [xi.magic.spell.ENSTONE_II ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.ENSTONE_II, 2, false, false }, + [xi.magic.spell.ENTHUNDER_II ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.ENTHUNDER_II, 2, false, false }, + [xi.magic.spell.ENWATER_II ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.ENWATER_II, 2, false, false }, + [xi.magic.spell.MONOMI_ICHI ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.SNEAK, 1, false, false }, + [xi.magic.spell.AISHA_ICHI ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.ATTACK_DOWN, 1, false, true }, + [xi.magic.spell.KATON_ICHI ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.KATON_NI ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.KATON_SAN ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.HYOTON_ICHI ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.HYOTON_NI ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.HYOTON_SAN ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.HUTON_ICHI ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.HUTON_NI ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.HUTON_SAN ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.DOTON_ICHI ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.DOTON_NI ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.DOTON_SAN ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.RAITON_ICHI ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.RAITON_NI ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.RAITON_SAN ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.SUITON_ICHI ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.SUITON_NI ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.SUITON_SAN ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.UTSUSEMI_ICHI ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.COPY_IMAGE, 1, false, false }, + [xi.magic.spell.UTSUSEMI_NI ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.COPY_IMAGE, 1, false, false }, + [xi.magic.spell.UTSUSEMI_SAN ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.COPY_IMAGE, 1, false, false }, + [xi.magic.spell.JUBAKU_ICHI ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.PARALYSIS, 1, false, true }, + [xi.magic.spell.JUBAKU_NI ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.PARALYSIS, 2, false, true }, + [xi.magic.spell.JUBAKU_SAN ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.PARALYSIS, 3, false, true }, + [xi.magic.spell.HOJO_ICHI ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.SLOW, 3, false, true }, + [xi.magic.spell.HOJO_NI ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.SLOW, 4, false, true }, + [xi.magic.spell.HOJO_SAN ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.SLOW, 7, false, true }, + [xi.magic.spell.KURAYAMI_ICHI ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.BLINDNESS, 1, false, true }, + [xi.magic.spell.KURAYAMI_NI ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.BLINDNESS, 2, false, true }, + [xi.magic.spell.KURAYAMI_SAN ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.BLINDNESS, 3, false, true }, + [xi.magic.spell.DOKUMORI_ICHI ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.POISON, 1, false, true }, + [xi.magic.spell.DOKUMORI_NI ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.POISON, 2, false, true }, + [xi.magic.spell.DOKUMORI_SAN ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.POISON, 3, false, true }, + [xi.magic.spell.TONKO_ICHI ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.INVISIBLE, 1, false, false }, + [xi.magic.spell.TONKO_NI ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.INVISIBLE, 2, false, false }, + [xi.magic.spell.SIREN ] = { xi.action.type.SUMMONING, true, nil, nil, 0, false, false }, + --[xi.magic.spell.PARALYGA ] = { }, + --[xi.magic.spell.SLOWGA ] = { }, + [xi.magic.spell.HASTEGA ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.HASTE, 5, true, false }, + --[xi.magic.spell.SILENCEGA ] = { }, + [xi.magic.spell.DISPELGA ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, nil, 0, false, true }, + --[xi.magic.spell.BLINDGA ] = { }, + --[xi.magic.spell.BINDGA ] = { }, + + --[xi.magic.spell.BREAKGA ] = { }, + --[xi.magic.spell.GRAVIGA ] = { }, + --[xi.magic.spell.DEATH ] = { }, + [xi.magic.spell.FOE_REQUIEM ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.REQUIEM, 1, false, true }, + [xi.magic.spell.FOE_REQUIEM_II ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.REQUIEM, 2, false, true }, + [xi.magic.spell.FOE_REQUIEM_III ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.REQUIEM, 3, false, true }, + [xi.magic.spell.FOE_REQUIEM_IV ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.REQUIEM, 4, false, true }, + [xi.magic.spell.FOE_REQUIEM_V ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.REQUIEM, 5, false, true }, + [xi.magic.spell.FOE_REQUIEM_VI ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.REQUIEM, 6, false, true }, + [xi.magic.spell.FOE_REQUIEM_VII ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.REQUIEM, 7, false, true }, + [xi.magic.spell.FOE_REQUIEM_VIII ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.REQUIEM, 8, false, true }, + [xi.magic.spell.HORDE_LULLABY ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.SLEEP_I, 1, false, true }, + [xi.magic.spell.HORDE_LULLABY_II ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.SLEEP_I, 1, false, true }, + [xi.magic.spell.ARMYS_PAEON ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.PAEON, 1, true, false }, + [xi.magic.spell.ARMYS_PAEON_II ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.PAEON, 2, true, false }, + [xi.magic.spell.ARMYS_PAEON_III ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.PAEON, 3, true, false }, + [xi.magic.spell.ARMYS_PAEON_IV ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.PAEON, 4, true, false }, + [xi.magic.spell.ARMYS_PAEON_V ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.PAEON, 5, true, false }, + [xi.magic.spell.ARMYS_PAEON_VI ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.PAEON, 6, true, false }, + [xi.magic.spell.ARMYS_PAEON_VII ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.PAEON, 7, true, false }, + [xi.magic.spell.ARMYS_PAEON_VIII ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.PAEON, 8, true, false }, + [xi.magic.spell.MAGES_BALLAD ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.BALLAD, 1, true, false }, + [xi.magic.spell.MAGES_BALLAD_II ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.BALLAD, 2, true, false }, + [xi.magic.spell.MAGES_BALLAD_III ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.BALLAD, 3, true, false }, + [xi.magic.spell.KNIGHTS_MINNE ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.MINNE, 1, true, false }, + [xi.magic.spell.KNIGHTS_MINNE_II ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.MINNE, 2, true, false }, + [xi.magic.spell.KNIGHTS_MINNE_III ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.MINNE, 3, true, false }, + [xi.magic.spell.KNIGHTS_MINNE_IV ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.MINNE, 4, true, false }, + [xi.magic.spell.KNIGHTS_MINNE_V ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.MINNE, 5, true, false }, + [xi.magic.spell.VALOR_MINUET ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.MINUET, 1, true, false }, + [xi.magic.spell.VALOR_MINUET_II ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.MINUET, 2, true, false }, + [xi.magic.spell.VALOR_MINUET_III ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.MINUET, 3, true, false }, + [xi.magic.spell.VALOR_MINUET_IV ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.MINUET, 4, true, false }, + [xi.magic.spell.VALOR_MINUET_V ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.MINUET, 5, true, false }, + [xi.magic.spell.SWORD_MADRIGAL ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.MADRIGAL, 1, true, false }, + [xi.magic.spell.BLADE_MADRIGAL ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.MADRIGAL, 2, true, false }, + [xi.magic.spell.HUNTERS_PRELUDE ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.PRELUDE, 1, true, false }, + [xi.magic.spell.ARCHERS_PRELUDE ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.PRELUDE, 2, true, false }, + [xi.magic.spell.SHEEPFOE_MAMBO ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.MAMBO, 1, true, false }, + [xi.magic.spell.DRAGONFOE_MAMBO ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.MAMBO, 2, true, false }, + [xi.magic.spell.FOWL_AUBADE ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.AUBADE, 1, true, false }, + [xi.magic.spell.HERB_PASTORAL ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.PASTORAL, 1, true, false }, + [xi.magic.spell.CHOCOBO_HUM ] = { xi.action.type.NONE, false, nil, nil, 0, false, false }, -- Unused. + [xi.magic.spell.SHINING_FANTASIA ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.FANTASIA, 1, true, false }, + [xi.magic.spell.SCOPS_OPERETTA ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.OPERETTA, 1, true, false }, + [xi.magic.spell.PUPPETS_OPERETTA ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.OPERETTA, 2, true, false }, + [xi.magic.spell.JESTERS_OPERETTA ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.OPERETTA, 3, true, false }, + [xi.magic.spell.GOLD_CAPRICCIO ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.CAPRICCIO, 1, true, false }, + [xi.magic.spell.DEVOTEE_SERENADE ] = { xi.action.type.NONE, false, nil, nil, 0, false, false }, -- Unused. + [xi.magic.spell.WARDING_ROUND ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.ROUND, 1, true, false }, + [xi.magic.spell.GOBLIN_GAVOTTE ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.GAVOTTE, 1, true, false }, + [xi.magic.spell.CACTUAR_FUGUE ] = { xi.action.type.NONE, false, nil, nil, 0, false, false }, -- Unused. + [xi.magic.spell.HONOR_MARCH ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.MARCH, 3, true, false }, + [xi.magic.spell.PROTECTED_ARIA ] = { xi.action.type.NONE, false, nil, nil, 0, false, false }, -- Unused. + [xi.magic.spell.ADVANCING_MARCH ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.MARCH, 1, true, false }, + [xi.magic.spell.VICTORY_MARCH ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.MARCH, 2, true, false }, + [xi.magic.spell.BATTLEFIELD_ELEGY ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.ELEGY, 1, false, true }, + [xi.magic.spell.CARNAGE_ELEGY ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.ELEGY, 2, false, true }, + [xi.magic.spell.MASSACRE_ELEGY ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.ELEGY, 3, false, true }, + [xi.magic.spell.SINEWY_ETUDE ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.ETUDE, 1, true, false }, + [xi.magic.spell.DEXTROUS_ETUDE ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.ETUDE, 1, true, false }, + [xi.magic.spell.VIVACIOUS_ETUDE ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.ETUDE, 1, true, false }, + [xi.magic.spell.QUICK_ETUDE ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.ETUDE, 1, true, false }, + [xi.magic.spell.LEARNED_ETUDE ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.ETUDE, 1, true, false }, + [xi.magic.spell.SPIRITED_ETUDE ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.ETUDE, 1, true, false }, + [xi.magic.spell.ENCHANTING_ETUDE ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.ETUDE, 1, true, false }, + [xi.magic.spell.HERCULEAN_ETUDE ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.ETUDE, 2, true, false }, + [xi.magic.spell.UNCANNY_ETUDE ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.ETUDE, 2, true, false }, + [xi.magic.spell.VITAL_ETUDE ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.ETUDE, 2, true, false }, + [xi.magic.spell.SWIFT_ETUDE ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.ETUDE, 2, true, false }, + [xi.magic.spell.SAGE_ETUDE ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.ETUDE, 2, true, false }, + [xi.magic.spell.LOGICAL_ETUDE ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.ETUDE, 2, true, false }, + [xi.magic.spell.BEWITCHING_ETUDE ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.ETUDE, 2, true, false }, + [xi.magic.spell.FIRE_CAROL ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.CAROL, 1, true, false }, + [xi.magic.spell.ICE_CAROL ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.CAROL, 1, true, false }, + [xi.magic.spell.WIND_CAROL ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.CAROL, 1, true, false }, + [xi.magic.spell.EARTH_CAROL ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.CAROL, 1, true, false }, + [xi.magic.spell.LIGHTNING_CAROL ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.CAROL, 1, true, false }, + [xi.magic.spell.WATER_CAROL ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.CAROL, 1, true, false }, + [xi.magic.spell.LIGHT_CAROL ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.CAROL, 1, true, false }, + [xi.magic.spell.DARK_CAROL ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.CAROL, 1, true, false }, + [xi.magic.spell.FIRE_CAROL_II ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.CAROL, 2, true, false }, + [xi.magic.spell.ICE_CAROL_II ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.CAROL, 2, true, false }, + [xi.magic.spell.WIND_CAROL_II ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.CAROL, 2, true, false }, + [xi.magic.spell.EARTH_CAROL_II ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.CAROL, 2, true, false }, + [xi.magic.spell.LIGHTNING_CAROL_II ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.CAROL, 2, true, false }, + [xi.magic.spell.WATER_CAROL_II ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.CAROL, 2, true, false }, + [xi.magic.spell.LIGHT_CAROL_II ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.CAROL, 2, true, false }, + [xi.magic.spell.DARK_CAROL_II ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.CAROL, 2, true, false }, + [xi.magic.spell.FIRE_THRENODY ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.THRENODY, 1, false, true }, + [xi.magic.spell.ICE_THRENODY ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.THRENODY, 1, false, true }, + [xi.magic.spell.WIND_THRENODY ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.THRENODY, 1, false, true }, + [xi.magic.spell.EARTH_THRENODY ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.THRENODY, 1, false, true }, + [xi.magic.spell.LIGHTNING_THRENODY ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.THRENODY, 1, false, true }, + [xi.magic.spell.WATER_THRENODY ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.THRENODY, 1, false, true }, + [xi.magic.spell.LIGHT_THRENODY ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.THRENODY, 1, false, true }, + [xi.magic.spell.DARK_THRENODY ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.THRENODY, 1, false, true }, + [xi.magic.spell.MAGIC_FINALE ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.FOE_LULLABY ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.SLEEP_I, 1, false, true }, + [xi.magic.spell.GODDESSS_HYMNUS ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.HYMNUS, 1, true, false }, + [xi.magic.spell.CHOCOBO_MAZURKA ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.MAZURKA, 1, true, false }, + [xi.magic.spell.MAIDENS_VIRELAI ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.CHARM_I, 1, false, true }, + [xi.magic.spell.RAPTOR_MAZURKA ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.MAZURKA, 1, true, false }, + [xi.magic.spell.FOE_SIRVENTE ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.SIRVENTE, 1, true, false }, + [xi.magic.spell.ADVENTURERS_DIRGE ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.DIRGE, 1, true, false }, + [xi.magic.spell.SENTINELS_SCHERZO ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.SCHERZO, 1, true, false }, + [xi.magic.spell.FOE_LULLABY_II ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.SLEEP_I, 1, false, true }, + [xi.magic.spell.PINING_NOCTURNE ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.NOCTURNE, 1, false, true }, + [xi.magic.spell.REFRESH_II ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.REFRESH, 2, true, false }, + [xi.magic.spell.CURA_II ] = { xi.action.type.HEALING_FORCE_SELF, true, nil, nil, 0, true, false }, + [xi.magic.spell.CURA_III ] = { xi.action.type.HEALING_FORCE_SELF, true, nil, nil, 0, true, false }, + --[xi.magic.spell.CRUSADE ] = { }, + [xi.magic.spell.REGEN_IV ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.REGEN, 4, true, false }, + --[xi.magic.spell.EMBRAVA ] = { }, + --[xi.magic.spell.BOOST_STR ] = { }, + --[xi.magic.spell.BOOST_DEX ] = { }, + --[xi.magic.spell.BOOST_VIT ] = { }, + --[xi.magic.spell.BOOST_AGI ] = { }, + --[xi.magic.spell.BOOST_INT ] = { }, + --[xi.magic.spell.BOOST_MND ] = { }, + --[xi.magic.spell.BOOST_CHR ] = { }, + --[xi.magic.spell.GAIN_STR ] = { }, + --[xi.magic.spell.GAIN_DEX ] = { }, + --[xi.magic.spell.GAIN_VIT ] = { }, + --[xi.magic.spell.GAIN_AGI ] = { }, + --[xi.magic.spell.GAIN_INT ] = { }, + --[xi.magic.spell.GAIN_MND ] = { }, + --[xi.magic.spell.GAIN_CHR ] = { }, + --[xi.magic.spell.TEMPER ] = { }, + [xi.magic.spell.ARISE ] = { xi.action.type.HEALING_EFFECT, true, xi.effect.WEAKNESS, nil, 0, true, false }, + --[xi.magic.spell.ADLOQUIUM ] = { }, + [xi.magic.spell.FIRAJA ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.BLIZZAJA ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.AEROJA ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.STONEJA ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.THUNDAJA ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.WATERJA ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.KAUSTRA ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.IMPACT ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.REGEN_V ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.REGEN, 5, true, false }, + [xi.magic.spell.GEKKA_ICHI ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.ENMITY_BOOST, 1, false, false }, + [xi.magic.spell.YAIN_ICHI ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.PAX, 1, false, false }, + [xi.magic.spell.MYOSHU_ICHI ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.SUBTLE_BLOW_PLUS, 1, false, false }, + [xi.magic.spell.YURIN_ICHI ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.INHIBIT_TP, 1, false, true }, + [xi.magic.spell.KAKKA_ICHI ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.STORE_TP, 1, false, false }, + [xi.magic.spell.MIGAWARI_ICHI ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.MIGAWARI, 1, false, false }, + [xi.magic.spell.HASTE_II ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.HASTE, 6, true, false }, + + --[xi.magic.spell.VENOM_SHELL ] = { }, + + --[xi.magic.spell.MAELSTROM ] = { }, + + --[xi.magic.spell.METALLIC_BODY ] = { }, + + --[xi.magic.spell.SCREWDRIVER ] = { }, + + --[xi.magic.spell.MP_DRAINKISS ] = { }, + --[xi.magic.spell.DEATH_RAY ] = { }, + + --[xi.magic.spell.SANDSPIN ] = { }, + + --[xi.magic.spell.SMITE_OF_RAGE ] = { }, + + --[xi.magic.spell.BLUDGEON ] = { }, + --[xi.magic.spell.REFUELING ] = { }, + --[xi.magic.spell.ICE_BREAK ] = { }, + --[xi.magic.spell.BLITZSTRAHL ] = { }, + --[xi.magic.spell.SELF_DESTRUCT ] = { }, + --[xi.magic.spell.MYSTERIOUS_LIGHT ] = { }, + --[xi.magic.spell.COLD_WAVE ] = { }, + --[xi.magic.spell.POISON_BREATH ] = { }, + --[xi.magic.spell.STINKING_GAS ] = { }, + --[xi.magic.spell.MEMENTO_MORI ] = { }, + --[xi.magic.spell.TERROR_TOUCH ] = { }, + --[xi.magic.spell.SPINAL_CLEAVE ] = { }, + --[xi.magic.spell.BLOOD_SABER ] = { }, + --[xi.magic.spell.DIGEST ] = { }, + --[xi.magic.spell.MANDIBULAR_BITE ] = { }, + --[xi.magic.spell.CURSED_SPHERE ] = { }, + --[xi.magic.spell.SICKLE_SLASH ] = { }, + + --[xi.magic.spell.COCOON ] = { }, + --[xi.magic.spell.FILAMENTED_HOLD ] = { }, + --[xi.magic.spell.POLLEN ] = { }, + + --[xi.magic.spell.POWER_ATTACK ] = { }, + + --[xi.magic.spell.DEATH_SCISSORS ] = { }, + --[xi.magic.spell.MAGNETITE_CLOUD ] = { }, + + --[xi.magic.spell.EYES_ON_ME ] = { }, + + --[xi.magic.spell.FRENETIC_RIP ] = { }, + --[xi.magic.spell.FRIGHTFUL_ROAR ] = { }, + + --[xi.magic.spell.HECATOMB_WAVE ] = { }, + --[xi.magic.spell.BODY_SLAM ] = { }, + --[xi.magic.spell.RADIANT_BREATH ] = { }, + + --[xi.magic.spell.HELLDIVE ] = { }, + + --[xi.magic.spell.JET_STREAM ] = { }, + --[xi.magic.spell.BLOOD_DRAIN ] = { }, + + --[xi.magic.spell.SOUND_BLAST ] = { }, + --[xi.magic.spell.FEATHER_TICKLE ] = { }, + --[xi.magic.spell.FEATHER_BARRIER ] = { }, + --[xi.magic.spell.JETTATURA ] = { }, + --[xi.magic.spell.YAWN ] = { }, + --[xi.magic.spell.FOOT_KICK ] = { }, + --[xi.magic.spell.WILD_CARROT ] = { }, + --[xi.magic.spell.VORACIOUS_TRUNK ] = { }, + + --[xi.magic.spell.HEALING_BREEZE ] = { }, + --[xi.magic.spell.CHAOTIC_EYE ] = { }, + + --[xi.magic.spell.SHEEP_SONG ] = { }, + --[xi.magic.spell.RAM_CHARGE ] = { }, + + --[xi.magic.spell.CLAW_CYCLONE ] = { }, + --[xi.magic.spell.LOWING ] = { }, + --[xi.magic.spell.DIMENSIONAL_DEATH ] = { }, + + --[xi.magic.spell.HEAT_BREATH ] = { }, + --[xi.magic.spell.BLANK_GAZE ] = { }, + --[xi.magic.spell.MAGIC_FRUIT ] = { }, + --[xi.magic.spell.UPPERCUT ] = { }, + --[xi.magic.spell.THOUSAND_NEEDLES ] = { }, + --[xi.magic.spell.PINECONE_BOMB ] = { }, + --[xi.magic.spell.SPROUT_SMACK ] = { }, + --[xi.magic.spell.SOPORIFIC ] = { }, + --[xi.magic.spell.QUEASYSHROOM ] = { }, + + --[xi.magic.spell.WILD_OATS ] = { }, + --[xi.magic.spell.BAD_BREATH ] = { }, + --[xi.magic.spell.GEIST_WALL ] = { }, + --[xi.magic.spell.AWFUL_EYE ] = { }, + + --[xi.magic.spell.FROST_BREATH ] = { }, + + --[xi.magic.spell.INFRASONICS ] = { }, + --[xi.magic.spell.DISSEVERMENT ] = { }, + --[xi.magic.spell.ACTINIC_BURST ] = { }, + --[xi.magic.spell.REACTOR_COOL ] = { }, + --[xi.magic.spell.SALINE_COAT ] = { }, + --[xi.magic.spell.PLASMA_CHARGE ] = { }, + --[xi.magic.spell.TEMPORAL_SHIFT ] = { }, + --[xi.magic.spell.VERTICAL_CLEAVE ] = { }, + --[xi.magic.spell.BLASTBOMB ] = { }, + + --[xi.magic.spell.BATTLE_DANCE ] = { }, + --[xi.magic.spell.SANDSPRAY ] = { }, + --[xi.magic.spell.GRAND_SLAM ] = { }, + --[xi.magic.spell.HEAD_BUTT ] = { }, + + --[xi.magic.spell.BOMB_TOSS ] = { }, + + --[xi.magic.spell.FRYPAN ] = { }, + --[xi.magic.spell.FLYING_HIP_PRESS ] = { }, + + --[xi.magic.spell.HYDRO_SHOT ] = { }, + --[xi.magic.spell.DIAMONDHIDE ] = { }, + --[xi.magic.spell.ENERVATION ] = { }, + --[xi.magic.spell.LIGHT_OF_PENANCE ] = { }, + + --[xi.magic.spell.WARM_UP ] = { }, + --[xi.magic.spell.FIRESPIT ] = { }, + --[xi.magic.spell.FEATHER_STORM ] = { }, + + --[xi.magic.spell.TAIL_SLAP ] = { }, + --[xi.magic.spell.HYSTERIC_BARRAGE ] = { }, + --[xi.magic.spell.AMPLIFICATION ] = { }, + --[xi.magic.spell.CANNONBALL ] = { }, + --[xi.magic.spell.MIND_BLAST ] = { }, + --[xi.magic.spell.EXUVIATION ] = { }, + --[xi.magic.spell.MAGIC_HAMMER ] = { }, + --[xi.magic.spell.ZEPHYR_MANTLE ] = { }, + --[xi.magic.spell.REGURGITATION ] = { }, + + --[xi.magic.spell.SEEDSPRAY ] = { }, + --[xi.magic.spell.CORROSIVE_OOZE ] = { }, + --[xi.magic.spell.SPIRAL_SPIN ] = { }, + --[xi.magic.spell.ASURAN_CLAWS ] = { }, + --[xi.magic.spell.SUB_ZERO_SMASH ] = { }, + --[xi.magic.spell.TRIUMPHANT_ROAR ] = { }, + --[xi.magic.spell.ACRID_STREAM ] = { }, + --[xi.magic.spell.BLAZING_BOUND ] = { }, + --[xi.magic.spell.PLENILUNE_EMBRACE ] = { }, + --[xi.magic.spell.DEMORALIZING_ROAR ] = { }, + --[xi.magic.spell.CIMICINE_DISCHARGE ] = { }, + --[xi.magic.spell.ANIMATING_WAIL ] = { }, + --[xi.magic.spell.BATTERY_CHARGE ] = { }, + --[xi.magic.spell.LEAFSTORM ] = { }, + --[xi.magic.spell.REGENERATION ] = { }, + --[xi.magic.spell.FINAL_STING ] = { }, + --[xi.magic.spell.GOBLIN_RUSH ] = { }, + --[xi.magic.spell.VANITY_DIVE ] = { }, + --[xi.magic.spell.MAGIC_BARRIER ] = { }, + --[xi.magic.spell.WHIRL_OF_RAGE ] = { }, + --[xi.magic.spell.BENTHIC_TYPHOON ] = { }, + --[xi.magic.spell.AURORAL_DRAPE ] = { }, + --[xi.magic.spell.OSMOSIS ] = { }, + --[xi.magic.spell.QUADRATIC_CONTINUUM ] = { }, + --[xi.magic.spell.FANTOD ] = { }, + --[xi.magic.spell.THERMAL_PULSE ] = { }, + + --[xi.magic.spell.EMPTY_THRASH ] = { }, + --[xi.magic.spell.DREAM_FLOWER ] = { }, + --[xi.magic.spell.OCCULTATION ] = { }, + --[xi.magic.spell.CHARGED_WHISKER ] = { }, + --[xi.magic.spell.WINDS_OF_PROMYVION ] = { }, + --[xi.magic.spell.DELTA_THRUST ] = { }, + --[xi.magic.spell.EVRYONES_GRUDGE ] = { }, + --[xi.magic.spell.REAVING_WIND ] = { }, + --[xi.magic.spell.BARRIER_TUSK ] = { }, + --[xi.magic.spell.MORTAL_RAY ] = { }, + --[xi.magic.spell.WATER_BOMB ] = { }, + --[xi.magic.spell.HEAVY_STRIKE ] = { }, + --[xi.magic.spell.DARK_ORB ] = { }, + --[xi.magic.spell.WHITE_WIND ] = { }, + + --[xi.magic.spell.SUDDEN_LUNGE ] = { }, + --[xi.magic.spell.QUADRASTRIKE ] = { }, + --[xi.magic.spell.VAPOR_SPRAY ] = { }, + --[xi.magic.spell.THUNDER_BREATH ] = { }, + --[xi.magic.spell.ORCISH_COUNTERSTANCE ] = { }, + --[xi.magic.spell.AMORPHIC_SPIKES ] = { }, + --[xi.magic.spell.WIND_BREATH ] = { }, + --[xi.magic.spell.BARBED_CRESCENT ] = { }, + --[xi.magic.spell.NATURES_MEDITATION ] = { }, + --[xi.magic.spell.TEMPESTUOUS_UPHEAVAL ] = { }, + --[xi.magic.spell.RENDING_DELUGE ] = { }, + --[xi.magic.spell.EMBALMING_EARTH ] = { }, + --[xi.magic.spell.PARALYZING_TRIAD ] = { }, + --[xi.magic.spell.FOUL_WATERS ] = { }, + --[xi.magic.spell.GLUTINOUS_DART ] = { }, + --[xi.magic.spell.RETINAL_GLARE ] = { }, + --[xi.magic.spell.SUBDUCTION ] = { }, + --[xi.magic.spell.THRASHING_ASSAULT ] = { }, + --[xi.magic.spell.ERRATIC_FLUTTER ] = { }, + --[xi.magic.spell.RESTORAL ] = { }, + --[xi.magic.spell.RAIL_CANNON ] = { }, + --[xi.magic.spell.DIFFUSION_RAY ] = { }, + --[xi.magic.spell.SINKER_DRILL ] = { }, + --[xi.magic.spell.MOLTING_PLUMAGE ] = { }, + --[xi.magic.spell.NECTAROUS_DELUGE ] = { }, + --[xi.magic.spell.SWEEPING_GOUGE ] = { }, + --[xi.magic.spell.ATRAMENTOUS_LIBATIONS] = { }, + --[xi.magic.spell.SEARING_TEMPEST ] = { }, + --[xi.magic.spell.SPECTRAL_FLOE ] = { }, + --[xi.magic.spell.ANVIL_LIGHTNING ] = { }, + --[xi.magic.spell.ENTOMB ] = { }, + --[xi.magic.spell.SAURIAN_SLIDE ] = { }, + --[xi.magic.spell.PALLING_SALVO ] = { }, + --[xi.magic.spell.BLINDING_FULGOR ] = { }, + --[xi.magic.spell.SCOURING_SPATE ] = { }, + --[xi.magic.spell.SILENT_STORM ] = { }, + --[xi.magic.spell.TENEBRAL_CRUSH ] = { }, + + --[xi.magic.spell.THUNDERBOLT ] = { }, + --[xi.magic.spell.HARDEN_SHELL ] = { }, + --[xi.magic.spell.ABSOLUTE_TERROR ] = { }, + --[xi.magic.spell.GATES_OF_HADES ] = { }, + --[xi.magic.spell.TOURBILLION ] = { }, + --[xi.magic.spell.PYRIC_BULWARK ] = { }, + --[xi.magic.spell.BILGESTORM ] = { }, + --[xi.magic.spell.BLOODRAKE ] = { }, + --[xi.magic.spell.DRONING_WHIRLWIND ] = { }, + --[xi.magic.spell.CARCHARIAN_VERVE ] = { }, + --[xi.magic.spell.BLISTERING_ROAR ] = { }, + --[xi.magic.spell.UPROOT ] = { }, + --[xi.magic.spell.CRASHING_THUNDER ] = { }, + --[xi.magic.spell.POLAR_ROAR ] = { }, + --[xi.magic.spell.MIGHTY_GUARD ] = { }, + --[xi.magic.spell.CRUEL_JOKE ] = { }, + --[xi.magic.spell.CESSPOOL ] = { }, + --[xi.magic.spell.TEARING_GUST ] = { }, + + --[xi.magic.spell.INDI_REGEN ] = { }, + --[xi.magic.spell.INDI_POISON ] = { }, + --[xi.magic.spell.INDI_REFRESH ] = { }, + --[xi.magic.spell.INDI_HASTE ] = { }, + --[xi.magic.spell.INDI_STR ] = { }, + --[xi.magic.spell.INDI_DEX ] = { }, + --[xi.magic.spell.INDI_VIT ] = { }, + --[xi.magic.spell.INDI_AGI ] = { }, + --[xi.magic.spell.INDI_INT ] = { }, + --[xi.magic.spell.INDI_MND ] = { }, + --[xi.magic.spell.INDI_CHR ] = { }, + --[xi.magic.spell.INDI_FURY ] = { }, + --[xi.magic.spell.INDI_BARRIER ] = { }, + --[xi.magic.spell.INDI_ACUMEN ] = { }, + --[xi.magic.spell.INDI_FEND ] = { }, + --[xi.magic.spell.INDI_PRECISION ] = { }, + --[xi.magic.spell.INDI_VOIDANCE ] = { }, + --[xi.magic.spell.INDI_FOCUS ] = { }, + --[xi.magic.spell.INDI_ATTUNEMENT ] = { }, + --[xi.magic.spell.INDI_WILT ] = { }, + --[xi.magic.spell.INDI_FRAILTY ] = { }, + --[xi.magic.spell.INDI_FADE ] = { }, + --[xi.magic.spell.INDI_MALAISE ] = { }, + --[xi.magic.spell.INDI_SLIP ] = { }, + --[xi.magic.spell.INDI_TORPOR ] = { }, + --[xi.magic.spell.INDI_VEX ] = { }, + --[xi.magic.spell.INDI_LANGUOR ] = { }, + --[xi.magic.spell.INDI_SLOW ] = { }, + --[xi.magic.spell.INDI_PARALYSIS ] = { }, + --[xi.magic.spell.INDI_GRAVITY ] = { }, + --[xi.magic.spell.GEO_REGEN ] = { }, + --[xi.magic.spell.GEO_POISON ] = { }, + --[xi.magic.spell.GEO_REFRESH ] = { }, + --[xi.magic.spell.GEO_HASTE ] = { }, + --[xi.magic.spell.GEO_STR ] = { }, + --[xi.magic.spell.GEO_DEX ] = { }, + --[xi.magic.spell.GEO_VIT ] = { }, + --[xi.magic.spell.GEO_AGI ] = { }, + --[xi.magic.spell.GEO_INT ] = { }, + --[xi.magic.spell.GEO_MND ] = { }, + --[xi.magic.spell.GEO_CHR ] = { }, + --[xi.magic.spell.GEO_FURY ] = { }, + --[xi.magic.spell.GEO_BARRIER ] = { }, + --[xi.magic.spell.GEO_ACUMEN ] = { }, + --[xi.magic.spell.GEO_FEND ] = { }, + --[xi.magic.spell.GEO_PRECISION ] = { }, + --[xi.magic.spell.GEO_VOIDANCE ] = { }, + --[xi.magic.spell.GEO_FOCUS ] = { }, + --[xi.magic.spell.GEO_ATTUNEMENT ] = { }, + --[xi.magic.spell.GEO_WILT ] = { }, + --[xi.magic.spell.GEO_FRAILTY ] = { }, + --[xi.magic.spell.GEO_FADE ] = { }, + --[xi.magic.spell.GEO_MALAISE ] = { }, + --[xi.magic.spell.GEO_SLIP ] = { }, + --[xi.magic.spell.GEO_TORPOR ] = { }, + --[xi.magic.spell.GEO_VEX ] = { }, + --[xi.magic.spell.GEO_LANGUOR ] = { }, + --[xi.magic.spell.GEO_SLOW ] = { }, + --[xi.magic.spell.GEO_PARALYSIS ] = { }, + --[xi.magic.spell.GEO_GRAVITY ] = { }, + [xi.magic.spell.FIRA ] = { xi.action.type.DAMAGE_FORCE_SELF, false, nil, nil, 0, false, true }, + [xi.magic.spell.FIRA_II ] = { xi.action.type.DAMAGE_FORCE_SELF, false, nil, nil, 0, false, true }, + [xi.magic.spell.BLIZZARA ] = { xi.action.type.DAMAGE_FORCE_SELF, false, nil, nil, 0, false, true }, + [xi.magic.spell.BLIZZARA_II ] = { xi.action.type.DAMAGE_FORCE_SELF, false, nil, nil, 0, false, true }, + [xi.magic.spell.AERA ] = { xi.action.type.DAMAGE_FORCE_SELF, false, nil, nil, 0, false, true }, + [xi.magic.spell.AERA_II ] = { xi.action.type.DAMAGE_FORCE_SELF, false, nil, nil, 0, false, true }, + [xi.magic.spell.STONERA ] = { xi.action.type.DAMAGE_FORCE_SELF, false, nil, nil, 0, false, true }, + [xi.magic.spell.STONERA_II ] = { xi.action.type.DAMAGE_FORCE_SELF, false, nil, nil, 0, false, true }, + [xi.magic.spell.THUNDARA ] = { xi.action.type.DAMAGE_FORCE_SELF, false, nil, nil, 0, false, true }, + [xi.magic.spell.THUNDARA_II ] = { xi.action.type.DAMAGE_FORCE_SELF, false, nil, nil, 0, false, true }, + [xi.magic.spell.WATERA ] = { xi.action.type.DAMAGE_FORCE_SELF, false, nil, nil, 0, false, true }, + [xi.magic.spell.WATERA_II ] = { xi.action.type.DAMAGE_FORCE_SELF, false, nil, nil, 0, false, true }, + --[xi.magic.spell.FOIL ] = { }, + [xi.magic.spell.DISTRACT ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.EVASION_DOWN, 1, false, true }, + [xi.magic.spell.DISTRACT_II ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.EVASION_DOWN, 2, false, true }, + [xi.magic.spell.FRAZZLE ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.MAGIC_EVASION_DOWN, 1, false, true }, + [xi.magic.spell.FRAZZLE_II ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.MAGIC_EVASION_DOWN, 2, false, true }, + [xi.magic.spell.FLURRY ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.FLURRY_II, 1, true, false }, + [xi.magic.spell.FLURRY_II ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.FLURRY_II, 2, true, false }, + [xi.magic.spell.ATOMOS ] = { xi.action.type.SUMMONING, true, nil, nil, 0, false, false }, + [xi.magic.spell.RERAISE_IV ] = { xi.action.type.ENHANCING_FORCE_SELF, true, nil, xi.effect.RERAISE, 4, false, false }, + [xi.magic.spell.FIRE_VI ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.BLIZZARD_VI ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.AERO_VI ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.STONE_VI ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.THUNDER_VI ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.WATER_VI ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + --[xi.magic.spell.ENLIGHT_II ] = { }, -- Not coded. + --[xi.magic.spell.ENDARK_II ] = { }, -- Not coded. + [xi.magic.spell.SANDSTORM_II ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.SANDSTORM_II, 1, true, false }, + [xi.magic.spell.RAINSTORM_II ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.RAINSTORM_II, 1, true, false }, + [xi.magic.spell.WINDSTORM_II ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.WINDSTORM_II, 1, true, false }, + [xi.magic.spell.FIRESTORM_II ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.FIRESTORM_II, 1, true, false }, + [xi.magic.spell.HAILSTORM_II ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.HAILSTORM_II, 1, true, false }, + [xi.magic.spell.THUNDERSTORM_II ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.THUNDERSTORM_II, 1, true, false }, + [xi.magic.spell.VOIDSTORM_II ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.VOIDSTORM_II, 1, true, false }, + [xi.magic.spell.AURORASTORM_II ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.AURORASTORM_II, 1, true, false }, + [xi.magic.spell.FIRA_III ] = { xi.action.type.DAMAGE_FORCE_SELF, false, nil, nil, 0, false, true }, + [xi.magic.spell.BLIZZARA_III ] = { xi.action.type.DAMAGE_FORCE_SELF, false, nil, nil, 0, false, true }, + [xi.magic.spell.AERA_III ] = { xi.action.type.DAMAGE_FORCE_SELF, false, nil, nil, 0, false, true }, + [xi.magic.spell.STONERA_III ] = { xi.action.type.DAMAGE_FORCE_SELF, false, nil, nil, 0, false, true }, + [xi.magic.spell.THUNDARA_III ] = { xi.action.type.DAMAGE_FORCE_SELF, false, nil, nil, 0, false, true }, + [xi.magic.spell.WATERA_III ] = { xi.action.type.DAMAGE_FORCE_SELF, false, nil, nil, 0, false, true }, + [xi.magic.spell.FIRE_THRENODY_II ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.THRENODY, 2, false, true }, + [xi.magic.spell.ICE_THRENODY_II ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.THRENODY, 2, false, true }, + [xi.magic.spell.WIND_THRENODY_II ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.THRENODY, 2, false, true }, + [xi.magic.spell.EARTH_THRENODY_II ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.THRENODY, 2, false, true }, + [xi.magic.spell.LIGHTNING_THRENODY_II] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.THRENODY, 2, false, true }, + [xi.magic.spell.WATER_THRENODY_II ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.THRENODY, 2, false, true }, + [xi.magic.spell.LIGHT_THRENODY_II ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.THRENODY, 2, false, true }, + [xi.magic.spell.DARK_THRENODY_II ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.THRENODY, 2, false, true }, + --[xi.magic.spell.INUNDATION ] = { }, + [xi.magic.spell.DRAIN_III ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.ASPIR_III ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.DISTRACT_III ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.EVASION_DOWN, 3, false, true }, + [xi.magic.spell.FRAZZLE_III ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.MAGIC_EVASION_DOWN, 3, false, true }, + [xi.magic.spell.ADDLE_II ] = { xi.action.type.ENFEEBLING_TARGET, false, nil, xi.effect.ADDLE, 2, false, true }, + [xi.magic.spell.GEOHELIX_II ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.HYDROHELIX_II ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.ANEMOHELIX_II ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.PYROHELIX_II ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.CRYOHELIX_II ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.IONOHELIX_II ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.NOCTOHELIX_II ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.LUMINOHELIX_II ] = { xi.action.type.DAMAGE_TARGET, false, nil, nil, 0, false, true }, + [xi.magic.spell.FULL_CURE ] = { xi.action.type.HEALING_TARGET, true, nil, nil, 0, true, false }, + [xi.magic.spell.REFRESH_III ] = { xi.action.type.ENHANCING_TARGET, true, nil, xi.effect.REFRESH, 3, true, false }, + --[xi.magic.spell.TEMPER_II ] = { }, +} diff --git a/scripts/globals/spells/enfeebling_song.lua b/scripts/globals/spells/enfeebling_song.lua index 474c1fe01fe..28bb212b4db 100644 --- a/scripts/globals/spells/enfeebling_song.lua +++ b/scripts/globals/spells/enfeebling_song.lua @@ -24,44 +24,46 @@ local pTable = { -- [Spell ID ] = { Effect, Tier, Base, Cap, Dur, Modifier }, -- Requiem: https://www.bg-wiki.com/ffxi/Category:Requiem - [xi.magic.spell.FOE_REQUIEM ] = { xi.effect.REQUIEM, 1, 1, 300, 64, xi.mod.REQUIEM_EFFECT }, - [xi.magic.spell.FOE_REQUIEM_II ] = { xi.effect.REQUIEM, 2, 2, 300, 80, xi.mod.REQUIEM_EFFECT }, - [xi.magic.spell.FOE_REQUIEM_III ] = { xi.effect.REQUIEM, 3, 3, 300, 96, xi.mod.REQUIEM_EFFECT }, - [xi.magic.spell.FOE_REQUIEM_IV ] = { xi.effect.REQUIEM, 4, 4, 300, 112, xi.mod.REQUIEM_EFFECT }, - [xi.magic.spell.FOE_REQUIEM_V ] = { xi.effect.REQUIEM, 5, 5, 300, 128, xi.mod.REQUIEM_EFFECT }, - [xi.magic.spell.FOE_REQUIEM_VI ] = { xi.effect.REQUIEM, 6, 6, 300, 144, xi.mod.REQUIEM_EFFECT }, - [xi.magic.spell.FOE_REQUIEM_VII ] = { xi.effect.REQUIEM, 7, 8, 300, 160, xi.mod.REQUIEM_EFFECT }, + [xi.magic.spell.FOE_REQUIEM ] = { xi.effect.REQUIEM, 1, 2, 300, 64, xi.mod.REQUIEM_EFFECT }, + [xi.magic.spell.FOE_REQUIEM_II ] = { xi.effect.REQUIEM, 2, 3, 300, 80, xi.mod.REQUIEM_EFFECT }, + [xi.magic.spell.FOE_REQUIEM_III ] = { xi.effect.REQUIEM, 3, 4, 300, 96, xi.mod.REQUIEM_EFFECT }, + [xi.magic.spell.FOE_REQUIEM_IV ] = { xi.effect.REQUIEM, 4, 5, 300, 112, xi.mod.REQUIEM_EFFECT }, + [xi.magic.spell.FOE_REQUIEM_V ] = { xi.effect.REQUIEM, 5, 6, 300, 128, xi.mod.REQUIEM_EFFECT }, + [xi.magic.spell.FOE_REQUIEM_VI ] = { xi.effect.REQUIEM, 6, 7, 300, 144, xi.mod.REQUIEM_EFFECT }, + [xi.magic.spell.FOE_REQUIEM_VII ] = { xi.effect.REQUIEM, 7, 8, 300, 160, xi.mod.REQUIEM_EFFECT }, + [xi.magic.spell.FOE_REQUIEM_VIII ] = { xi.effect.REQUIEM, 8, 9, 300, 180, xi.mod.REQUIEM_EFFECT }, -- Lullaby: https://www.bg-wiki.com/ffxi/Category:Lullaby - [xi.magic.spell.FOE_LULLABY ] = { xi.effect.SLEEP_I, 1, 1, 1, 30, xi.mod.LULLABY_EFFECT }, - [xi.magic.spell.FOE_LULLABY_II ] = { xi.effect.SLEEP_I, 1, 1, 1, 60, xi.mod.LULLABY_EFFECT }, - [xi.magic.spell.HORDE_LULLABY ] = { xi.effect.SLEEP_I, 1, 1, 1, 30, xi.mod.LULLABY_EFFECT }, - [xi.magic.spell.HORDE_LULLABY_II ] = { xi.effect.SLEEP_I, 1, 1, 1, 60, xi.mod.LULLABY_EFFECT }, + [xi.magic.spell.FOE_LULLABY ] = { xi.effect.SLEEP_I, 1, 1, 1, 30, xi.mod.LULLABY_EFFECT }, + [xi.magic.spell.FOE_LULLABY_II ] = { xi.effect.SLEEP_I, 1, 1, 1, 60, xi.mod.LULLABY_EFFECT }, + [xi.magic.spell.HORDE_LULLABY ] = { xi.effect.SLEEP_I, 1, 1, 1, 30, xi.mod.LULLABY_EFFECT }, + [xi.magic.spell.HORDE_LULLABY_II ] = { xi.effect.SLEEP_I, 1, 1, 1, 60, xi.mod.LULLABY_EFFECT }, -- Finale: https://www.bg-wiki.com/ffxi/Category:Finale - [xi.magic.spell.MAGIC_FINALE ] = { xi.effect.NONE, 1, 1, 1, 0, xi.mod.FINALE_EFFECT }, + [xi.magic.spell.MAGIC_FINALE ] = { xi.effect.NONE, 1, 1, 1, 0, xi.mod.FINALE_EFFECT }, -- Elegy: https://www.bg-wiki.com/ffxi/Category:Elegy - [xi.magic.spell.BATTLEFIELD_ELEGY ] = { xi.effect.ELEGY, 1, 2500, 5000, 120, xi.mod.ELEGY_EFFECT }, - [xi.magic.spell.CARNAGE_ELEGY ] = { xi.effect.ELEGY, 1, 5000, 5000, 180, xi.mod.ELEGY_EFFECT }, + [xi.magic.spell.BATTLEFIELD_ELEGY ] = { xi.effect.ELEGY, 1, 2500, 5000, 120, xi.mod.ELEGY_EFFECT }, + [xi.magic.spell.CARNAGE_ELEGY ] = { xi.effect.ELEGY, 2, 5000, 5000, 180, xi.mod.ELEGY_EFFECT }, + [xi.magic.spell.MASSACRE_ELEGY ] = { xi.effect.ELEGY, 3, 10000, 10000, 240, xi.mod.ELEGY_EFFECT }, -- Mob only. -- Threnody: https://www.bg-wiki.com/ffxi/Category:Threnody - [xi.magic.spell.FIRE_THRENODY ] = { xi.effect.THRENODY, 1, 50, 95, 60, xi.mod.THRENODY_EFFECT }, - [xi.magic.spell.ICE_THRENODY ] = { xi.effect.THRENODY, 1, 50, 95, 60, xi.mod.THRENODY_EFFECT }, - [xi.magic.spell.WIND_THRENODY ] = { xi.effect.THRENODY, 1, 50, 95, 60, xi.mod.THRENODY_EFFECT }, - [xi.magic.spell.EARTH_THRENODY ] = { xi.effect.THRENODY, 1, 50, 95, 60, xi.mod.THRENODY_EFFECT }, - [xi.magic.spell.LIGHTNING_THRENODY ] = { xi.effect.THRENODY, 1, 50, 95, 60, xi.mod.THRENODY_EFFECT }, - [xi.magic.spell.WATER_THRENODY ] = { xi.effect.THRENODY, 1, 50, 95, 60, xi.mod.THRENODY_EFFECT }, - [xi.magic.spell.LIGHT_THRENODY ] = { xi.effect.THRENODY, 1, 50, 95, 60, xi.mod.THRENODY_EFFECT }, - [xi.magic.spell.DARK_THRENODY ] = { xi.effect.THRENODY, 1, 50, 95, 60, xi.mod.THRENODY_EFFECT }, - [xi.magic.spell.FIRE_THRENODY_II ] = { xi.effect.THRENODY, 2, 160, 205, 90, xi.mod.THRENODY_EFFECT }, - [xi.magic.spell.ICE_THRENODY_II ] = { xi.effect.THRENODY, 2, 160, 205, 90, xi.mod.THRENODY_EFFECT }, - [xi.magic.spell.WIND_THRENODY_II ] = { xi.effect.THRENODY, 2, 160, 205, 90, xi.mod.THRENODY_EFFECT }, - [xi.magic.spell.EARTH_THRENODY_II ] = { xi.effect.THRENODY, 2, 160, 205, 90, xi.mod.THRENODY_EFFECT }, - [xi.magic.spell.LIGHTNING_THRENODY_II] = { xi.effect.THRENODY, 2, 160, 205, 90, xi.mod.THRENODY_EFFECT }, - [xi.magic.spell.WATER_THRENODY_II ] = { xi.effect.THRENODY, 2, 160, 205, 90, xi.mod.THRENODY_EFFECT }, - [xi.magic.spell.LIGHT_THRENODY_II ] = { xi.effect.THRENODY, 2, 160, 205, 90, xi.mod.THRENODY_EFFECT }, - [xi.magic.spell.DARK_THRENODY_II ] = { xi.effect.THRENODY, 2, 160, 205, 90, xi.mod.THRENODY_EFFECT }, + [xi.magic.spell.FIRE_THRENODY ] = { xi.effect.THRENODY, 1, 50, 95, 60, xi.mod.THRENODY_EFFECT }, + [xi.magic.spell.ICE_THRENODY ] = { xi.effect.THRENODY, 1, 50, 95, 60, xi.mod.THRENODY_EFFECT }, + [xi.magic.spell.WIND_THRENODY ] = { xi.effect.THRENODY, 1, 50, 95, 60, xi.mod.THRENODY_EFFECT }, + [xi.magic.spell.EARTH_THRENODY ] = { xi.effect.THRENODY, 1, 50, 95, 60, xi.mod.THRENODY_EFFECT }, + [xi.magic.spell.LIGHTNING_THRENODY ] = { xi.effect.THRENODY, 1, 50, 95, 60, xi.mod.THRENODY_EFFECT }, + [xi.magic.spell.WATER_THRENODY ] = { xi.effect.THRENODY, 1, 50, 95, 60, xi.mod.THRENODY_EFFECT }, + [xi.magic.spell.LIGHT_THRENODY ] = { xi.effect.THRENODY, 1, 50, 95, 60, xi.mod.THRENODY_EFFECT }, + [xi.magic.spell.DARK_THRENODY ] = { xi.effect.THRENODY, 1, 50, 95, 60, xi.mod.THRENODY_EFFECT }, + [xi.magic.spell.FIRE_THRENODY_II ] = { xi.effect.THRENODY, 2, 160, 205, 90, xi.mod.THRENODY_EFFECT }, + [xi.magic.spell.ICE_THRENODY_II ] = { xi.effect.THRENODY, 2, 160, 205, 90, xi.mod.THRENODY_EFFECT }, + [xi.magic.spell.WIND_THRENODY_II ] = { xi.effect.THRENODY, 2, 160, 205, 90, xi.mod.THRENODY_EFFECT }, + [xi.magic.spell.EARTH_THRENODY_II ] = { xi.effect.THRENODY, 2, 160, 205, 90, xi.mod.THRENODY_EFFECT }, + [xi.magic.spell.LIGHTNING_THRENODY_II] = { xi.effect.THRENODY, 2, 160, 205, 90, xi.mod.THRENODY_EFFECT }, + [xi.magic.spell.WATER_THRENODY_II ] = { xi.effect.THRENODY, 2, 160, 205, 90, xi.mod.THRENODY_EFFECT }, + [xi.magic.spell.LIGHT_THRENODY_II ] = { xi.effect.THRENODY, 2, 160, 205, 90, xi.mod.THRENODY_EFFECT }, + [xi.magic.spell.DARK_THRENODY_II ] = { xi.effect.THRENODY, 2, 160, 205, 90, xi.mod.THRENODY_EFFECT }, -- Virelai: https://www.bg-wiki.com/ffxi/Category:Virelai - [xi.magic.spell.MAIDENS_VIRELAI ] = { xi.effect.CHARM_I, 1, 0, 0, 30, xi.mod.VIRELAI_EFFECT }, + [xi.magic.spell.MAIDENS_VIRELAI ] = { xi.effect.CHARM_I, 1, 0, 0, 30, xi.mod.VIRELAI_EFFECT }, -- Nocturne: https://www.bg-wiki.com/ffxi/Category:Nocturne - [xi.magic.spell.PINING_NOCTURNE ] = { xi.effect.NOCTURNE, 1, 15, 25, 120, 0 }, + [xi.magic.spell.PINING_NOCTURNE ] = { xi.effect.NOCTURNE, 1, 15, 25, 120, 0 }, } ----------------------------------- @@ -94,11 +96,11 @@ xi.spells.enfeebling.calculateSongPower = function(caster, spellEffect, basePowe if caster:hasStatusEffect(xi.effect.SOUL_VOICE) then power = power * 2 elseif marcatoEffect ~= nil then - power = power * (1 + (marcatoEffect:getPower() / 100)) + power = power * (1 + marcatoEffect:getPower() / 100) end end - return power + return math.floor(power) end ----------------------------------- diff --git a/scripts/globals/spells/enfeebling_spell.lua b/scripts/globals/spells/enfeebling_spell.lua index 1ec62942f4e..b75c826c08e 100644 --- a/scripts/globals/spells/enfeebling_spell.lua +++ b/scripts/globals/spells/enfeebling_spell.lua @@ -47,14 +47,14 @@ local pTable = [xi.magic.spell.FRAZZLE_III ] = { xi.effect.MAGIC_EVASION_DOWN, 3, xi.mod.MND, 0, 0, 120, 0, true, 150 }, [xi.magic.spell.FROST ] = { xi.effect.FROST, 1, xi.mod.INT, 0, 3, 90, 1, true, 0 }, [xi.magic.spell.GRAVITY ] = { xi.effect.WEIGHT, 1, xi.mod.INT, 26, 0, 120, 0, true, 0 }, - [xi.magic.spell.GRAVITY_II ] = { xi.effect.WEIGHT, 2, xi.mod.INT, 32, 0, 180, 0, true, 0 }, - [xi.magic.spell.GRAVIGA ] = { xi.effect.WEIGHT, 1, xi.mod.INT, 50, 0, 120, 0, true, 0 }, + [xi.magic.spell.GRAVITY_II ] = { xi.effect.WEIGHT, 3, xi.mod.INT, 32, 0, 180, 0, true, 0 }, + [xi.magic.spell.GRAVIGA ] = { xi.effect.WEIGHT, 2, xi.mod.INT, 50, 0, 120, 0, true, 0 }, [xi.magic.spell.POISON ] = { xi.effect.POISON, 1, xi.mod.INT, 0, 3, 90, 0, true, 0 }, [xi.magic.spell.POISON_II ] = { xi.effect.POISON, 2, xi.mod.INT, 0, 3, 120, 0, true, 30 }, [xi.magic.spell.POISON_III ] = { xi.effect.POISON, 3, xi.mod.INT, 0, 3, 150, 0, true, 0 }, [xi.magic.spell.POISONGA ] = { xi.effect.POISON, 1, xi.mod.INT, 0, 3, 90, 0, true, 0 }, - [xi.magic.spell.POISONGA_II ] = { xi.effect.POISON, 1, xi.mod.INT, 0, 3, 120, 0, true, 0 }, - [xi.magic.spell.POISONGA_III ] = { xi.effect.POISON, 1, xi.mod.INT, 0, 3, 150, 0, true, 0 }, + [xi.magic.spell.POISONGA_II ] = { xi.effect.POISON, 2, xi.mod.INT, 0, 3, 120, 0, true, 0 }, + [xi.magic.spell.POISONGA_III ] = { xi.effect.POISON, 3, xi.mod.INT, 0, 3, 150, 0, true, 0 }, [xi.magic.spell.RASP ] = { xi.effect.RASP, 1, xi.mod.INT, 0, 3, 90, 1, true, 0 }, [xi.magic.spell.SHOCK ] = { xi.effect.SHOCK, 1, xi.mod.INT, 0, 3, 90, 1, true, 0 }, [xi.magic.spell.SLEEP ] = { xi.effect.SLEEP_I, 1, xi.mod.INT, 1, 0, 60, 0, false, 0 }, @@ -83,7 +83,8 @@ local pTable = [xi.magic.spell.LUMINOHELIX_II] = { xi.effect.HELIX, 2, xi.mod.INT, 0, 10, 30, 0, false, 0 }, -- White Magic - [xi.magic.spell.ADDLE ] = { xi.effect.ADDLE, 1, xi.mod.MND, 30, 0, 180, 0, true, 0 }, + [xi.magic.spell.ADDLE ] = { xi.effect.ADDLE, 1, xi.mod.MND, 20, 0, 180, 0, false, 20 }, + [xi.magic.spell.ADDLE_II ] = { xi.effect.ADDLE, 2, xi.mod.MND, 50, 0, 180, 0, false, 20 }, [xi.magic.spell.FLASH ] = { xi.effect.FLASH, 1, xi.mod.MND, 0, 0, 12, 0, true, 512 }, [xi.magic.spell.INUNDATION ] = { xi.effect.INUNDATION, 1, xi.mod.MND, 1, 0, 300, 0, false, 0 }, [xi.magic.spell.PARALYZE ] = { xi.effect.PARALYSIS, 1, xi.mod.MND, 0, 0, 120, 0, true, -10 }, @@ -198,6 +199,11 @@ xi.spells.enfeebling.calculatePotency = function(caster, target, spellId, spellE -- Calculate base potency for spells. switch (spellEffect) : caseof { + [xi.effect.ADDLE] = function() + statDiff = caster:getStat(statUsed) - target:getStat(statUsed) + potency = potency + utils.clamp(math.floor(statDiff / 5), 0, 20) + end, + [xi.effect.BLINDNESS] = function() statDiff = caster:getStat(statUsed) - target:getStat(xi.mod.MND) @@ -465,7 +471,7 @@ xi.spells.enfeebling.useEnfeeblingSpell = function(caster, target, spell) -- Addle: Has sub-effect. elseif spellEffect == xi.effect.ADDLE then - subpotency = 20 + utils.clamp(math.floor((caster:getStat(statUsed) - target:getStat(statUsed)) / 5), 0, 20) + subpotency = 30 -- Break: Player petrification sucks. elseif spellEffect == xi.effect.PETRIFICATION then diff --git a/scripts/globals/spells/enhancing_song.lua b/scripts/globals/spells/enhancing_song.lua index 25c56782605..81a65d734cf 100644 --- a/scripts/globals/spells/enhancing_song.lua +++ b/scripts/globals/spells/enhancing_song.lua @@ -44,14 +44,14 @@ local pTable = [xi.magic.spell.WATER_CAROL ] = { 1, xi.effect.CAROL, xi.element.WATER, xi.mod.CAROL_EFFECT, 0, 0, 20, 200, 80, 8, 10, true }, [xi.magic.spell.LIGHT_CAROL ] = { 1, xi.effect.CAROL, xi.element.LIGHT, xi.mod.CAROL_EFFECT, 0, 0, 20, 200, 80, 8, 10, true }, [xi.magic.spell.DARK_CAROL ] = { 1, xi.effect.CAROL, xi.element.DARK, xi.mod.CAROL_EFFECT, 0, 0, 20, 200, 80, 8, 10, true }, - -- [xi.magic.spell.FIRE_CAROL_II ] = { 2, xi.effect.CAROL_II, xi.element.FIRE, xi.mod.ETUDE_EFFECT, 0, 0, 10, 400, 15, 1.5, 10, true }, - -- [xi.magic.spell.ICE_CAROL_II ] = { 2, xi.effect.CAROL_II, xi.element.ICE, xi.mod.ETUDE_EFFECT, 0, 0, 10, 400, 15, 1.5, 10, true }, - -- [xi.magic.spell.WIND_CAROL_II ] = { 2, xi.effect.CAROL_II, xi.element.WIND, xi.mod.ETUDE_EFFECT, 0, 0, 10, 400, 15, 1.5, 10, true }, - -- [xi.magic.spell.EARTH_CAROL_II ] = { 2, xi.effect.CAROL_II, xi.element.EARTH, xi.mod.ETUDE_EFFECT, 0, 0, 10, 400, 15, 1.5, 10, true }, - -- [xi.magic.spell.LIGHTNING_CAROL_II] = { 2, xi.effect.CAROL_II, xi.element.THUNDER, xi.mod.ETUDE_EFFECT, 0, 0, 10, 400, 15, 1.5, 10, true }, - -- [xi.magic.spell.WATER_CAROL_II ] = { 2, xi.effect.CAROL_II, xi.element.WATER, xi.mod.ETUDE_EFFECT, 0, 0, 10, 400, 15, 1.5, 10, true }, - -- [xi.magic.spell.LIGHT_CAROL_II ] = { 2, xi.effect.CAROL_II, xi.element.LIGHT, xi.mod.ETUDE_EFFECT, 0, 0, 10, 400, 15, 1.5, 10, true }, - -- [xi.magic.spell.DARK_CAROL_II ] = { 2, xi.effect.CAROL_II, xi.element.DARK, xi.mod.ETUDE_EFFECT, 0, 0, 10, 400, 15, 1.5, 10, true }, + -- [xi.magic.spell.FIRE_CAROL_II ] = { 2, xi.effect.CAROL, xi.element.FIRE, xi.mod.CAROL_EFFECT, 0, 0, 10, 400, 15, 1.5, 10, true }, + -- [xi.magic.spell.ICE_CAROL_II ] = { 2, xi.effect.CAROL, xi.element.ICE, xi.mod.CAROL_EFFECT, 0, 0, 10, 400, 15, 1.5, 10, true }, + -- [xi.magic.spell.WIND_CAROL_II ] = { 2, xi.effect.CAROL, xi.element.WIND, xi.mod.CAROL_EFFECT, 0, 0, 10, 400, 15, 1.5, 10, true }, + -- [xi.magic.spell.EARTH_CAROL_II ] = { 2, xi.effect.CAROL, xi.element.EARTH, xi.mod.CAROL_EFFECT, 0, 0, 10, 400, 15, 1.5, 10, true }, + -- [xi.magic.spell.LIGHTNING_CAROL_II] = { 2, xi.effect.CAROL, xi.element.THUNDER, xi.mod.CAROL_EFFECT, 0, 0, 10, 400, 15, 1.5, 10, true }, + -- [xi.magic.spell.WATER_CAROL_II ] = { 2, xi.effect.CAROL, xi.element.WATER, xi.mod.CAROL_EFFECT, 0, 0, 10, 400, 15, 1.5, 10, true }, + -- [xi.magic.spell.LIGHT_CAROL_II ] = { 2, xi.effect.CAROL, xi.element.LIGHT, xi.mod.CAROL_EFFECT, 0, 0, 10, 400, 15, 1.5, 10, true }, + -- [xi.magic.spell.DARK_CAROL_II ] = { 2, xi.effect.CAROL, xi.element.DARK, xi.mod.CAROL_EFFECT, 0, 0, 10, 400, 15, 1.5, 10, true }, -- Etude [xi.magic.spell.SINEWY_ETUDE ] = { 1, xi.effect.ETUDE, xi.mod.STR, xi.mod.ETUDE_EFFECT, 0, 0, 3, 0, 9, 1, 0, true }, [xi.magic.spell.DEXTROUS_ETUDE ] = { 1, xi.effect.ETUDE, xi.mod.DEX, xi.mod.ETUDE_EFFECT, 0, 0, 3, 0, 9, 1, 0, true }, @@ -96,15 +96,19 @@ local pTable = [xi.magic.spell.ARMYS_PAEON_IV ] = { 4, xi.effect.PAEON, xi.mod.AUGMENT_SONG_STAT, xi.mod.PAEON_EFFECT, 0, 0, 4, 250, 5, 1, 0, true }, [xi.magic.spell.ARMYS_PAEON_V ] = { 5, xi.effect.PAEON, xi.mod.AUGMENT_SONG_STAT, xi.mod.PAEON_EFFECT, 0, 0, 5, 350, 7, 1, 0, true }, [xi.magic.spell.ARMYS_PAEON_VI ] = { 6, xi.effect.PAEON, xi.mod.AUGMENT_SONG_STAT, xi.mod.PAEON_EFFECT, 0, 0, 6, 450, 8, 1, 0, true }, + [xi.magic.spell.ARMYS_PAEON_VII ] = { 7, xi.effect.PAEON, xi.mod.AUGMENT_SONG_STAT, xi.mod.PAEON_EFFECT, 0, 0, 7, 500, 9, 1, 0, true }, + [xi.magic.spell.ARMYS_PAEON_VIII ] = { 8, xi.effect.PAEON, xi.mod.AUGMENT_SONG_STAT, xi.mod.PAEON_EFFECT, 0, 0, 8, 550, 10, 1, 0, true }, -- Prelude [xi.magic.spell.HUNTERS_PRELUDE ] = { 1, xi.effect.PRELUDE, xi.mod.AUGMENT_SONG_STAT, xi.mod.PRELUDE_EFFECT, 0, 0, 10, 85, 45, 4.5, 18, true }, [xi.magic.spell.ARCHERS_PRELUDE ] = { 2, xi.effect.PRELUDE, xi.mod.AUGMENT_SONG_STAT, xi.mod.PRELUDE_EFFECT, 0, 0, 20, 130, 60, 6, 18, true }, - -- Status effect resistance: Aubade, Capriccio, Gavotte, Operetta, Pastoral, + -- Operetta + [xi.magic.spell.SCOPS_OPERETTA ] = { 1, xi.effect.OPERETTA, xi.mod.AUGMENT_SONG_STAT, 0, 0, 0, 20, 200, 80, 8, 10, true }, + [xi.magic.spell.PUPPETS_OPERETTA ] = { 2, xi.effect.OPERETTA, xi.mod.AUGMENT_SONG_STAT, 0, 0, 0, 40, 200, 120, 8, 10, true }, + [xi.magic.spell.JESTERS_OPERETTA ] = { 3, xi.effect.OPERETTA, xi.mod.AUGMENT_SONG_STAT, 0, 0, 0, 60, 200, 180, 8, 10, true }, + -- Status effect resistance: Aubade, Capriccio, Gavotte, Pastoral, [xi.magic.spell.FOWL_AUBADE ] = { 1, xi.effect.AUBADE, xi.mod.AUGMENT_SONG_STAT, 0, 0, 0, 20, 200, 80, 8, 10, true }, [xi.magic.spell.GOLD_CAPRICCIO ] = { 1, xi.effect.CAPRICCIO, xi.mod.AUGMENT_SONG_STAT, 0, 0, 0, 20, 200, 80, 8, 10, true }, [xi.magic.spell.GOBLIN_GAVOTTE ] = { 1, xi.effect.GAVOTTE, xi.mod.AUGMENT_SONG_STAT, 0, 0, 0, 20, 200, 80, 8, 10, true }, - [xi.magic.spell.SCOPS_OPERETTA ] = { 1, xi.effect.OPERETTA, xi.mod.AUGMENT_SONG_STAT, 0, 0, 0, 20, 200, 80, 8, 10, true }, - [xi.magic.spell.PUPPETS_OPERETTA ] = { 2, xi.effect.OPERETTA, xi.mod.AUGMENT_SONG_STAT, 0, 0, 0, 40, 200, 120, 8, 10, true }, [xi.magic.spell.HERB_PASTORAL ] = { 1, xi.effect.PASTORAL, xi.mod.AUGMENT_SONG_STAT, 0, 0, 0, 20, 200, 80, 8, 10, true }, [xi.magic.spell.SHINING_FANTASIA ] = { 1, xi.effect.FANTASIA, xi.mod.AUGMENT_SONG_STAT, 0, 0, 0, 20, 200, 80, 8, 10, true }, [xi.magic.spell.WARDING_ROUND ] = { 1, xi.effect.ROUND, xi.mod.AUGMENT_SONG_STAT, 0, 0, 0, 20, 200, 80, 8, 10, true }, diff --git a/scripts/globals/spells/enhancing_spell.lua b/scripts/globals/spells/enhancing_spell.lua index 39a64739fb0..2c65ff29cdb 100644 --- a/scripts/globals/spells/enhancing_spell.lua +++ b/scripts/globals/spells/enhancing_spell.lua @@ -27,171 +27,179 @@ local column = -- Table variables. local pTable = { --- 1 2 3 4 5 6 7 8 --- Structure: [spellId] = { Tier, Main_Effect, Spell_Level, Base_Power, Base_Duration, Composure, Always_Overwrite, Tick_Seconds }, +-- 1 2 3 4 5 6 7 8 +-- Structure: [spellId] = { Tier, Main_Effect, Spell_Level, Base_Power, Base_Duration, Composure, Always_Overwrite, Tick_Seconds }, -- Aquaveil - [xi.magic.spell.AQUAVEIL ] = { 1, xi.effect.AQUAVEIL, 1, 1, 600, true, true, 0 }, + [xi.magic.spell.AQUAVEIL ] = { 1, xi.effect.AQUAVEIL, 1, 1, 600, true, true, 0 }, -- Auspice - [xi.magic.spell.AUSPICE ] = { 1, xi.effect.AUSPICE, 55, 0, 180, true, false, 0 }, + [xi.magic.spell.AUSPICE ] = { 1, xi.effect.AUSPICE, 55, 0, 180, true, false, 0 }, -- Bar-Element - [xi.magic.spell.BARAERO ] = { 1, xi.effect.BARAERO, 1, 0, 480, true, true, 0 }, - [xi.magic.spell.BARBLIZZARD ] = { 1, xi.effect.BARBLIZZARD, 1, 0, 480, true, true, 0 }, - [xi.magic.spell.BARFIRE ] = { 1, xi.effect.BARFIRE, 1, 0, 480, true, true, 0 }, - [xi.magic.spell.BARSTONE ] = { 1, xi.effect.BARSTONE, 1, 0, 480, true, true, 0 }, - [xi.magic.spell.BARTHUNDER ] = { 1, xi.effect.BARTHUNDER, 1, 0, 480, true, true, 0 }, - [xi.magic.spell.BARWATER ] = { 1, xi.effect.BARWATER, 1, 0, 480, true, true, 0 }, - [xi.magic.spell.BARAERA ] = { 2, xi.effect.BARAERO, 1, 0, 480, true, true, 0 }, - [xi.magic.spell.BARBLIZZARA ] = { 2, xi.effect.BARBLIZZARD, 1, 0, 480, true, true, 0 }, - [xi.magic.spell.BARFIRA ] = { 2, xi.effect.BARFIRE, 1, 0, 480, true, true, 0 }, - [xi.magic.spell.BARSTONRA ] = { 2, xi.effect.BARSTONE, 1, 0, 480, true, true, 0 }, - [xi.magic.spell.BARTHUNDRA ] = { 2, xi.effect.BARTHUNDER, 1, 0, 480, true, true, 0 }, - [xi.magic.spell.BARWATERA ] = { 2, xi.effect.BARWATER, 1, 0, 480, true, true, 0 }, + [xi.magic.spell.BARAERO ] = { 1, xi.effect.BARAERO, 1, 0, 480, true, true, 0 }, + [xi.magic.spell.BARBLIZZARD ] = { 1, xi.effect.BARBLIZZARD, 1, 0, 480, true, true, 0 }, + [xi.magic.spell.BARFIRE ] = { 1, xi.effect.BARFIRE, 1, 0, 480, true, true, 0 }, + [xi.magic.spell.BARSTONE ] = { 1, xi.effect.BARSTONE, 1, 0, 480, true, true, 0 }, + [xi.magic.spell.BARTHUNDER ] = { 1, xi.effect.BARTHUNDER, 1, 0, 480, true, true, 0 }, + [xi.magic.spell.BARWATER ] = { 1, xi.effect.BARWATER, 1, 0, 480, true, true, 0 }, + [xi.magic.spell.BARAERA ] = { 2, xi.effect.BARAERO, 1, 0, 480, true, true, 0 }, + [xi.magic.spell.BARBLIZZARA ] = { 2, xi.effect.BARBLIZZARD, 1, 0, 480, true, true, 0 }, + [xi.magic.spell.BARFIRA ] = { 2, xi.effect.BARFIRE, 1, 0, 480, true, true, 0 }, + [xi.magic.spell.BARSTONRA ] = { 2, xi.effect.BARSTONE, 1, 0, 480, true, true, 0 }, + [xi.magic.spell.BARTHUNDRA ] = { 2, xi.effect.BARTHUNDER, 1, 0, 480, true, true, 0 }, + [xi.magic.spell.BARWATERA ] = { 2, xi.effect.BARWATER, 1, 0, 480, true, true, 0 }, -- Bar-Effect - [xi.magic.spell.BARAMNESIA ] = { 1, xi.effect.BARAMNESIA, 1, 20, 480, true, true, 0 }, - [xi.magic.spell.BARBLIND ] = { 1, xi.effect.BARBLIND, 1, 20, 480, true, true, 0 }, - [xi.magic.spell.BARPARALYZE ] = { 1, xi.effect.BARPARALYZE, 1, 20, 480, true, true, 0 }, - [xi.magic.spell.BARPETRIFY ] = { 1, xi.effect.BARPETRIFY, 1, 20, 480, true, true, 0 }, - [xi.magic.spell.BARPOISON ] = { 1, xi.effect.BARPOISON, 1, 20, 480, true, true, 0 }, - [xi.magic.spell.BARSILENCE ] = { 1, xi.effect.BARSILENCE, 1, 20, 480, true, true, 0 }, - [xi.magic.spell.BARSLEEP ] = { 1, xi.effect.BARSLEEP, 1, 20, 480, true, true, 0 }, - [xi.magic.spell.BARVIRUS ] = { 1, xi.effect.BARVIRUS, 1, 20, 480, true, true, 0 }, - [xi.magic.spell.BARAMNESRA ] = { 2, xi.effect.BARAMNESIA, 1, 20, 480, true, true, 0 }, - [xi.magic.spell.BARBLINDRA ] = { 2, xi.effect.BARBLIND, 1, 20, 480, true, true, 0 }, - [xi.magic.spell.BARPARALYZRA ] = { 2, xi.effect.BARPARALYZE, 1, 20, 480, true, true, 0 }, - [xi.magic.spell.BARPETRA ] = { 2, xi.effect.BARPETRIFY, 1, 20, 480, true, true, 0 }, - [xi.magic.spell.BARPOISONRA ] = { 2, xi.effect.BARPOISON, 1, 20, 480, true, true, 0 }, - [xi.magic.spell.BARSILENCERA ] = { 2, xi.effect.BARSILENCE, 1, 20, 480, true, true, 0 }, - [xi.magic.spell.BARSLEEPRA ] = { 2, xi.effect.BARSLEEP, 1, 20, 480, true, true, 0 }, - [xi.magic.spell.BARVIRA ] = { 2, xi.effect.BARVIRUS, 1, 20, 480, true, true, 0 }, + [xi.magic.spell.BARAMNESIA ] = { 1, xi.effect.BARAMNESIA, 1, 20, 480, true, true, 0 }, + [xi.magic.spell.BARBLIND ] = { 1, xi.effect.BARBLIND, 1, 20, 480, true, true, 0 }, + [xi.magic.spell.BARPARALYZE ] = { 1, xi.effect.BARPARALYZE, 1, 20, 480, true, true, 0 }, + [xi.magic.spell.BARPETRIFY ] = { 1, xi.effect.BARPETRIFY, 1, 20, 480, true, true, 0 }, + [xi.magic.spell.BARPOISON ] = { 1, xi.effect.BARPOISON, 1, 20, 480, true, true, 0 }, + [xi.magic.spell.BARSILENCE ] = { 1, xi.effect.BARSILENCE, 1, 20, 480, true, true, 0 }, + [xi.magic.spell.BARSLEEP ] = { 1, xi.effect.BARSLEEP, 1, 20, 480, true, true, 0 }, + [xi.magic.spell.BARVIRUS ] = { 1, xi.effect.BARVIRUS, 1, 20, 480, true, true, 0 }, + [xi.magic.spell.BARAMNESRA ] = { 2, xi.effect.BARAMNESIA, 1, 20, 480, true, true, 0 }, + [xi.magic.spell.BARBLINDRA ] = { 2, xi.effect.BARBLIND, 1, 20, 480, true, true, 0 }, + [xi.magic.spell.BARPARALYZRA ] = { 2, xi.effect.BARPARALYZE, 1, 20, 480, true, true, 0 }, + [xi.magic.spell.BARPETRA ] = { 2, xi.effect.BARPETRIFY, 1, 20, 480, true, true, 0 }, + [xi.magic.spell.BARPOISONRA ] = { 2, xi.effect.BARPOISON, 1, 20, 480, true, true, 0 }, + [xi.magic.spell.BARSILENCERA ] = { 2, xi.effect.BARSILENCE, 1, 20, 480, true, true, 0 }, + [xi.magic.spell.BARSLEEPRA ] = { 2, xi.effect.BARSLEEP, 1, 20, 480, true, true, 0 }, + [xi.magic.spell.BARVIRA ] = { 2, xi.effect.BARVIRUS, 1, 20, 480, true, true, 0 }, -- Blink - [xi.magic.spell.BLINK ] = { 1, xi.effect.BLINK, 1, 2, 300, true, false, 0 }, + [xi.magic.spell.BLINK ] = { 1, xi.effect.BLINK, 1, 2, 300, true, false, 0 }, -- Boost-Stat - [xi.magic.spell.BOOST_STR ] = { 1, xi.effect.STR_BOOST, 1, 5, 300, true, false, 0 }, - [xi.magic.spell.BOOST_DEX ] = { 1, xi.effect.DEX_BOOST, 1, 5, 300, true, false, 0 }, - [xi.magic.spell.BOOST_VIT ] = { 1, xi.effect.VIT_BOOST, 1, 5, 300, true, false, 0 }, - [xi.magic.spell.BOOST_AGI ] = { 1, xi.effect.AGI_BOOST, 1, 5, 300, true, false, 0 }, - [xi.magic.spell.BOOST_INT ] = { 1, xi.effect.INT_BOOST, 1, 5, 300, true, false, 0 }, - [xi.magic.spell.BOOST_MND ] = { 1, xi.effect.MND_BOOST, 1, 5, 300, true, false, 0 }, - [xi.magic.spell.BOOST_CHR ] = { 1, xi.effect.CHR_BOOST, 1, 5, 300, true, false, 0 }, + [xi.magic.spell.BOOST_STR ] = { 1, xi.effect.STR_BOOST, 1, 5, 300, true, false, 0 }, + [xi.magic.spell.BOOST_DEX ] = { 1, xi.effect.DEX_BOOST, 1, 5, 300, true, false, 0 }, + [xi.magic.spell.BOOST_VIT ] = { 1, xi.effect.VIT_BOOST, 1, 5, 300, true, false, 0 }, + [xi.magic.spell.BOOST_AGI ] = { 1, xi.effect.AGI_BOOST, 1, 5, 300, true, false, 0 }, + [xi.magic.spell.BOOST_INT ] = { 1, xi.effect.INT_BOOST, 1, 5, 300, true, false, 0 }, + [xi.magic.spell.BOOST_MND ] = { 1, xi.effect.MND_BOOST, 1, 5, 300, true, false, 0 }, + [xi.magic.spell.BOOST_CHR ] = { 1, xi.effect.CHR_BOOST, 1, 5, 300, true, false, 0 }, -- Crusade - [xi.magic.spell.CRUSADE ] = { 1, xi.effect.ENMITY_BOOST, 88, 30, 300, true, false, 0 }, + [xi.magic.spell.CRUSADE ] = { 1, xi.effect.ENMITY_BOOST, 88, 30, 300, true, false, 0 }, -- Deodorize / Invisible / Sneak - [xi.magic.spell.DEODORIZE ] = { 1, xi.effect.DEODORIZE, 15, 0, 420, true, false, 10 }, - [xi.magic.spell.INVISIBLE ] = { 1, xi.effect.INVISIBLE, 20, 0, 420, true, false, 10 }, - [xi.magic.spell.SNEAK ] = { 1, xi.effect.SNEAK, 20, 0, 420, true, false, 10 }, + [xi.magic.spell.DEODORIZE ] = { 1, xi.effect.DEODORIZE, 15, 0, 420, true, false, 10 }, + [xi.magic.spell.INVISIBLE ] = { 1, xi.effect.INVISIBLE, 20, 0, 420, true, false, 10 }, + [xi.magic.spell.SNEAK ] = { 1, xi.effect.SNEAK, 20, 0, 420, true, false, 10 }, -- Embrava - [xi.magic.spell.EMBRAVA ] = { 1, xi.effect.EMBRAVA, 5, 0, 90, true, true, 0 }, + [xi.magic.spell.EMBRAVA ] = { 1, xi.effect.EMBRAVA, 5, 0, 90, true, true, 0 }, -- En-Spell - [xi.magic.spell.ENAERO ] = { 1, xi.effect.ENAERO, 20, 0, 180, true, false, 0 }, - [xi.magic.spell.ENBLIZZARD ] = { 1, xi.effect.ENBLIZZARD, 22, 0, 180, true, false, 0 }, - [xi.magic.spell.ENFIRE ] = { 1, xi.effect.ENFIRE, 24, 0, 180, true, false, 0 }, - [xi.magic.spell.ENSTONE ] = { 1, xi.effect.ENSTONE, 18, 0, 180, true, false, 0 }, - [xi.magic.spell.ENTHUNDER ] = { 1, xi.effect.ENTHUNDER, 16, 0, 180, true, false, 0 }, - [xi.magic.spell.ENWATER ] = { 1, xi.effect.ENWATER, 27, 0, 180, true, false, 0 }, - [xi.magic.spell.ENAERO_II ] = { 2, xi.effect.ENAERO_II, 54, 0, 180, true, false, 0 }, - [xi.magic.spell.ENBLIZZARD_II] = { 2, xi.effect.ENBLIZZARD_II, 56, 0, 180, true, false, 0 }, - [xi.magic.spell.ENFIRE_II ] = { 2, xi.effect.ENFIRE_II, 58, 0, 180, true, false, 0 }, - [xi.magic.spell.ENSTONE_II ] = { 2, xi.effect.ENSTONE_II, 52, 0, 180, true, false, 0 }, - [xi.magic.spell.ENTHUNDER_II ] = { 2, xi.effect.ENTHUNDER_II, 50, 0, 180, true, false, 0 }, - [xi.magic.spell.ENWATER_II ] = { 2, xi.effect.ENWATER_II, 60, 0, 180, true, false, 0 }, + [xi.magic.spell.ENAERO ] = { 1, xi.effect.ENAERO, 20, 0, 180, true, false, 0 }, + [xi.magic.spell.ENBLIZZARD ] = { 1, xi.effect.ENBLIZZARD, 22, 0, 180, true, false, 0 }, + [xi.magic.spell.ENFIRE ] = { 1, xi.effect.ENFIRE, 24, 0, 180, true, false, 0 }, + [xi.magic.spell.ENSTONE ] = { 1, xi.effect.ENSTONE, 18, 0, 180, true, false, 0 }, + [xi.magic.spell.ENTHUNDER ] = { 1, xi.effect.ENTHUNDER, 16, 0, 180, true, false, 0 }, + [xi.magic.spell.ENWATER ] = { 1, xi.effect.ENWATER, 27, 0, 180, true, false, 0 }, + [xi.magic.spell.ENAERO_II ] = { 2, xi.effect.ENAERO_II, 54, 0, 180, true, false, 0 }, + [xi.magic.spell.ENBLIZZARD_II ] = { 2, xi.effect.ENBLIZZARD_II, 56, 0, 180, true, false, 0 }, + [xi.magic.spell.ENFIRE_II ] = { 2, xi.effect.ENFIRE_II, 58, 0, 180, true, false, 0 }, + [xi.magic.spell.ENSTONE_II ] = { 2, xi.effect.ENSTONE_II, 52, 0, 180, true, false, 0 }, + [xi.magic.spell.ENTHUNDER_II ] = { 2, xi.effect.ENTHUNDER_II, 50, 0, 180, true, false, 0 }, + [xi.magic.spell.ENWATER_II ] = { 2, xi.effect.ENWATER_II, 60, 0, 180, true, false, 0 }, -- Flurry - [xi.magic.spell.FLURRY ] = { 1, xi.effect.FLURRY_II, 48, 15, 180, true, false, 0 }, -- Thats the actual effect. Not a typo. - [xi.magic.spell.FLURRY_II ] = { 2, xi.effect.FLURRY_II, 96, 30, 180, true, false, 0 }, -- Thats the actual effect. Not a typo. + [xi.magic.spell.FLURRY ] = { 1, xi.effect.FLURRY_II, 48, 15, 180, true, false, 0 }, -- Thats the actual effect. Not a typo. + [xi.magic.spell.FLURRY_II ] = { 2, xi.effect.FLURRY_II, 96, 30, 180, true, false, 0 }, -- Thats the actual effect. Not a typo. -- Foil - [xi.magic.spell.FOIL ] = { 1, xi.effect.FOIL, 58, 150, 30, true, false, 3 }, + [xi.magic.spell.FOIL ] = { 1, xi.effect.FOIL, 58, 150, 30, true, false, 3 }, -- Gain-Stat - [xi.magic.spell.GAIN_STR ] = { 1, xi.effect.STR_BOOST, 1, 5, 300, true, false, 0 }, - [xi.magic.spell.GAIN_DEX ] = { 1, xi.effect.DEX_BOOST, 1, 5, 300, true, false, 0 }, - [xi.magic.spell.GAIN_VIT ] = { 1, xi.effect.VIT_BOOST, 1, 5, 300, true, false, 0 }, - [xi.magic.spell.GAIN_AGI ] = { 1, xi.effect.AGI_BOOST, 1, 5, 300, true, false, 0 }, - [xi.magic.spell.GAIN_INT ] = { 1, xi.effect.INT_BOOST, 1, 5, 300, true, false, 0 }, - [xi.magic.spell.GAIN_MND ] = { 1, xi.effect.MND_BOOST, 1, 5, 300, true, false, 0 }, - [xi.magic.spell.GAIN_CHR ] = { 1, xi.effect.CHR_BOOST, 1, 5, 300, true, false, 0 }, + [xi.magic.spell.GAIN_STR ] = { 1, xi.effect.STR_BOOST, 1, 5, 300, true, false, 0 }, + [xi.magic.spell.GAIN_DEX ] = { 1, xi.effect.DEX_BOOST, 1, 5, 300, true, false, 0 }, + [xi.magic.spell.GAIN_VIT ] = { 1, xi.effect.VIT_BOOST, 1, 5, 300, true, false, 0 }, + [xi.magic.spell.GAIN_AGI ] = { 1, xi.effect.AGI_BOOST, 1, 5, 300, true, false, 0 }, + [xi.magic.spell.GAIN_INT ] = { 1, xi.effect.INT_BOOST, 1, 5, 300, true, false, 0 }, + [xi.magic.spell.GAIN_MND ] = { 1, xi.effect.MND_BOOST, 1, 5, 300, true, false, 0 }, + [xi.magic.spell.GAIN_CHR ] = { 1, xi.effect.CHR_BOOST, 1, 5, 300, true, false, 0 }, -- Haste - [xi.magic.spell.HASTE ] = { 5, xi.effect.HASTE, 40, 1465, 180, true, false, 0 }, - [xi.magic.spell.HASTE_II ] = { 6, xi.effect.HASTE, 96, 2998, 180, true, false, 0 }, - [xi.magic.spell.HASTEGA ] = { 5, xi.effect.HASTE, 48, 1494, 180, false, false, 0 }, - -- [xi.magic.spell.HASTEGA_II ] = { 2, xi.effect.HASTE, 99, 2998, 180, false, false, 0 }, + [xi.magic.spell.HASTE ] = { 5, xi.effect.HASTE, 40, 1465, 180, true, false, 0 }, + [xi.magic.spell.HASTE_II ] = { 6, xi.effect.HASTE, 96, 2998, 180, true, false, 0 }, + [xi.magic.spell.HASTEGA ] = { 5, xi.effect.HASTE, 48, 1494, 180, false, false, 0 }, + -- [xi.magic.spell.HASTEGA_II ] = { 2, xi.effect.HASTE, 99, 2998, 180, false, false, 0 }, -- Phalanx - [xi.magic.spell.PHALANX ] = { 1, xi.effect.PHALANX, 33, 0, 180, true, false, 0 }, - [xi.magic.spell.PHALANX_II ] = { 2, xi.effect.PHALANX, 75, 0, 240, true, false, 0 }, + [xi.magic.spell.PHALANX ] = { 1, xi.effect.PHALANX, 33, 0, 180, true, false, 0 }, + [xi.magic.spell.PHALANX_II ] = { 2, xi.effect.PHALANX, 75, 0, 240, true, false, 0 }, -- Protect / Protectra - [xi.magic.spell.PROTECT ] = { 1, xi.effect.PROTECT, 7, 20, 1800, false, false, 0 }, - [xi.magic.spell.PROTECT_II ] = { 2, xi.effect.PROTECT, 27, 50, 1800, false, false, 0 }, - [xi.magic.spell.PROTECT_III ] = { 3, xi.effect.PROTECT, 47, 90, 1800, false, false, 0 }, - [xi.magic.spell.PROTECT_IV ] = { 4, xi.effect.PROTECT, 63, 140, 1800, false, false, 0 }, - [xi.magic.spell.PROTECT_V ] = { 5, xi.effect.PROTECT, 76, 220, 1800, false, false, 0 }, - [xi.magic.spell.PROTECTRA ] = { 1, xi.effect.PROTECT, 7, 20, 1800, false, false, 0 }, - [xi.magic.spell.PROTECTRA_II ] = { 2, xi.effect.PROTECT, 27, 50, 1800, false, false, 0 }, - [xi.magic.spell.PROTECTRA_III] = { 3, xi.effect.PROTECT, 47, 90, 1800, false, false, 0 }, - [xi.magic.spell.PROTECTRA_IV ] = { 4, xi.effect.PROTECT, 63, 140, 1800, false, false, 0 }, - [xi.magic.spell.PROTECTRA_V ] = { 5, xi.effect.PROTECT, 75, 220, 1800, false, false, 0 }, + [xi.magic.spell.PROTECT ] = { 1, xi.effect.PROTECT, 7, 20, 1800, false, false, 0 }, + [xi.magic.spell.PROTECT_II ] = { 2, xi.effect.PROTECT, 27, 50, 1800, false, false, 0 }, + [xi.magic.spell.PROTECT_III ] = { 3, xi.effect.PROTECT, 47, 90, 1800, false, false, 0 }, + [xi.magic.spell.PROTECT_IV ] = { 4, xi.effect.PROTECT, 63, 140, 1800, false, false, 0 }, + [xi.magic.spell.PROTECT_V ] = { 5, xi.effect.PROTECT, 76, 220, 1800, false, false, 0 }, + [xi.magic.spell.PROTECTRA ] = { 1, xi.effect.PROTECT, 7, 20, 1800, false, false, 0 }, + [xi.magic.spell.PROTECTRA_II ] = { 2, xi.effect.PROTECT, 27, 50, 1800, false, false, 0 }, + [xi.magic.spell.PROTECTRA_III ] = { 3, xi.effect.PROTECT, 47, 90, 1800, false, false, 0 }, + [xi.magic.spell.PROTECTRA_IV ] = { 4, xi.effect.PROTECT, 63, 140, 1800, false, false, 0 }, + [xi.magic.spell.PROTECTRA_V ] = { 5, xi.effect.PROTECT, 75, 220, 1800, false, false, 0 }, -- Refresh - [xi.magic.spell.REFRESH ] = { 1, xi.effect.REFRESH, 41, 3, 150, true, true, 0 }, - [xi.magic.spell.REFRESH_II ] = { 2, xi.effect.REFRESH, 82, 6, 150, true, true, 0 }, - [xi.magic.spell.REFRESH_III ] = { 3, xi.effect.REFRESH, 99, 9, 150, true, true, 0 }, + [xi.magic.spell.REFRESH ] = { 1, xi.effect.REFRESH, 41, 3, 150, true, true, 0 }, + [xi.magic.spell.REFRESH_II ] = { 2, xi.effect.REFRESH, 82, 6, 150, true, true, 0 }, + [xi.magic.spell.REFRESH_III ] = { 3, xi.effect.REFRESH, 99, 9, 150, true, true, 0 }, -- Regen - [xi.magic.spell.REGEN ] = { 1, xi.effect.REGEN, 21, 5, 75, true, false, 0 }, - [xi.magic.spell.REGEN_II ] = { 2, xi.effect.REGEN, 44, 12, 60, true, false, 0 }, - [xi.magic.spell.REGEN_III ] = { 3, xi.effect.REGEN, 66, 20, 60, true, false, 0 }, - [xi.magic.spell.REGEN_IV ] = { 4, xi.effect.REGEN, 86, 30, 60, true, false, 0 }, - [xi.magic.spell.REGEN_V ] = { 5, xi.effect.REGEN, 99, 40, 60, true, false, 0 }, + [xi.magic.spell.REGEN ] = { 1, xi.effect.REGEN, 21, 5, 75, true, false, 0 }, + [xi.magic.spell.REGEN_II ] = { 2, xi.effect.REGEN, 44, 12, 60, true, false, 0 }, + [xi.magic.spell.REGEN_III ] = { 3, xi.effect.REGEN, 66, 20, 60, true, false, 0 }, + [xi.magic.spell.REGEN_IV ] = { 4, xi.effect.REGEN, 86, 30, 60, true, false, 0 }, + [xi.magic.spell.REGEN_V ] = { 5, xi.effect.REGEN, 99, 40, 60, true, false, 0 }, -- Reprisal - [xi.magic.spell.REPRISAL ] = { 1, xi.effect.REPRISAL, 1, 33, 60, true, false, 0 }, + [xi.magic.spell.REPRISAL ] = { 1, xi.effect.REPRISAL, 1, 33, 60, true, false, 0 }, -- Shell / Shellra - [xi.magic.spell.SHELL ] = { 1, xi.effect.SHELL, 18, 1055, 1800, false, false, 0 }, - [xi.magic.spell.SHELL_II ] = { 2, xi.effect.SHELL, 37, 1641, 1800, false, false, 0 }, - [xi.magic.spell.SHELL_III ] = { 3, xi.effect.SHELL, 57, 2188, 1800, false, false, 0 }, - [xi.magic.spell.SHELL_IV ] = { 4, xi.effect.SHELL, 68, 2617, 1800, false, false, 0 }, - [xi.magic.spell.SHELL_V ] = { 5, xi.effect.SHELL, 76, 2930, 1800, false, false, 0 }, - [xi.magic.spell.SHELLRA ] = { 1, xi.effect.SHELL, 18, 1055, 1800, false, false, 0 }, - [xi.magic.spell.SHELLRA_II ] = { 2, xi.effect.SHELL, 37, 1641, 1800, false, false, 0 }, - [xi.magic.spell.SHELLRA_III ] = { 3, xi.effect.SHELL, 57, 2188, 1800, false, false, 0 }, - [xi.magic.spell.SHELLRA_IV ] = { 4, xi.effect.SHELL, 68, 2617, 1800, false, false, 0 }, - [xi.magic.spell.SHELLRA_V ] = { 5, xi.effect.SHELL, 75, 2930, 1800, false, false, 0 }, + [xi.magic.spell.SHELL ] = { 1, xi.effect.SHELL, 18, 1055, 1800, false, false, 0 }, + [xi.magic.spell.SHELL_II ] = { 2, xi.effect.SHELL, 37, 1641, 1800, false, false, 0 }, + [xi.magic.spell.SHELL_III ] = { 3, xi.effect.SHELL, 57, 2188, 1800, false, false, 0 }, + [xi.magic.spell.SHELL_IV ] = { 4, xi.effect.SHELL, 68, 2617, 1800, false, false, 0 }, + [xi.magic.spell.SHELL_V ] = { 5, xi.effect.SHELL, 76, 2930, 1800, false, false, 0 }, + [xi.magic.spell.SHELLRA ] = { 1, xi.effect.SHELL, 18, 1055, 1800, false, false, 0 }, + [xi.magic.spell.SHELLRA_II ] = { 2, xi.effect.SHELL, 37, 1641, 1800, false, false, 0 }, + [xi.magic.spell.SHELLRA_III ] = { 3, xi.effect.SHELL, 57, 2188, 1800, false, false, 0 }, + [xi.magic.spell.SHELLRA_IV ] = { 4, xi.effect.SHELL, 68, 2617, 1800, false, false, 0 }, + [xi.magic.spell.SHELLRA_V ] = { 5, xi.effect.SHELL, 75, 2930, 1800, false, false, 0 }, -- Stoneskin - [xi.magic.spell.STONESKIN ] = { 1, xi.effect.STONESKIN, 28, 0, 300, true, false, 0 }, + [xi.magic.spell.STONESKIN ] = { 1, xi.effect.STONESKIN, 28, 0, 300, true, false, 0 }, -- -Spikes - [xi.magic.spell.BLAZE_SPIKES ] = { 1, xi.effect.BLAZE_SPIKES, 1, 0, 180, true, false, 0 }, - [xi.magic.spell.DREAD_SPIKES ] = { 1, xi.effect.DREAD_SPIKES, 1, 0, 180, true, false, 0 }, - [xi.magic.spell.ICE_SPIKES ] = { 1, xi.effect.ICE_SPIKES, 1, 0, 180, true, false, 0 }, - [xi.magic.spell.SHOCK_SPIKES ] = { 1, xi.effect.SHOCK_SPIKES, 1, 0, 180, true, false, 0 }, + [xi.magic.spell.BLAZE_SPIKES ] = { 1, xi.effect.BLAZE_SPIKES, 1, 0, 180, true, false, 0 }, + [xi.magic.spell.DREAD_SPIKES ] = { 1, xi.effect.DREAD_SPIKES, 1, 0, 180, true, false, 0 }, + [xi.magic.spell.ICE_SPIKES ] = { 1, xi.effect.ICE_SPIKES, 1, 0, 180, true, false, 0 }, + [xi.magic.spell.SHOCK_SPIKES ] = { 1, xi.effect.SHOCK_SPIKES, 1, 0, 180, true, false, 0 }, -- -storm - [xi.magic.spell.AURORASTORM ] = { 1, xi.effect.AURORASTORM, 48, 2, 180, true, true, 0 }, - [xi.magic.spell.FIRESTORM ] = { 1, xi.effect.FIRESTORM, 44, 2, 180, true, true, 0 }, - [xi.magic.spell.HAILSTORM ] = { 1, xi.effect.HAILSTORM, 45, 2, 180, true, true, 0 }, - [xi.magic.spell.RAINSTORM ] = { 1, xi.effect.RAINSTORM, 42, 2, 180, true, true, 0 }, - [xi.magic.spell.SANDSTORM ] = { 1, xi.effect.SANDSTORM, 41, 2, 180, true, true, 0 }, - [xi.magic.spell.THUNDERSTORM ] = { 1, xi.effect.THUNDERSTORM, 46, 2, 180, true, true, 0 }, - [xi.magic.spell.VOIDSTORM ] = { 1, xi.effect.VOIDSTORM, 47, 2, 180, true, true, 0 }, - [xi.magic.spell.WINDSTORM ] = { 1, xi.effect.WINDSTORM, 43, 2, 180, true, true, 0 }, + [xi.magic.spell.FIRESTORM ] = { 1, xi.effect.FIRESTORM, 44, 2, 180, true, true, 0 }, + [xi.magic.spell.HAILSTORM ] = { 1, xi.effect.HAILSTORM, 45, 2, 180, true, true, 0 }, + [xi.magic.spell.WINDSTORM ] = { 1, xi.effect.WINDSTORM, 43, 2, 180, true, true, 0 }, + [xi.magic.spell.SANDSTORM ] = { 1, xi.effect.SANDSTORM, 41, 2, 180, true, true, 0 }, + [xi.magic.spell.THUNDERSTORM ] = { 1, xi.effect.THUNDERSTORM, 46, 2, 180, true, true, 0 }, + [xi.magic.spell.RAINSTORM ] = { 1, xi.effect.RAINSTORM, 42, 2, 180, true, true, 0 }, + [xi.magic.spell.AURORASTORM ] = { 1, xi.effect.AURORASTORM, 48, 2, 180, true, true, 0 }, + [xi.magic.spell.VOIDSTORM ] = { 1, xi.effect.VOIDSTORM, 47, 2, 180, true, true, 0 }, + [xi.magic.spell.FIRESTORM_II ] = { 1, xi.effect.FIRESTORM_II, 99, 2, 180, true, true, 0 }, + [xi.magic.spell.HAILSTORM_II ] = { 1, xi.effect.HAILSTORM_II, 99, 2, 180, true, true, 0 }, + [xi.magic.spell.WINDSTORM_II ] = { 1, xi.effect.WINDSTORM_II, 99, 2, 180, true, true, 0 }, + [xi.magic.spell.SANDSTORM_II ] = { 1, xi.effect.SANDSTORM_II, 99, 2, 180, true, true, 0 }, + [xi.magic.spell.THUNDERSTORM_II] = { 1, xi.effect.THUNDERSTORM_II, 99, 2, 180, true, true, 0 }, + [xi.magic.spell.RAINSTORM_II ] = { 1, xi.effect.RAINSTORM_II, 99, 2, 180, true, true, 0 }, + [xi.magic.spell.AURORASTORM_II ] = { 1, xi.effect.AURORASTORM_II, 99, 2, 180, true, true, 0 }, + [xi.magic.spell.VOIDSTORM_II ] = { 1, xi.effect.VOIDSTORM_II, 99, 2, 180, true, true, 0 }, -- Temper - [xi.magic.spell.TEMPER ] = { 1, xi.effect.MULTI_STRIKES, 95, 5, 180, true, false, 0 }, - [xi.magic.spell.TEMPER_II ] = { 2, xi.effect.MULTI_STRIKES, 99, 5, 180, true, false, 0 }, + [xi.magic.spell.TEMPER ] = { 1, xi.effect.MULTI_STRIKES, 95, 5, 180, true, false, 0 }, + [xi.magic.spell.TEMPER_II ] = { 2, xi.effect.MULTI_STRIKES, 99, 5, 180, true, false, 0 }, } -- Enhancing Spell Base Potency function. @@ -374,10 +382,16 @@ xi.spells.enhancing.calculateEnhancingFinalPower = function(caster, target, spel -- -storm elseif - spellEffect >= xi.effect.FIRESTORM and - spellEffect <= xi.effect.VOIDSTORM + (spellEffect >= xi.effect.FIRESTORM and spellEffect <= xi.effect.VOIDSTORM) or + (spellEffect >= xi.effect.FIRESTORM_II and spellEffect <= xi.effect.VOIDSTORM_II) then - finalPower = finalPower + caster:getMerit(xi.merit.STORMSURGE) + caster:getMod(xi.mod.STORMSURGE_EFFECT) + -- 3 | 4 | 5 | 6 | 7 -- Values per merit without Loafers +2 + -- 4 | 6 | 8 | 10 | 12 -- Values per merit with Loafers +2 + + -- 2 + | 1 | 2 | 3 | 4 | 5 -- Values per merit without Loafers +2 -> 2 + merit level + -- 2 + | 2 | 4 | 6 | 8 | 10 -- Values per merit with Loafers +2 -> 2 + merit level * 2 + + finalPower = finalPower + caster:getMerit(xi.merit.STORMSURGE) * (1 + caster:getMod(xi.mod.STORMSURGE_EFFECT)) end return finalPower diff --git a/scripts/zones/Balgas_Dais/mobs/Bitoso.lua b/scripts/zones/Balgas_Dais/mobs/Bitoso.lua index abc31228dbe..322f0b0dd62 100644 --- a/scripts/zones/Balgas_Dais/mobs/Bitoso.lua +++ b/scripts/zones/Balgas_Dais/mobs/Bitoso.lua @@ -21,11 +21,11 @@ end entity.onMobSpellChoose = function(mob, target, spellId) local spellList = { - xi.magic.spell.CURE_III, - xi.magic.spell.PARALYGA, + [1] = { spellId = xi.magic.spell.CURE_III }, + [2] = { spellId = xi.magic.spell.PARALYGA }, } - return spellList[math.random(1, #spellList)] + return xi.combat.behavior.chooseSpell(mob, target, spellList, nil, nil) end return entity diff --git a/scripts/zones/Balgas_Dais/mobs/Cuu_Doko_the_Blizzard.lua b/scripts/zones/Balgas_Dais/mobs/Cuu_Doko_the_Blizzard.lua index 0df399da693..8cd3363b188 100644 --- a/scripts/zones/Balgas_Dais/mobs/Cuu_Doko_the_Blizzard.lua +++ b/scripts/zones/Balgas_Dais/mobs/Cuu_Doko_the_Blizzard.lua @@ -25,25 +25,25 @@ end entity.onMobSpellChoose = function(mob, target) local spellList = { - [ 1] = { xi.magic.spell.BANISH_II, target, false, xi.action.type.DAMAGE_TARGET, nil, 0, 100 }, - [ 2] = { xi.magic.spell.CURE_V, mob, true, xi.action.type.HEALING_TARGET, 33, 0, 100 }, - [ 3] = { xi.magic.spell.CURAGA_II, mob, true, xi.action.type.HEALING_FORCE_SELF, 33, 0, 100 }, - [ 4] = { xi.magic.spell.BLINDNA, mob, true, xi.action.type.HEALING_EFFECT, xi.effect.BLINDNESS, 0, 100 }, - [ 5] = { xi.magic.spell.PARALYNA, mob, true, xi.action.type.HEALING_EFFECT, xi.effect.PARALYSIS, 0, 100 }, - [ 6] = { xi.magic.spell.POISONA, mob, true, xi.action.type.HEALING_EFFECT, xi.effect.POISON, 0, 100 }, - [ 7] = { xi.magic.spell.SILENA, mob, true, xi.action.type.HEALING_EFFECT, xi.effect.SILENCE, 0, 100 }, - [ 8] = { xi.magic.spell.VIRUNA, mob, true, xi.action.type.HEALING_EFFECT, xi.effect.DISEASE, 0, 100 }, - [ 9] = { xi.magic.spell.VIRUNA, mob, true, xi.action.type.HEALING_EFFECT, xi.effect.PLAGUE, 0, 100 }, - [10] = { xi.magic.spell.AQUAVEIL, mob, false, xi.action.type.ENHANCING_TARGET, xi.effect.AQUAVEIL, 0, 100 }, - [11] = { xi.magic.spell.HASTE, mob, true, xi.action.type.ENHANCING_TARGET, xi.effect.HASTE, 5, 100 }, - [12] = { xi.magic.spell.PROTECT_III, mob, true, xi.action.type.ENHANCING_TARGET, xi.effect.PROTECT, 0, 25 }, - [13] = { xi.magic.spell.SHELL_III, mob, true, xi.action.type.ENHANCING_TARGET, xi.effect.SHELL, 0, 25 }, - [14] = { xi.magic.spell.DIA_II, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.DIA, 3, 100 }, - [15] = { xi.magic.spell.PARALYZE, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.PARALYSIS, 0, 100 }, - [16] = { xi.magic.spell.SILENCE, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.SILENCE, 0, 100 }, + [ 1] = { spellId = xi.magic.spell.BANISH_II }, + [ 2] = { spellId = xi.magic.spell.CURE_V, hpp = 33 }, + [ 3] = { spellId = xi.magic.spell.CURAGA_II, hpp = 33 }, + [ 4] = { spellId = xi.magic.spell.BLINDNA }, + [ 5] = { spellId = xi.magic.spell.PARALYNA }, + [ 6] = { spellId = xi.magic.spell.POISONA }, + [ 7] = { spellId = xi.magic.spell.SILENA }, + [ 8] = { spellId = xi.magic.spell.VIRUNA }, + [ 9] = { spellId = xi.magic.spell.VIRUNA }, + [10] = { spellId = xi.magic.spell.AQUAVEIL }, + [11] = { spellId = xi.magic.spell.HASTE }, + [12] = { spellId = xi.magic.spell.PROTECT_III, weight = 25 }, + [13] = { spellId = xi.magic.spell.SHELL_III, weight = 25 }, + [14] = { spellId = xi.magic.spell.DIA_II }, + [15] = { spellId = xi.magic.spell.PARALYZE }, + [16] = { spellId = xi.magic.spell.SILENCE }, } - local groupTable = + local allyList = { GetMobByID(mob:getID() - 1), -- Voo Tolu the Ghostfist GetMobByID(mob:getID() + 1), -- Zuu Xowu the Darksmoke @@ -52,7 +52,7 @@ entity.onMobSpellChoose = function(mob, target) GetMobByID(mob:getID() + 4), -- Yoo Mihi the Haze } - return xi.combat.behavior.chooseAction(mob, target, groupTable, spellList) + return xi.combat.behavior.chooseSpell(mob, target, spellList, allyList, nil) end return entity diff --git a/scripts/zones/Balgas_Dais/mobs/Gii_Jaha_the_Raucous.lua b/scripts/zones/Balgas_Dais/mobs/Gii_Jaha_the_Raucous.lua index 5f32ebf9c2d..769a19c9b74 100644 --- a/scripts/zones/Balgas_Dais/mobs/Gii_Jaha_the_Raucous.lua +++ b/scripts/zones/Balgas_Dais/mobs/Gii_Jaha_the_Raucous.lua @@ -22,16 +22,16 @@ end entity.onMobSpellChoose = function(mob, target, spellId) local spellList = { - [1] = { xi.magic.spell.FOE_REQUIEM_V, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.REQUIEM, 0, 100 }, - [2] = { xi.magic.spell.BATTLEFIELD_ELEGY, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.ELEGY, 0, 100 }, - [3] = { xi.magic.spell.QUICK_ETUDE, mob, false, xi.action.type.ENHANCING_FORCE_SELF, xi.effect.ETUDE, 0, 100 }, - [4] = { xi.magic.spell.DEXTROUS_ETUDE, mob, false, xi.action.type.ENHANCING_FORCE_SELF, xi.effect.ETUDE, 0, 100 }, - [5] = { xi.magic.spell.VALOR_MINUET_IV, mob, false, xi.action.type.ENHANCING_FORCE_SELF, xi.effect.MINUET, 0, 100 }, - [6] = { xi.magic.spell.KNIGHTS_MINNE_IV, mob, false, xi.action.type.ENHANCING_FORCE_SELF, xi.effect.MINNE, 0, 100 }, - [7] = { xi.magic.spell.VICTORY_MARCH, mob, false, xi.action.type.ENHANCING_FORCE_SELF, xi.effect.MARCH, 0, 100 }, + [1] = { spellId = xi.magic.spell.FOE_REQUIEM_V }, + [2] = { spellId = xi.magic.spell.BATTLEFIELD_ELEGY }, + [3] = { spellId = xi.magic.spell.QUICK_ETUDE }, + [4] = { spellId = xi.magic.spell.DEXTROUS_ETUDE }, + [5] = { spellId = xi.magic.spell.VALOR_MINUET_IV }, + [6] = { spellId = xi.magic.spell.KNIGHTS_MINNE_IV }, + [7] = { spellId = xi.magic.spell.VICTORY_MARCH }, } - return xi.combat.behavior.chooseAction(mob, target, nil, spellList) + return xi.combat.behavior.chooseSpell(mob, target, spellList, nil, nil) end return entity diff --git a/scripts/zones/Balgas_Dais/mobs/Gilagoge_Tlugvi.lua b/scripts/zones/Balgas_Dais/mobs/Gilagoge_Tlugvi.lua index 7589233a2a1..afe9c1ce76b 100644 --- a/scripts/zones/Balgas_Dais/mobs/Gilagoge_Tlugvi.lua +++ b/scripts/zones/Balgas_Dais/mobs/Gilagoge_Tlugvi.lua @@ -86,35 +86,35 @@ end entity.onMobSpellChoose = function(mob, target, spellId) local spellList = { - [ 1] = { xi.magic.spell.BANISH_III, target, false, xi.action.type.DAMAGE_TARGET, nil, 0, 100 }, - [ 2] = { xi.magic.spell.BANISHGA_II, target, false, xi.action.type.DAMAGE_TARGET, nil, 0, 100 }, - [ 3] = { xi.magic.spell.HOLY, target, false, xi.action.type.DAMAGE_TARGET, nil, 0, 100 }, - [ 4] = { xi.magic.spell.CURE_V, mob, true, xi.action.type.HEALING_TARGET, 33, 0, 100 }, - [ 5] = { xi.magic.spell.CURAGA_II, mob, true, xi.action.type.HEALING_FORCE_SELF, 33, 0, 100 }, - [ 6] = { xi.magic.spell.BLINDNA, mob, true, xi.action.type.HEALING_EFFECT, xi.effect.BLINDNESS, 0, 100 }, - [ 7] = { xi.magic.spell.PARALYNA, mob, true, xi.action.type.HEALING_EFFECT, xi.effect.PARALYSIS, 0, 100 }, - [ 8] = { xi.magic.spell.POISONA, mob, true, xi.action.type.HEALING_EFFECT, xi.effect.POISON, 0, 100 }, - [ 9] = { xi.magic.spell.SILENA, mob, true, xi.action.type.HEALING_EFFECT, xi.effect.SILENCE, 0, 100 }, - [10] = { xi.magic.spell.VIRUNA, mob, true, xi.action.type.HEALING_EFFECT, xi.effect.DISEASE, 0, 100 }, - [11] = { xi.magic.spell.VIRUNA, mob, true, xi.action.type.HEALING_EFFECT, xi.effect.PLAGUE, 0, 100 }, - [12] = { xi.magic.spell.AQUAVEIL, mob, false, xi.action.type.ENHANCING_TARGET, xi.effect.AQUAVEIL, 0, 100 }, - [13] = { xi.magic.spell.BLINK, mob, false, xi.action.type.ENHANCING_TARGET, xi.effect.BLINK, 0, 100 }, - [14] = { xi.magic.spell.PROTECT_IV, mob, true, xi.action.type.ENHANCING_TARGET, xi.effect.PROTECT, 0, 25 }, - [15] = { xi.magic.spell.SHELL_IV, mob, true, xi.action.type.ENHANCING_TARGET, xi.effect.SHELL, 0, 25 }, - [16] = { xi.magic.spell.DIA_II, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.DIA, 3, 50 }, - [17] = { xi.magic.spell.DIAGA_II, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.DIA, 3, 50 }, - [18] = { xi.magic.spell.PARALYZE, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.PARALYSIS, 0, 100 }, - [19] = { xi.magic.spell.SILENCE, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.SILENCE, 0, 100 }, + [ 1] = { spellId = xi.magic.spell.BANISH_III }, + [ 2] = { spellId = xi.magic.spell.BANISHGA_II }, + [ 3] = { spellId = xi.magic.spell.HOLY }, + [ 4] = { spellId = xi.magic.spell.CURE_V, hp = 33 }, + [ 5] = { spellId = xi.magic.spell.CURAGA_II, hp = 33 }, + [ 6] = { spellId = xi.magic.spell.BLINDNA }, + [ 7] = { spellId = xi.magic.spell.PARALYNA }, + [ 8] = { spellId = xi.magic.spell.POISONA }, + [ 9] = { spellId = xi.magic.spell.SILENA }, + [10] = { spellId = xi.magic.spell.VIRUNA }, + [11] = { spellId = xi.magic.spell.VIRUNA }, + [12] = { spellId = xi.magic.spell.AQUAVEIL }, + [13] = { spellId = xi.magic.spell.BLINK }, + [14] = { spellId = xi.magic.spell.PROTECT_IV, weight = 25 }, + [15] = { spellId = xi.magic.spell.SHELL_IV, weight = 25 }, + [16] = { spellId = xi.magic.spell.DIA_II, weight = 50 }, + [17] = { spellId = xi.magic.spell.DIAGA_II, weight = 50 }, + [18] = { spellId = xi.magic.spell.PARALYZE }, + [19] = { spellId = xi.magic.spell.SILENCE }, } - local groupTable = + local allyList = { GetMobByID(mob:getID() + 1), -- Goga Tlugvi (MNK) "Summer Tree" GetMobByID(mob:getID() + 2), -- Ulagohvsdi Tlugvi (NIN) "Autumn Tree" GetMobByID(mob:getID() + 3), -- Gola Tlugvi (DRK) "Winter Tree" } - return xi.combat.behavior.chooseAction(mob, target, groupTable, spellList) + return xi.combat.behavior.chooseSpell(mob, target, spellList, allyList, nil) end return entity diff --git a/scripts/zones/Balgas_Dais/mobs/Gola_Tlugvi.lua b/scripts/zones/Balgas_Dais/mobs/Gola_Tlugvi.lua index 6969be7944e..51295e6da8a 100644 --- a/scripts/zones/Balgas_Dais/mobs/Gola_Tlugvi.lua +++ b/scripts/zones/Balgas_Dais/mobs/Gola_Tlugvi.lua @@ -80,19 +80,20 @@ end entity.onMobSpellChoose = function(mob, target, spellId) local spellList = { - [ 1] = { xi.magic.spell.DRAIN, target, false, xi.action.type.DRAIN_HP, nil, 0, 100 }, - [ 2] = { xi.magic.spell.ASPIR, target, false, xi.action.type.DRAIN_MP, nil, 0, 100 }, - [ 3] = { xi.magic.spell.STUN, mob, false, xi.action.type.ENFEEBLING_EFFECT, xi.effect.STUN, 0, 100 }, - [ 4] = { xi.magic.spell.ABSORB_TP, mob, false, xi.action.type.ENFEEBLING_EFFECT, nil, 0, 100 }, - [ 5] = { xi.magic.spell.ABSORB_STR, mob, false, xi.action.type.ENFEEBLING_EFFECT, xi.effect.STR_DOWN, 0, 100 }, - [ 6] = { xi.magic.spell.ABSORB_DEX, mob, false, xi.action.type.ENFEEBLING_EFFECT, xi.effect.DEX_DOWN, 0, 100 }, - [ 7] = { xi.magic.spell.ABSORB_VIT, mob, false, xi.action.type.ENFEEBLING_EFFECT, xi.effect.VIT_DOWN, 0, 100 }, - [ 8] = { xi.magic.spell.ABSORB_AGI, mob, false, xi.action.type.ENFEEBLING_EFFECT, xi.effect.AGI_DOWN, 0, 100 }, - [ 9] = { xi.magic.spell.ABSORB_INT, mob, false, xi.action.type.ENFEEBLING_EFFECT, xi.effect.INT_DOWN, 0, 100 }, - [10] = { xi.magic.spell.ABSORB_MND, mob, false, xi.action.type.ENFEEBLING_EFFECT, xi.effect.MND_DOWN, 0, 100 }, - [11] = { xi.magic.spell.ABSORB_CHR, mob, false, xi.action.type.ENFEEBLING_EFFECT, xi.effect.CHR_DOWN, 0, 100 }, + [ 1] = { spellId = xi.magic.spell.DRAIN, evaluateUndead = true }, + [ 2] = { spellId = xi.magic.spell.ASPIR, mp = 1, evaluateUndead = true }, + [ 3] = { spellId = xi.magic.spell.STUN }, + [ 4] = { spellId = xi.magic.spell.ABSORB_TP, tp = 500 }, + [ 5] = { spellId = xi.magic.spell.ABSORB_STR }, + [ 6] = { spellId = xi.magic.spell.ABSORB_DEX }, + [ 7] = { spellId = xi.magic.spell.ABSORB_VIT }, + [ 8] = { spellId = xi.magic.spell.ABSORB_AGI }, + [ 9] = { spellId = xi.magic.spell.ABSORB_INT }, + [10] = { spellId = xi.magic.spell.ABSORB_MND }, + [11] = { spellId = xi.magic.spell.ABSORB_CHR }, } - return xi.combat.behavior.chooseAction(mob, target, nil, spellList) + + return xi.combat.behavior.chooseSpell(mob, target, spellList, nil, nil) end return entity diff --git a/scripts/zones/Balgas_Dais/mobs/King_of_Batons.lua b/scripts/zones/Balgas_Dais/mobs/King_of_Batons.lua index 2d60fd455e4..18a661d1523 100644 --- a/scripts/zones/Balgas_Dais/mobs/King_of_Batons.lua +++ b/scripts/zones/Balgas_Dais/mobs/King_of_Batons.lua @@ -40,31 +40,31 @@ end entity.onMobSpellChoose = function(mob, target, spellId) local spellList = { - [ 1] = { xi.magic.spell.FIRE_IV, target, false, xi.action.type.DAMAGE_TARGET, nil, 0, 100 }, - [ 2] = { xi.magic.spell.BLIZZARD_IV, target, false, xi.action.type.DAMAGE_TARGET, nil, 0, 100 }, - [ 3] = { xi.magic.spell.AERO_IV, target, false, xi.action.type.DAMAGE_TARGET, nil, 0, 100 }, - [ 4] = { xi.magic.spell.THUNDER_IV, target, false, xi.action.type.DAMAGE_TARGET, nil, 0, 100 }, - [ 5] = { xi.magic.spell.WATER_IV, target, false, xi.action.type.DAMAGE_TARGET, nil, 0, 100 }, - [ 6] = { xi.magic.spell.FIRAGA_III, target, false, xi.action.type.DAMAGE_TARGET, nil, 0, 100 }, - [ 7] = { xi.magic.spell.THUNDAGA_III, target, false, xi.action.type.DAMAGE_TARGET, nil, 0, 100 }, - [ 8] = { xi.magic.spell.DRAIN, target, false, xi.action.type.DRAIN_HP, nil, 0, 100 }, - [ 9] = { xi.magic.spell.ASPIR, target, false, xi.action.type.DRAIN_MP, nil, 0, 100 }, - [10] = { xi.magic.spell.STUN, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.STUN, 0, 100 }, - [11] = { xi.magic.spell.BLIND, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.BLINDNESS, 0, 100 }, - [12] = { xi.magic.spell.BIND, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.BIND, 0, 100 }, - [13] = { xi.magic.spell.BURN, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.BURN, 0, 100 }, - [14] = { xi.magic.spell.SHOCK, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.SHOCK, 0, 100 }, - [15] = { xi.magic.spell.CHOKE, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.CHOKE, 0, 100 }, - [16] = { xi.magic.spell.BIO_II, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.BIO, 4, 100 }, - [17] = { xi.magic.spell.POISONGA_II, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.POISON, 0, 100 }, - [18] = { xi.magic.spell.SLEEP, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.SLEEP_I, 0, 50 }, - [19] = { xi.magic.spell.SLEEP_II, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.SLEEP_I, 0, 50 }, - [20] = { xi.magic.spell.SLEEPGA, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.SLEEP_I, 0, 50 }, - [21] = { xi.magic.spell.SLEEPGA_II, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.SLEEP_I, 0, 50 }, - [22] = { xi.magic.spell.BLAZE_SPIKES, mob, false, xi.action.type.ENHANCING_FORCE_SELF, xi.effect.BLAZE_SPIKES, 0, 100 }, + [ 1] = { spellId = xi.magic.spell.FIRE_IV }, + [ 2] = { spellId = xi.magic.spell.BLIZZARD_IV }, + [ 3] = { spellId = xi.magic.spell.AERO_IV }, + [ 4] = { spellId = xi.magic.spell.THUNDER_IV }, + [ 5] = { spellId = xi.magic.spell.WATER_IV }, + [ 6] = { spellId = xi.magic.spell.FIRAGA_III }, + [ 7] = { spellId = xi.magic.spell.THUNDAGA_III }, + [ 8] = { spellId = xi.magic.spell.DRAIN, evaluateUndead = true }, + [ 9] = { spellId = xi.magic.spell.ASPIR, mp = 1, evaluateUndead = true }, + [10] = { spellId = xi.magic.spell.STUN }, + [11] = { spellId = xi.magic.spell.BLIND }, + [12] = { spellId = xi.magic.spell.BIND }, + [13] = { spellId = xi.magic.spell.BURN }, + [14] = { spellId = xi.magic.spell.SHOCK }, + [15] = { spellId = xi.magic.spell.CHOKE }, + [16] = { spellId = xi.magic.spell.BIO_II }, + [17] = { spellId = xi.magic.spell.POISONGA_II }, + [18] = { spellId = xi.magic.spell.SLEEP, weight = 50 }, + [19] = { spellId = xi.magic.spell.SLEEP_II, weight = 50 }, + [20] = { spellId = xi.magic.spell.SLEEPGA, weight = 50 }, + [21] = { spellId = xi.magic.spell.SLEEPGA_II, weight = 50 }, + [22] = { spellId = xi.magic.spell.BLAZE_SPIKES }, } - return xi.combat.behavior.chooseAction(mob, target, nil, spellList) + return xi.combat.behavior.chooseSpell(mob, target, spellList, nil, nil) end return entity diff --git a/scripts/zones/Balgas_Dais/mobs/King_of_Coins.lua b/scripts/zones/Balgas_Dais/mobs/King_of_Coins.lua index b9bb5c2c6d4..ca010b7da8a 100644 --- a/scripts/zones/Balgas_Dais/mobs/King_of_Coins.lua +++ b/scripts/zones/Balgas_Dais/mobs/King_of_Coins.lua @@ -46,45 +46,42 @@ end entity.onMobSpellChoose = function(mob, target, spellId) local spellList = { - [ 1] = { xi.magic.spell.FIRE_III, target, false, xi.action.type.DAMAGE_TARGET, nil, 0, 100 }, - [ 2] = { xi.magic.spell.BLIZZARD_III, target, false, xi.action.type.DAMAGE_TARGET, nil, 0, 100 }, - [ 3] = { xi.magic.spell.AERO_III, target, false, xi.action.type.DAMAGE_TARGET, nil, 0, 100 }, - [ 4] = { xi.magic.spell.WATER_III, target, false, xi.action.type.DAMAGE_TARGET, nil, 0, 100 }, - [ 5] = { xi.magic.spell.THUNDER_III, target, false, xi.action.type.DAMAGE_TARGET, nil, 0, 100 }, - [ 6] = { xi.magic.spell.STONE_IV, target, false, xi.action.type.DAMAGE_TARGET, nil, 0, 100 }, - [ 7] = { xi.magic.spell.BIO_III, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.BIO, 6, 100 }, - [ 8] = { xi.magic.spell.POISON_II, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.POISON, 0, 100 }, - [ 9] = { xi.magic.spell.DIA_II, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.DIA, 3, 100 }, - [10] = { xi.magic.spell.DIAGA_II, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.DIA, 3, 100 }, - [11] = { xi.magic.spell.BIND, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.BIND, 0, 100 }, - [12] = { xi.magic.spell.GRAVITY, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.WEIGHT, 0, 100 }, - [13] = { xi.magic.spell.SLEEP, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.SLEEP_I, 0, 50 }, - [14] = { xi.magic.spell.SLEEP_II, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.SLEEP_II, 0, 50 }, - [15] = { xi.magic.spell.SLOW, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.SLOW, 3, 100 }, - [16] = { xi.magic.spell.PARALYZE, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.PARALYSIS, 0, 100 }, - [17] = { xi.magic.spell.BLIND, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.BLINDNESS, 0, 100 }, - [18] = { xi.magic.spell.BLINK, mob, false, xi.action.type.ENHANCING_FORCE_SELF, xi.effect.BLINK, 0, 100 }, - [19] = { xi.magic.spell.STONESKIN, mob, false, xi.action.type.ENHANCING_FORCE_SELF, xi.effect.STONESKIN, 0, 100 }, - [20] = { xi.magic.spell.AQUAVEIL, mob, false, xi.action.type.ENHANCING_FORCE_SELF, xi.effect.AQUAVEIL, 0, 100 }, - [21] = { xi.magic.spell.ENWATER, mob, false, xi.action.type.ENHANCING_FORCE_SELF, xi.effect.ENWATER, 0, 100 }, - [22] = { xi.magic.spell.PROTECT_IV, mob, true, xi.action.type.ENHANCING_TARGET, xi.effect.PROTECT, 0, 25 }, - [23] = { xi.magic.spell.SHELL_IV, mob, true, xi.action.type.ENHANCING_TARGET, xi.effect.SHELL, 0, 25 }, - [24] = { xi.magic.spell.HASTE, mob, true, xi.action.type.ENHANCING_TARGET, xi.effect.HASTE, 5, 100 }, - [25] = { xi.magic.spell.REGEN, mob, true, xi.action.type.ENHANCING_TARGET, xi.effect.REGEN, 0, 100 }, - [26] = { xi.magic.spell.CURE_IV, mob, true, xi.action.type.HEALING_TARGET, 33, 0, 100 }, + [ 1] = { spellId = xi.magic.spell.FIRE_III }, + [ 2] = { spellId = xi.magic.spell.BLIZZARD_III }, + [ 3] = { spellId = xi.magic.spell.AERO_III }, + [ 4] = { spellId = xi.magic.spell.WATER_III }, + [ 5] = { spellId = xi.magic.spell.THUNDER_III }, + [ 6] = { spellId = xi.magic.spell.STONE_IV }, + [ 7] = { spellId = xi.magic.spell.BIO_III }, + [ 8] = { spellId = xi.magic.spell.POISON_II }, + [ 9] = { spellId = xi.magic.spell.DIA_II }, + [10] = { spellId = xi.magic.spell.DIAGA_II }, + [11] = { spellId = xi.magic.spell.BIND }, + [12] = { spellId = xi.magic.spell.GRAVITY }, + [13] = { spellId = xi.magic.spell.SLEEP }, + [14] = { spellId = xi.magic.spell.SLEEP_II }, + [15] = { spellId = xi.magic.spell.SLOW }, + [16] = { spellId = xi.magic.spell.PARALYZE }, + [17] = { spellId = xi.magic.spell.BLIND }, + [18] = { spellId = xi.magic.spell.BLINK }, + [19] = { spellId = xi.magic.spell.STONESKIN }, + [20] = { spellId = xi.magic.spell.AQUAVEIL }, + [21] = { spellId = xi.magic.spell.ENWATER }, + [22] = { spellId = xi.magic.spell.PROTECT_IV }, + [23] = { spellId = xi.magic.spell.SHELL_IV }, + [24] = { spellId = xi.magic.spell.HASTE }, + [25] = { spellId = xi.magic.spell.REGEN }, + [26] = { spellId = xi.magic.spell.CURE_IV, hpp = 33 }, + [27] = { spellId = xi.magic.spell.DISPEL, evaluateDispel = true }, } - if target:hasStatusEffectByFlag(xi.effectFlag.DISPELABLE) then - table.insert(spellList, #spellList + 1, { xi.magic.spell.DISPEL, target, false, xi.action.type.NONE, nil, 100 }) - end - - local groupTable = + local allyList = { GetMobByID(mob:getID() + 1), -- Queen of Cups GetMobByID(mob:getID() + 2), -- Queen of Batons } - return xi.combat.behavior.chooseAction(mob, target, groupTable, spellList) + return xi.combat.behavior.chooseSpell(mob, target, spellList, allyList, nil) end return entity diff --git a/scripts/zones/Balgas_Dais/mobs/King_of_Cups.lua b/scripts/zones/Balgas_Dais/mobs/King_of_Cups.lua index 920e94b5a1e..0d19e39ac40 100644 --- a/scripts/zones/Balgas_Dais/mobs/King_of_Cups.lua +++ b/scripts/zones/Balgas_Dais/mobs/King_of_Cups.lua @@ -40,41 +40,38 @@ end entity.onMobSpellChoose = function(mob, target, spellId) local spellList = { - [ 1] = { xi.magic.spell.BANISH_III, target, false, xi.action.type.DAMAGE_TARGET, nil, 0, 100 }, - [ 2] = { xi.magic.spell.BANISHGA_III, target, false, xi.action.type.DAMAGE_TARGET, nil, 0, 100 }, - [ 3] = { xi.magic.spell.HOLY, target, false, xi.action.type.DAMAGE_TARGET, nil, 0, 100 }, - [ 4] = { xi.magic.spell.DIA_II, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.DIA, 3, 100 }, - [ 5] = { xi.magic.spell.DIAGA_II, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.DIA, 3, 100 }, - [ 6] = { xi.magic.spell.PARALYZE, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.PARALYSIS, 0, 100 }, - [ 7] = { xi.magic.spell.SLOW, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.SLOW, 3, 100 }, - [ 8] = { xi.magic.spell.SILENCE, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.SILENCE, 0, 100 }, - [ 9] = { xi.magic.spell.BLINK, mob, false, xi.action.type.ENHANCING_FORCE_SELF, xi.effect.BLINK, 0, 100 }, - [10] = { xi.magic.spell.STONESKIN, mob, false, xi.action.type.ENHANCING_FORCE_SELF, xi.effect.STONESKIN, 0, 100 }, - [11] = { xi.magic.spell.AQUAVEIL, mob, false, xi.action.type.ENHANCING_FORCE_SELF, xi.effect.AQUAVEIL, 0, 100 }, - [12] = { xi.magic.spell.HASTE, mob, true, xi.action.type.ENHANCING_TARGET, xi.effect.HASTE, 5, 100 }, - [13] = { xi.magic.spell.PROTECT_IV, mob, true, xi.action.type.ENHANCING_TARGET, xi.effect.PROTECT, 0, 25 }, - [14] = { xi.magic.spell.SHELL_IV, mob, true, xi.action.type.ENHANCING_TARGET, xi.effect.SHELL, 0, 25 }, - [15] = { xi.magic.spell.POISONA, mob, true, xi.action.type.HEALING_EFFECT, xi.effect.POISON, 0, 100 }, - [16] = { xi.magic.spell.BLINDNA, mob, true, xi.action.type.HEALING_EFFECT, xi.effect.BLINDNESS, 0, 100 }, - [17] = { xi.magic.spell.PARALYNA, mob, true, xi.action.type.HEALING_EFFECT, xi.effect.PARALYSIS, 0, 100 }, - [18] = { xi.magic.spell.POISONA, mob, true, xi.action.type.HEALING_EFFECT, xi.effect.POISON, 0, 100 }, - [19] = { xi.magic.spell.SILENA, mob, true, xi.action.type.HEALING_EFFECT, xi.effect.SILENCE, 0, 100 }, - [20] = { xi.magic.spell.VIRUNA, mob, true, xi.action.type.HEALING_EFFECT, xi.effect.DISEASE, 0, 100 }, - [21] = { xi.magic.spell.VIRUNA, mob, true, xi.action.type.HEALING_EFFECT, xi.effect.PLAGUE, 0, 100 }, - [22] = { xi.magic.spell.CURE_V, mob, true, xi.action.type.HEALING_TARGET, 33, 0, 100 }, + [ 1] = { spellId = xi.magic.spell.BANISH_III }, + [ 2] = { spellId = xi.magic.spell.BANISHGA_III }, + [ 3] = { spellId = xi.magic.spell.HOLY }, + [ 4] = { spellId = xi.magic.spell.DIA_II }, + [ 5] = { spellId = xi.magic.spell.DIAGA_II }, + [ 6] = { spellId = xi.magic.spell.PARALYZE }, + [ 7] = { spellId = xi.magic.spell.SLOW }, + [ 8] = { spellId = xi.magic.spell.SILENCE }, + [ 9] = { spellId = xi.magic.spell.BLINK }, + [10] = { spellId = xi.magic.spell.STONESKIN }, + [11] = { spellId = xi.magic.spell.AQUAVEIL }, + [12] = { spellId = xi.magic.spell.HASTE }, + [13] = { spellId = xi.magic.spell.PROTECT_IV, weight = 25 }, + [14] = { spellId = xi.magic.spell.SHELL_IV, weight = 25 }, + [15] = { spellId = xi.magic.spell.POISONA }, + [16] = { spellId = xi.magic.spell.BLINDNA }, + [17] = { spellId = xi.magic.spell.PARALYNA }, + [18] = { spellId = xi.magic.spell.POISONA }, + [19] = { spellId = xi.magic.spell.SILENA }, + [20] = { spellId = xi.magic.spell.VIRUNA }, + [21] = { spellId = xi.magic.spell.VIRUNA }, + [22] = { spellId = xi.magic.spell.CURE_V, hpp = 33 }, + [23] = { spellId = xi.magic.spell.ERASE, evaluateErase = true }, } - if mob:hasStatusEffectByFlag(xi.effectFlag.ERASABLE) then - table.insert(spellList, #spellList + 1, { xi.magic.spell.ERASE, mob, true, xi.action.type.NONE, nil, 100 }) - end - - local groupTable = + local allyList = { GetMobByID(mob:getID() + 4), -- Queen of Cups GetMobByID(mob:getID() + 5), -- Queen of Batons } - return xi.combat.behavior.chooseAction(mob, target, groupTable, spellList) + return xi.combat.behavior.chooseSpell(mob, target, spellList, allyList, nil) end return entity diff --git a/scripts/zones/Balgas_Dais/mobs/King_of_Swords.lua b/scripts/zones/Balgas_Dais/mobs/King_of_Swords.lua index 33344ccdd5e..1d9e71872c2 100644 --- a/scripts/zones/Balgas_Dais/mobs/King_of_Swords.lua +++ b/scripts/zones/Balgas_Dais/mobs/King_of_Swords.lua @@ -40,20 +40,20 @@ end entity.onMobSpellChoose = function(mob, target, spellId) local spellList = { - [1] = { xi.magic.spell.BANISH_II, target, false, xi.action.type.DAMAGE_TARGET, nil, 0, 100 }, - [2] = { xi.magic.spell.FLASH, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.FLASH, 0, 100 }, - [3] = { xi.magic.spell.PROTECT_IV, mob, true, xi.action.type.ENHANCING_TARGET, xi.effect.PROTECT, 0, 25 }, - [4] = { xi.magic.spell.SHELL_III, mob, true, xi.action.type.ENHANCING_TARGET, xi.effect.SHELL, 0, 25 }, - [5] = { xi.magic.spell.CURE_IV, mob, true, xi.action.type.HEALING_TARGET, 33, 0, 100 }, + [1] = { spellId = xi.magic.spell.BANISH_II }, + [2] = { spellId = xi.magic.spell.FLASH }, + [3] = { spellId = xi.magic.spell.PROTECT_IV }, + [4] = { spellId = xi.magic.spell.SHELL_III }, + [5] = { spellId = xi.magic.spell.CURE_IV, hpp = 33 }, } - local groupTable = + local allyList = { GetMobByID(mob:getID() + 2), -- Queen of Cups GetMobByID(mob:getID() + 3), -- Queen of Batons } - return xi.combat.behavior.chooseAction(mob, target, groupTable, spellList) + return xi.combat.behavior.chooseSpell(mob, target, spellList, allyList, nil) end return entity diff --git a/scripts/zones/Balgas_Dais/mobs/Queen_of_Batons.lua b/scripts/zones/Balgas_Dais/mobs/Queen_of_Batons.lua index 13837353d74..6a8da703bc7 100644 --- a/scripts/zones/Balgas_Dais/mobs/Queen_of_Batons.lua +++ b/scripts/zones/Balgas_Dais/mobs/Queen_of_Batons.lua @@ -38,31 +38,31 @@ end entity.onMobSpellChoose = function(mob, target, spellId) local spellList = { - [ 1] = { xi.magic.spell.FIRE_IV, target, false, xi.action.type.DAMAGE_TARGET, nil, 0, 100 }, - [ 2] = { xi.magic.spell.BLIZZARD_IV, target, false, xi.action.type.DAMAGE_TARGET, nil, 0, 100 }, - [ 3] = { xi.magic.spell.AERO_IV, target, false, xi.action.type.DAMAGE_TARGET, nil, 0, 100 }, - [ 4] = { xi.magic.spell.THUNDER_IV, target, false, xi.action.type.DAMAGE_TARGET, nil, 0, 100 }, - [ 5] = { xi.magic.spell.WATER_IV, target, false, xi.action.type.DAMAGE_TARGET, nil, 0, 100 }, - [ 6] = { xi.magic.spell.FIRAGA_III, target, false, xi.action.type.DAMAGE_TARGET, nil, 0, 100 }, - [ 7] = { xi.magic.spell.THUNDAGA_III, target, false, xi.action.type.DAMAGE_TARGET, nil, 0, 100 }, - [ 8] = { xi.magic.spell.DRAIN, target, false, xi.action.type.DRAIN_HP, nil, 0, 100 }, - [ 9] = { xi.magic.spell.ASPIR, target, false, xi.action.type.DRAIN_MP, nil, 0, 100 }, - [10] = { xi.magic.spell.STUN, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.STUN, 0, 100 }, - [11] = { xi.magic.spell.BLIND, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.BLINDNESS, 0, 100 }, - [12] = { xi.magic.spell.BIND, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.BIND, 0, 100 }, - [13] = { xi.magic.spell.BURN, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.BURN, 0, 100 }, - [14] = { xi.magic.spell.SHOCK, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.SHOCK, 0, 100 }, - [15] = { xi.magic.spell.CHOKE, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.CHOKE, 0, 100 }, - [16] = { xi.magic.spell.BIO_II, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.BIO, 4, 100 }, - [17] = { xi.magic.spell.POISONGA_II, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.POISON, 0, 100 }, - [18] = { xi.magic.spell.SLEEP, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.SLEEP_I, 0, 50 }, - [19] = { xi.magic.spell.SLEEP_II, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.SLEEP_I, 0, 50 }, - [20] = { xi.magic.spell.SLEEPGA, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.SLEEP_I, 0, 50 }, - [21] = { xi.magic.spell.SLEEPGA_II, target, false, xi.action.type.ENFEEBLING_TARGET, xi.effect.SLEEP_I, 0, 50 }, - [22] = { xi.magic.spell.BLAZE_SPIKES, mob, false, xi.action.type.ENHANCING_FORCE_SELF, xi.effect.BLAZE_SPIKES, 0, 100 }, + [ 1] = { spellId = xi.magic.spell.FIRE_IV }, + [ 2] = { spellId = xi.magic.spell.BLIZZARD_IV }, + [ 3] = { spellId = xi.magic.spell.AERO_IV }, + [ 4] = { spellId = xi.magic.spell.THUNDER_IV }, + [ 5] = { spellId = xi.magic.spell.WATER_IV }, + [ 6] = { spellId = xi.magic.spell.FIRAGA_III }, + [ 7] = { spellId = xi.magic.spell.THUNDAGA_III }, + [ 8] = { spellId = xi.magic.spell.DRAIN, evaluateUndead = true }, + [ 9] = { spellId = xi.magic.spell.ASPIR, mp = 1, evaluateUndead = true }, + [10] = { spellId = xi.magic.spell.STUN }, + [11] = { spellId = xi.magic.spell.BLIND }, + [12] = { spellId = xi.magic.spell.BIND }, + [13] = { spellId = xi.magic.spell.BURN }, + [14] = { spellId = xi.magic.spell.SHOCK }, + [15] = { spellId = xi.magic.spell.CHOKE }, + [16] = { spellId = xi.magic.spell.BIO_II }, + [17] = { spellId = xi.magic.spell.POISONGA_II }, + [18] = { spellId = xi.magic.spell.SLEEP, weight = 50 }, + [19] = { spellId = xi.magic.spell.SLEEP_II, weight = 50 }, + [20] = { spellId = xi.magic.spell.SLEEPGA, weight = 50 }, + [21] = { spellId = xi.magic.spell.SLEEPGA_II, weight = 50 }, + [22] = { spellId = xi.magic.spell.BLAZE_SPIKES }, } - return xi.combat.behavior.chooseAction(mob, target, nil, spellList) + return xi.combat.behavior.chooseSpell(mob, target, spellList, nil, nil) end return entity diff --git a/src/map/utils/battleutils.cpp b/src/map/utils/battleutils.cpp index f9c021f6ffa..0994bc28a79 100644 --- a/src/map/utils/battleutils.cpp +++ b/src/map/utils/battleutils.cpp @@ -5130,34 +5130,66 @@ auto GetWeather(CBattleEntity* PEntity, bool ignoreScholar, Weather zoneWeather) { scholarSpell = Weather::HotSpell; } - if (PEntity->StatusEffectContainer->HasStatusEffect(EFFECT_RAINSTORM)) + else if (PEntity->StatusEffectContainer->HasStatusEffect(EFFECT_RAINSTORM)) { scholarSpell = Weather::Rain; } - if (PEntity->StatusEffectContainer->HasStatusEffect(EFFECT_SANDSTORM)) + else if (PEntity->StatusEffectContainer->HasStatusEffect(EFFECT_SANDSTORM)) { scholarSpell = Weather::DustStorm; } - if (PEntity->StatusEffectContainer->HasStatusEffect(EFFECT_WINDSTORM)) + else if (PEntity->StatusEffectContainer->HasStatusEffect(EFFECT_WINDSTORM)) { scholarSpell = Weather::Wind; } - if (PEntity->StatusEffectContainer->HasStatusEffect(EFFECT_HAILSTORM)) + else if (PEntity->StatusEffectContainer->HasStatusEffect(EFFECT_HAILSTORM)) { scholarSpell = Weather::Snow; } - if (PEntity->StatusEffectContainer->HasStatusEffect(EFFECT_THUNDERSTORM)) + else if (PEntity->StatusEffectContainer->HasStatusEffect(EFFECT_THUNDERSTORM)) { scholarSpell = Weather::Thunder; } - if (PEntity->StatusEffectContainer->HasStatusEffect(EFFECT_AURORASTORM)) + else if (PEntity->StatusEffectContainer->HasStatusEffect(EFFECT_AURORASTORM)) { scholarSpell = Weather::Auroras; } - if (PEntity->StatusEffectContainer->HasStatusEffect(EFFECT_VOIDSTORM)) + else if (PEntity->StatusEffectContainer->HasStatusEffect(EFFECT_VOIDSTORM)) { scholarSpell = Weather::Gloom; } + else if (PEntity->StatusEffectContainer->HasStatusEffect(EFFECT_FIRESTORM_II)) + { + scholarSpell = Weather::HeatWave; + } + else if (PEntity->StatusEffectContainer->HasStatusEffect(EFFECT_RAINSTORM_II)) + { + scholarSpell = Weather::Squall; + } + else if (PEntity->StatusEffectContainer->HasStatusEffect(EFFECT_SANDSTORM_II)) + { + scholarSpell = Weather::SandStorm; + } + else if (PEntity->StatusEffectContainer->HasStatusEffect(EFFECT_WINDSTORM_II)) + { + scholarSpell = Weather::Gales; + } + else if (PEntity->StatusEffectContainer->HasStatusEffect(EFFECT_HAILSTORM_II)) + { + scholarSpell = Weather::Blizzards; + } + else if (PEntity->StatusEffectContainer->HasStatusEffect(EFFECT_THUNDERSTORM_II)) + { + scholarSpell = Weather::Thunderstorms; + } + else if (PEntity->StatusEffectContainer->HasStatusEffect(EFFECT_AURORASTORM_II)) + { + scholarSpell = Weather::StellarGlare; + } + else if (PEntity->StatusEffectContainer->HasStatusEffect(EFFECT_VOIDSTORM_II)) + { + scholarSpell = Weather::Darkness; + } } if (ignoreScholar || scholarSpell == Weather::None || static_cast(zoneWeather) == (static_cast(scholarSpell) + 1))