Skill #2718001

Fire Breath

Level 1

##2711000

Cost 1 | Attack

ID 2718001

Formulas & functions

CommonFun links

赤焰吐息Lv 1 | buff | Buffs 137610

Formula source

-- Lua source unavailable --
赤焰吐息Lv 1 | buff | Buffs 137622

Formula source

function CommonFun.calcBuff_8250(srcUser, targetUser, a, b, c, d, lv)
  if srcUser == nil or targetUser == nil then
    return 0
  end
  local skilllv = srcUser:GetLernedSkillLevel(2701)
  local Value = srcUser:GetGemValue(207121)
  local A = skilllv * 2 + 1 + Value / 1000
  if 7 <= skilllv and srcUser:HasBuffID(137593) then
    A = A + 10
  end
  return A
end
赤焰吐息Lv 1 | buff | Buffs 137621, 137623, 137624, 137625, 137620

Formula source

function CommonFun.calcBuff_8251(srcUser, targetUser, a, b, c, d, lv)
  if srcUser == nil or targetUser == nil then
    return 0
  end
  local skilllv = srcUser:GetLernedSkillLevel(2701)
  local A = skilllv * a + b
  if 7 <= skilllv and srcUser:HasBuffID(137593) then
    A = A + 10
  end
  return A
end
赤焰吐息Lv 1 | damage

Formula source

function CommonFun.calcDamage_67501(srcUser, targetUser, params, damageParam, logger)
  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 RangeDam = srcUser:GetProperty("RangeDam")
  local srcAtkElement = CommonFun.GetUserAtkAttr(srcUser, params, damageParam)
  local targetDefElement = targetUser:GetProperty("DefAttr")
  local elementparam2 = CommonFun.CalcElementParam2(srcUser, targetUser, params, damageParam, logger)
  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 skillID, skillLevel = CommonFun.UnmergeSkillID(params.skillIDAndLevel)
  if damageParam.elementparam == 10 then
    local skilllv_ds = srcUser:GetLernedSkillLevel(2713)
    damChangePer = skilllv_ds
  end
  local A = ((MAtkFinal * MDefReduc * (1 - MDamReduc2) + MRefine) * (1 - RefineMDamReduc) * damChangePer * (1 + MDamIncrease) * CommonFun.calcMagicElement(srcUser, targetUser, params, damageParam) * elementparam2 - Vit2 / 2 * (1 + VitPer2) - Int2 * (1 + IntPer2)) * (1 + RangeDam)
  if skillID == 2718 then
    local Num = srcUser:GetBuffLayer(137570)
    local count = params.hitedCount
    if count == 1 then
      A = A * (1 + Num * 0.5)
    end
  end
  if skillID == 2706 then
    local GemValue = srcUser:GetGemValue(207141)
    A = A * (1 + GemValue / 100000)
  end
  if A <= 1 then
    return 1
  end
  if srcUser:HasBuffID(137540) then
    local skilllv_an = srcUser:GetLernedSkillLevel(2704)
    return A * (1 + skilllv_an * 0.2), CommonFun.DamageType.Crit
  end
  return A
end
赤焰吐息Lv 1 | damage

Formula source

function CommonFun.calcDamage_80(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 Numxp = srcUser:GetRunePoint(82001)
  local NormalAtk = srcUser:GetProperty("NormalAtk")
  NormalAtk = NormalAtk + (3 + 0.3 * Numxp) * Int
  local MAtkPer = srcUser:GetProperty("MAtkPer")
  local MDamIncrease = CommonFun.calcMDamIncrease(srcUser, targetUser)
  local IgnoreMDef = srcUser:GetProperty("IgnoreMDef")
  if 1 <= IgnoreMDef then
    IgnoreMDef = 1
  end
  local Num1 = srcUser:GetBuffLayer(90000952)
  local Num2 = srcUser:GetBuffLayer(90000953)
  local Num3 = srcUser:GetBuffLayer(90000954)
  local Num24 = 0
  local RefineLv2 = srcUser:GetEquipedRefineLv(2)
  if srcUser:HasBuffID(90000959) then
    Num24 = Num24 + RefineLv2 * 0.01
  end
  local Num26 = 0
  local equipRing = srcUser:getEquip(CommonFun.PackType.EPACKTYPE_EQUIP, CommonFun.EquipPos.EEQUIPPOS_ARMOUR)
  if equipRing.id == 42126 or equipRing.id == 142126 then
    Num26 = Num26 + equipRing.refinelv * 0.01 + 0.1
  end
  if (equipRing.id == 42126 or equipRing.id == 142126) and equipRing.refinelv >= 15 then
    Num26 = Num26 + 0.05
  end
  local equipRingSD = srcUser:getEquip(CommonFun.PackType.EPACKTYPE_SHADOWEQUIP, CommonFun.EquipPos.EEQUIPPOS_ARMOUR)
  if equipRingSD.id == 42126 or equipRingSD.id == 142126 then
    Num26 = Num26 + (equipRingSD.refinelv * 0.01 + 0.1) * equipRingSD.quench_per / 100
  end
  if (equipRingSD.id == 42126 or equipRingSD.id == 142126) and equipRingSD.refinelv >= 15 then
    Num26 = Num26 + 0.05 * equipRingSD.quench_per / 100
  end
  local Num4 = srcUser:GetBuffLayer(90000942)
  local Num5 = srcUser:GetBuffLayer(90000944)
  local Num25 = 0
  local RefineLv4 = srcUser:GetEquipedRefineLv(4)
  if srcUser:HasBuffID(90000949) and 10 <= RefineLv4 then
    Num25 = 1
  end
  local Num27 = 0
  local equipRingshoes = srcUser:getEquip(CommonFun.PackType.EPACKTYPE_EQUIP, CommonFun.EquipPos.EEQUIPPOS_SHOES)
  if equipRingshoes.id == 43587 or equipRingshoes.id == 143587 then
    if equipRingshoes.refinelv < 5 then
      Num27 = Num27 + 10
    elseif equipRingshoes.refinelv >= 5 and equipRingshoes.refinelv < 10 then
      Num27 = Num27 + 10 + 5
    elseif equipRingshoes.refinelv >= 10 and equipRingshoes.refinelv < 15 then
      Num27 = Num27 + 10 + 5 + 5
    elseif equipRingshoes.refinelv >= 15 then
      Num27 = Num27 + 10 + 5 + 5 + 5
    end
  end
  local equipRingSDshoes = srcUser:getEquip(CommonFun.PackType.EPACKTYPE_SHADOWEQUIP, CommonFun.EquipPos.EEQUIPPOS_SHOES)
  if equipRingSDshoes.id == 43587 or equipRingSDshoes.id == 143587 then
    if equipRingSDshoes.refinelv < 5 then
      Num27 = Num27 + 10 * equipRingSDshoes.quench_per / 100
    elseif equipRingSDshoes.refinelv >= 5 and equipRingSDshoes.refinelv < 10 then
      Num27 = Num27 + 15 * equipRingSDshoes.quench_per / 100
    elseif equipRingSDshoes.refinelv >= 10 and equipRingSDshoes.refinelv < 15 then
      Num27 = Num27 + 20 * equipRingSDshoes.quench_per / 100
    elseif equipRingSDshoes.refinelv >= 15 then
      Num27 = Num27 + 25 * equipRingSDshoes.quench_per / 100
    end
  end
  local skilllv_1 = srcUser:GetLernedSkillLevel(1324)
  local CriDam = 0
  if 0 < skilllv_1 and skilllv_1 <= 5 then
    CriDam = 0.1
  elseif 5 < skilllv_1 then
    CriDam = 0.1 + (skilllv_1 - 5) * 0.05
  end
  local Num_bs = srcUser:GetRunePoint(82024)
  local GemValue1 = srcUser:GetGemValue(82101)
  local GemValue2 = srcUser:GetGemValue(82102)
  local RuneDamage = 1 + CriDam + 0.03 * Num1 + 0.03 * Num2 + 0.04 * Num3 + 0.05 * Num_bs + GemValue2 / 100000 + Num24 + Num26
  local RuneDamage1 = 0
  if 0 < Num4 + Num5 + skilllv_1 + Num25 + Num27 then
    RuneDamage1 = skilllv_1 + Luk / 3 + Num4 * 5 + Num5 * 5 + GemValue1 / 1000 + Num25 * 5 + Num27
  end
  local MRefine = srcUser:GetProperty("MRefine")
  local srcAtkElement = CommonFun.GetUserAtkAttr(srcUser, params, damageParam)
  local targetDefElement = targetUser:GetProperty("DefAttr")
  local elementparam2 = CommonFun.CalcElementParam2(srcUser, targetUser, params, damageParam, logger)
  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 + NormalAtk) * (1 + MAtkPer) + BaseMAtk) * raceparam * bossparam * bossparam2
  local MDefReduc = CommonFun.CalcMDef(srcUser, targetUser)
  local A = (MAtkFinal * MDefReduc * (1 - MDamReduc2) + MRefine) * (1 - RefineMDamReduc) * damChangePer * (1 + MDamIncrease) * CommonFun.calcMagicElement(srcUser, targetUser, params, damageParam) * elementparam2 - Vit2 / 2 * (1 + VitPer2) - Int2 * (1 + IntPer2)
  local skillID, skillLevel = CommonFun.UnmergeSkillID(params.skillIDAndLevel)
  if skillID == 2718 then
    local Num = srcUser:GetBuffLayer(137570)
    local count = params.hitedCount
    if count == 1 then
      A = A * (1 + Num * 0.5)
    end
  end
  if MDef2 <= 0 and (srcUser:HasBuffID(42360) or srcUser:HasBuffID(43110) or srcUser:HasBuffLayer(43110, EBUFFERLAYER_SHADOW)) and (srcUser:HasBuffID(41670) or srcUser:HasBuffID(42240)) then
    RuneDamage1 = 100
  end
  local damageType = CommonFun.DamageType.Normal
  if CommonFun.IsInRate(RuneDamage1, srcUser:GetRandom()) then
    A = A * RuneDamage
    damageType = CommonFun.DamageType.Crit
  end
  if srcUser:HasBuffID(137540) and skillID == 2718 then
    local skilllv_an = srcUser:GetLernedSkillLevel(2704)
    A = A * (1 + skilllv_an * 0.2)
    damageType = CommonFun.DamageType.Crit
  end
  if A <= 1 then
    return 1
  end
  return A, damageType
end

Skill JSON (Level 1)

{
  "id": 2718001,
  "NameZh": "赤焰吐息",
  "Level": 1,
  "Icon": "skill_2711001",
  "Cost": 1,
  "Desc": [
    {
      "id": 2711000,
      "params": "_EmptyTable"
    }
  ],
  "RollType": 2,
  "Launch_Type": 2,
  "DamageType": 2,
  "SkillType": "Attack",
  "Camps": "Enemy",
  "Launch_Range": 7,
  "Fire_EP": 3,
  "Target_EP": 2,
  "Attack_EP": 3,
  "Logic": "MultiLockedTarget",
  "Logic_Param": {
    "emit": {
      "effect": "sfx_magicsnake_ryps_bullet_prf,LowFire_B",
      "multi_target": true,
      "single_fire": true,
      "speed": 20,
      "type": 1
    },
    "extra_count_buff": 137570,
    "hideClientDamage": 1,
    "no_select": 1,
    "range": 2,
    "range_num": 12
  },
  "Damage": [
    {
      "damChangePer": 10,
      "elementparam": 4,
      "type": 80
    },
    {
      "damChangePer": 0,
      "elementparam": 10,
      "type": 67501
    }
  ],
  "DamTime": {
    "type": 1,
    "value": 2
  },
  "Buff": {
    "enemy": [
      137610
    ],
    "enemy_superposition": [
      {
        "id": 137621,
        "skill": 2703
      },
      {
        "id": 137623,
        "skill": 2705
      },
      {
        "id": 137624,
        "skill": 2706
      },
      {
        "id": 137625,
        "skill": 2707
      }
    ],
    "self_superposition": [
      {
        "id": 137620,
        "skill": 2702
      },
      {
        "id": 137622,
        "skill": 2704
      }
    ]
  },
  "Pvp_buff": {
    "enemy": [
      137610
    ],
    "enemy_superposition": [
      {
        "id": 137621,
        "skill": 2703
      },
      {
        "id": 137623,
        "skill": 2705
      },
      {
        "id": 137624,
        "skill": 2706
      },
      {
        "id": 137625,
        "skill": 2707
      }
    ],
    "self_superposition": [
      {
        "id": 137620,
        "skill": 2702
      },
      {
        "id": 137622,
        "skill": 2704
      }
    ]
  },
  "AttackAct": [
    "use_skill"
  ],
  "SE_attack": "Skill/skill_hero_snake_fireball_attack_01",
  "SE_hit": "Skill/skill_hero_snake_fireball_hit_01",
  "description": {
    "chinesesimplified": "##2711000",
    "english": "##2711000",
    "german": "##2711000",
    "portuguese": "##2711000",
    "spanish": "##2711000"
  }
}