Heart of the Storm (Damage)
Lvl: 11 Attack Range: 6

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": 1025011,
  "Cost": 1,
  "Icon": "xpskill11",
  "Camps": "Enemy",
  "Level": 1,
  "Logic": "SkillLockedTarget",
  "Damage": [
    {
      "type": 9018,
      "damChangePer": 2
    }
  ],
  "NameZh": "##169832",
  "Fire_EP": 3,
  "AttackAct": [
    "attack"
  ],
  "Attack_EP": 3,
  "SkillType": "Attack",
  "Target_EP": 3,
  "Launch_Range": 6
}