----------------------------------- -- xi.effect.OVERDRIVE ----------------------------------- ---@type TEffect local effectObject = {} effectObject.onEffectGain = function(target, effect) target:addMod(xi.mod.OVERLOAD_THRESH, 5000) local pet = target:getPet() local jpBonus = target:getJobPointLevel(xi.jp.OVERDRIVE_EFFECT) * 5 if pet then pet:setLocalVar('overdrive', 1) pet:addMod(xi.mod.HASTE_MAGIC, 2500) pet:addMod(xi.mod.MAIN_DMG_RATING, 30) pet:addMod(xi.mod.RANGED_DMG_RATING, 30) pet:addMod(xi.mod.ATTP, 50) pet:addMod(xi.mod.RATTP, 50) pet:addMod(xi.mod.ACC, 100) pet:addMod(xi.mod.RACC, 100) pet:addMod(xi.mod.EVA, 50) pet:addMod(xi.mod.MEVA, 50) pet:addMod(xi.mod.REVA, 50) pet:addMod(xi.mod.DMG, -5000) if jpBonus > 0 then pet:addMod(xi.mod.STR, jpBonus) pet:addMod(xi.mod.DEX, jpBonus) pet:addMod(xi.mod.VIT, jpBonus) pet:addMod(xi.mod.AGI, jpBonus) pet:addMod(xi.mod.INT, jpBonus) pet:addMod(xi.mod.MND, jpBonus) pet:addMod(xi.mod.CHR, jpBonus) end end end effectObject.onEffectTick = function(target, effect) end effectObject.onEffectLose = function(target, effect) target:delMod(xi.mod.OVERLOAD_THRESH, 5000) local pet = target:getPet() local jpBonus = target:getJobPointLevel(xi.jp.OVERDRIVE_EFFECT) * 5 if pet and pet:getLocalVar('overdrive') ~= 0 then pet:setLocalVar('overdrive', 0) pet:delMod(xi.mod.HASTE_MAGIC, 2500) pet:delMod(xi.mod.MAIN_DMG_RATING, 30) pet:delMod(xi.mod.RANGED_DMG_RATING, 30) pet:delMod(xi.mod.ATTP, 50) pet:delMod(xi.mod.RATTP, 50) pet:delMod(xi.mod.ACC, 100) pet:delMod(xi.mod.RACC, 100) pet:delMod(xi.mod.EVA, 50) pet:delMod(xi.mod.MEVA, 50) pet:delMod(xi.mod.REVA, 50) pet:delMod(xi.mod.DMG, -5000) if jpBonus > 0 then pet:delMod(xi.mod.STR, jpBonus) pet:delMod(xi.mod.DEX, jpBonus) pet:delMod(xi.mod.VIT, jpBonus) pet:delMod(xi.mod.AGI, jpBonus) pet:delMod(xi.mod.INT, jpBonus) pet:delMod(xi.mod.MND, jpBonus) pet:delMod(xi.mod.CHR, jpBonus) end end end return effectObject