Lvl: 11
Attack
Range: 6
•
Lvl: 2
Buff
CD: 120 sec
• Forms a storm with a radius of 6m around the caster, and all enemy targets caught in the storm will receive 300%% Wind and 300%% Water M. DMG per second while reducing their Move SPD by 75%%, Attack SPD by 75%%, and Phy. and M. ATK by 40%%. The storm can follow the caster to move together. The storm can hit the hidden enemy target and reveal it. When the caster uses Heart of the Storm, Pen. and M.Pen. increase by 30%%, and all received damage reduces by 50%%. The storm lasts for 12 seconds, and the skill cooldown time is 120 seconds
Lvl: 1
Buff
CD: 150 sec
• Forms a storm with a radius of 6m around the caster, and all enemy targets caught in the storm will receive 200%% Wind and 200%% Water M. DMG per second while reducing their Move SPD by 50%%, Attack SPD by 50%%, and Phy. and M. ATK by 20%%. The storm can follow the caster to move together. The storm can hit the hidden enemy target and reveal it. When the caster uses Heart of the Storm, Pen. and M.Pen. increase by 20%%, and all received damage reduces by 50%%. The storm lasts for 8 seconds, and the skill cooldown time is 150 seconds
Formula
function CommonFun.calcDamage_9018(srcUser, targetUser, params, damageParam, logger)
local Luk = srcUser:GetProperty("Luk")
local Int = srcUser:GetProperty("Int")
local Vit = srcUser:GetProperty("Vit")
local MAtk = srcUser:GetProperty("MAtk")
local MAtkPer = srcUser:GetProperty("MAtkPer")
local MDamIncrease = CommonFun.calcMDamIncrease(srcUser, targetUser)
local IgnoreMDef = srcUser:GetProperty("IgnoreMDef")
if 1 <= IgnoreMDef then
IgnoreMDef = 1
end
local MRefine = srcUser:GetProperty("MRefine")
local srcAtkElement1 = 1
local elementInc1 = 0
local elementRed1 = 0
local targetDefElement = targetUser:GetProperty("DefAttr")
if nil == targetDefElement then
logger.error(string.format("%s targetDefElement is nil", targetUser.name))
return 0
end
if nil == CommonFun.NatureProps[targetDefElement] then
logger.error(string.format("%s CommonFun.NatureProps[%s] is nil", srcUser.name, tostring(targetDefElement)))
return 0
end
if nil == CommonFun.NatureProps[srcAtkElement1] then
logger.error(string.format("CommonFun.NatureProps[%s] is nil", tostring(srcAtkElement1)))
return 0
end
elementInc1 = srcUser:GetProperty(CommonFun.NatureProps[targetDefElement][1])
elementRed1 = targetUser:GetProperty(CommonFun.NatureProps[srcAtkElement1][2])
elementAtk1 = srcUser:GetProperty(CommonFun.NatureProps[srcAtkElement1][3])
if nil == elementAtk1 then
elementAtk1 = 0
end
local result1 = 1 + elementAtk1 - elementRed1
if result1 <= 0.1 then
result1 = 0.1
end
local srcAtkElement3 = 3
local elementInc3 = 0
local elementRed3 = 0
local targetDefElement = targetUser:GetProperty("DefAttr")
if nil == targetDefElement then
logger.error(string.format("%s targetDefElement is nil", targetUser.name))
return 0
end
if nil == CommonFun.NatureProps[targetDefElement] then
logger.error(string.format("%s CommonFun.NatureProps[%s] is nil", srcUser.name, tostring(targetDefElement)))
return 0
end
if nil == CommonFun.NatureProps[srcAtkElement3] then
logger.error(string.format("CommonFun.NatureProps[%s] is nil", tostring(srcAtkElement3)))
return 0
end
elementInc3 = srcUser:GetProperty(CommonFun.NatureProps[targetDefElement][1])
elementRed3 = targetUser:GetProperty(CommonFun.NatureProps[srcAtkElement3][2])
elementAtk3 = srcUser:GetProperty(CommonFun.NatureProps[srcAtkElement3][3])
if nil == elementAtk3 then
elementAtk3 = 0
end
local result3 = 1 + elementAtk3 - elementRed3
if result3 <= 0.1 then
result3 = 0.1
end
local elementparam21 = result1
local elementparam23 = result3
local raceparam = CommonFun.CalcRaceParam(srcUser, targetUser, params, damageParam, logger)
local raceparam2 = CommonFun.CalcRaceParam2(srcUser, targetUser, params, damageParam, logger)
local bossparam = CommonFun.CalcBossParam(srcUser, targetUser, params, damageParam, logger)
local bossparam2 = CommonFun.CalcBossParam2(srcUser, targetUser, params, damageParam, logger)
local MDef2 = targetUser:GetProperty("MDef")
local MDefPer2 = targetUser:GetProperty("MDefPer")
local Vit2 = targetUser:GetProperty("Vit")
local VitPer2 = targetUser:GetProperty("VitPer")
local Int2 = targetUser:GetProperty("Int")
local IntPer2 = targetUser:GetProperty("IntPer")
local MDamReduc2 = CommonFun.calcMDamReDuc(srcUser, targetUser)
local RefineMDamReduc = targetUser:GetProperty("RefineMDamReduc")
local damChangePer = damageParam.damChangePer
local BaseMAtk = Int + math.floor(Int * Int / 100)
local MAtkFinal = ((MAtk - BaseMAtk) * (1 + MAtkPer) + BaseMAtk) * raceparam * bossparam * bossparam2
local MDefReduc = CommonFun.CalcMDef(srcUser, targetUser)
local A1 = (MAtkFinal * MDefReduc * (1 - MDamReduc2) + MRefine) * damChangePer * (1 - RefineMDamReduc) * (1 + MDamIncrease) * CommonFun.GetElementRate(srcUser, srcAtkElement1, targetUser, targetDefElement, params, damageParam) * elementparam21 - Vit2 / 2 * (1 + VitPer2) - Int2 * (1 + IntPer2)
local A3 = (MAtkFinal * MDefReduc * (1 - MDamReduc2) + MRefine) * damChangePer * (1 - RefineMDamReduc) * (1 + MDamIncrease) * CommonFun.GetElementRate(srcUser, srcAtkElement3, targetUser, targetDefElement, params, damageParam) * elementparam23 - Vit2 / 2 * (1 + VitPer2) - Int2 * (1 + IntPer2)
local A = A1 + A3
if A <= 1 then
return 1
end
return A
end
Formula
{
"id": 1025012,
"Cost": 1,
"Icon": "xpskill11",
"Camps": "Enemy",
"Level": 2,
"Logic": "SkillLockedTarget",
"Damage": [
{
"type": 9018,
"damChangePer": 3
}
],
"NameZh": "##169832",
"Fire_EP": 3,
"AttackAct": [
"attack"
],
"Attack_EP": 3,
"SkillType": "Attack",
"Target_EP": 3,
"Launch_Range": 6
}