Skill #306001

Asura Strike

Consumes all SP to deal Neutral P.DMG that equals to P.ATK * ([8df936]%s[-]+remaining SP/[8df936]%s[-])+[8df936]%s[-]+[8df936]%s[-] * [8df936]%s[-]. This damage ignores [8df936]%s%%[-] DMG down effect contributed by race DMG down, elemental DMG down and P.DMG down effects, and ignores DMG down the target gains from skills. Can be used only during Critical Explosion. SP stops replenishing for [8df936]%s[-]s. The Spirit Bomb cost is based on the previous skills used: Cast directly: 5 Spirit Bombs After [Combo Finish] and [Blade Stop]: 4 Spirit Bombs After [Tiger Knuckle Fist]: 3 Spirit Bombs After [Chain Crush Combo]: 1 Spirit Bomb

Level 10

Is this the one?

CD 5s | Cost 1 | Attack

ID 306010

Level 9

Is this the one?

CD 6s | Cost 1 | Attack

ID 306009

Level 8

Is this the one?

CD 7s | Cost 1 | Attack

ID 306008

Level 7

Is this the one?

CD 8s | Cost 1 | Attack

ID 306007

Level 6

Is this the one?

CD 9s | Cost 1 | Attack

ID 306006

Level 5

Great!

CD 10s | Cost 1 | Attack

ID 306005

Level 4

Great!

CD 10s | Cost 1 | Attack

ID 306004

Level 3

Great!

CD 10s | Cost 1 | Attack

ID 306003

Level 2

Great!

CD 10s | Cost 1 | Attack

ID 306002

Level 1

Great!

CD 10s | Cost 1 | Attack

ID 306001

Formulas & functions

CommonFun links

Asura StrikeLv 1-10 | buff | Buffs 100723

Formula source

function CommonFun.calcBuff_4360(srcUser, targetUser, a, b, c, d, lv)
  if srcUser == nil or targetUser == nil then
    return 0
  end
  local RefineLv = srcUser:GetEquipedRefineLv(7)
  local Ring1 = srcUser:GetEquipedID(7)
  local A = 100
  local Sp = srcUser:GetProperty("Sp")
  local MaxSp = srcUser:GetProperty("MaxSp")
  local xinnian = 0
  local skill_xinnian3 = srcUser:GetLernedSkillLevel(6013)
  local skill_xinnian1 = srcUser:GetLernedSkillLevel(6011)
  if srcUser:HasBuffID(1010211) then
    local layer_xinnian = srcUser:GetBuffLayer(1010211)
    xinnian = skill_xinnian3 * 3 * (1 + (layer_xinnian - 1) * (0.15 + skill_xinnian1 * 0.05))
    A = A - xinnian
  end
  local GemValue = 0
  if Sp < MaxSp * 0.3 then
    GemValue = srcUser:GetGemValue(122132)
  end
  if GemValue ~= 0 then
    A = A - GemValue / 1000
  end
  if Ring1 == 62540 or Ring1 == 162540 then
    A = A + RefineLv * a + b
  end
  return A
end
Asura StrikeLv 1-10 | buff | Buffs 90004365

Formula source

function CommonFun.calcBuff_8160(srcUser, targetUser, a, b, c, d, lv)
  if srcUser == nil or targetUser == nil then
    return 0
  end
  local A = b
  if srcUser:HasBuffID(a) then
    A = c
  end
  return A
end
Asura StrikeLv 1-10 | damage

Formula source

function CommonFun.calcDamage_12202(srcUser, targetUser, params, damageParam, logger)
  local Str = srcUser:GetProperty("Str")
  local Dex = srcUser:GetProperty("Dex")
  local Luk = srcUser:GetProperty("Luk")
  local Atk = srcUser:GetProperty("Atk")
  local AtkPer = srcUser:GetProperty("AtkPer")
  local DamIncrease = srcUser:GetProperty("DamIncrease")
  local Sp = srcUser:GetProperty("Sp")
  local MaxSp = srcUser:GetProperty("MaxSp")
  local IgnoreDef = 0
  local IgnoreDef1 = srcUser:GetProperty("IgnoreDef")
  local IgnoreDef2 = srcUser:GetProperty("IgnoreEquipDef")
  if targetUser.boss or targetUser.mini then
    IgnoreDef = IgnoreDef1
  else
    IgnoreDef = IgnoreDef1 + IgnoreDef2
  end
  if 1 <= IgnoreDef then
    IgnoreDef = 1
  end
  local Refine = srcUser:GetProperty("Refine")
  local Def2 = targetUser:GetProperty("Def")
  local DefPer2 = targetUser:GetProperty("DefPer")
  local Vit2 = targetUser:GetProperty("Vit")
  local VitPer2 = targetUser:GetProperty("VitPer")
  local RefineDamReduc = targetUser:GetProperty("RefineDamReduc")
  local damChangePer = damageParam.damChangePer
  local damChangePer1 = damageParam.damChangePer1
  local xinnian = 0
  local xinnian1 = 1
  local skill_xinnian3 = srcUser:GetLernedSkillLevel(6013)
  local skill_xinnian1 = srcUser:GetLernedSkillLevel(6011)
  if srcUser:HasBuffID(1010201) then
    local layer_xinnian = srcUser:GetBuffLayer(1010201)
    xinnian = skill_xinnian3 * 0.01 * (1 + (layer_xinnian - 1) * (0.15 + skill_xinnian1 * 0.05))
  end
  if srcUser:HasBuffID(1010221) then
    local layer_xinnian1 = srcUser:GetBuffLayer(1010221)
    xinnian1 = (skill_xinnian3 * 0.06 + 0.05) * (1 + (layer_xinnian1 - 1) * (0.15 + skill_xinnian1 * 0.05)) + 1
  end
  local DamSpike = srcUser:GetProperty("DamSpike")
  local DamReduc = targetUser:GetProperty("DamReduc")
  local PvP_DamReduc = targetUser:GetProperty("DamReduc")
  local mapid, maptype = srcUser:GetMapInfo()
  if (maptype == 2 or maptype == 4) and targetUser:GetNpcID() == 0 then
    PvP_DamReduc = PvP_DamReduc < -1 and -1 or 1 < PvP_DamReduc and 1 or PvP_DamReduc
    PvP_DamReduc = math.floor(PvP_DamReduc * 1000) / 1000
    PvP_DamReduc = 0.4 * (1 - math.sin(PvP_DamReduc * 3.14 / 2))
  else
    PvP_DamReduc = 0
  end
  DamReduc = DamReduc + PvP_DamReduc
  ReduceLv = CommonFun.calcSpikeLv(srcUser, targetUser)
  local SkillDamReduc = CommonFun.calcSkillDamReduc(srcUser, targetUser)
  local DamReduc2 = 1 - (1 + 0.009 * ReduceLv + DamSpike - DamReduc) * SkillDamReduc
  local skilllv = srcUser:GetLernedSkillLevel(306)
  if 5 < skilllv then
    DamReduc2 = 1 - (1 + 0.009 * ReduceLv + DamSpike - math.max(DamReduc - 0.06 * (skilllv - 5) - xinnian, 0))
  end
  if 0.9 <= DamReduc2 then
    DamReduc2 = 0.9
  end
  local raceparam = CommonFun.CalcRaceParam(srcUser, targetUser, params, damageParam, logger)
  local bodyparam = CommonFun.CalcBodyParam(srcUser, targetUser, params, damageParam, logger)
  local elementparam = CommonFun.CalcElementParam(srcUser, targetUser, params, damageParam, logger)
  local bossparam = CommonFun.CalcBossParam(srcUser, targetUser, params, damageParam, logger)
  local raceparam2 = CommonFun.CalcRaceParam2(srcUser, targetUser, params, damageParam, logger)
  local bodyparam2 = CommonFun.CalcBodyParam2(srcUser, targetUser, params, damageParam, logger)
  local elementparam2 = CommonFun.CalcElementParam2(srcUser, targetUser, params, damageParam, logger)
  local bossparam2 = CommonFun.CalcBossParam2(srcUser, targetUser, params, damageParam, logger)
  local Num1 = srcUser:GetRunePoint(120100)
  local RuneDamage = Num1 * 0.6
  local BaseLvDamage = 0
  local IBaseLv = srcUser.BaseLv
  if srcUser:HasBuffID(42220) then
    BaseLvDamage = IBaseLv * 40
  end
  local a = 0
  local b = 0
  local c = 0
  local d = 0
  local Equip1 = srcUser:GetEquipedID(7)
  local Equip3 = srcUser:GetEquipedID(5)
  local Equip4 = srcUser:GetEquipedID(6)
  if Equip1 == 62508 or Equip1 == 162508 then
    a = 5
  end
  if Equip1 == 62540 or Equip1 == 162540 then
    a = 5
  end
  local equipRing = srcUser:getEquip(CommonFun.PackType.EPACKTYPE_EQUIP, CommonFun.EquipPos.EEQUIPPOS_ARMOUR)
  if equipRing.id == 42089 or equipRing.id == 142089 then
    b = 2
  end
  local equipRingSD = srcUser:getEquip(CommonFun.PackType.EPACKTYPE_SHADOWEQUIP, CommonFun.EquipPos.EEQUIPPOS_ARMOUR)
  if equipRingSD.id == 42089 or equipRingSD.id == 142089 then
    b = 2 * equipRingSD.quench_per / 100
  end
  if Equip3 == 44003 or Equip3 == 144003 then
    c = 1.5
  end
  if Equip4 == 44003 or Equip4 == 144003 then
    d = 1.5
  end
  local equipRing5 = srcUser:getEquip(CommonFun.PackType.EPACKTYPE_EQUIP, CommonFun.EquipPos.EEQUIPPOS_ACCESSORY1)
  if equipRing5.id == 44047 or equipRing5.id == 144047 then
    c = 2
  end
  local equipRingSD5 = srcUser:getEquip(CommonFun.PackType.EPACKTYPE_SHADOWEQUIP, CommonFun.EquipPos.EEQUIPPOS_ACCESSORY1)
  if equipRingSD5.id == 44047 or equipRingSD5.id == 144047 then
    c = 2 * equipRingSD5.quench_per / 100
  end
  local equipRing6 = srcUser:getEquip(CommonFun.PackType.EPACKTYPE_EQUIP, CommonFun.EquipPos.EEQUIPPOS_ACCESSORY2)
  if equipRing6.id == 44047 or equipRing6.id == 144047 then
    d = 2
  end
  local equipRingSD6 = srcUser:getEquip(CommonFun.PackType.EPACKTYPE_SHADOWEQUIP, CommonFun.EquipPos.EEQUIPPOS_ACCESSORY2)
  if equipRingSD6.id == 44047 or equipRingSD6.id == 144047 then
    d = 2 * equipRingSD6.quench_per / 100
  end
  local BaseAtk = Str * 2 + math.floor(Str * Str / 100) + math.floor(Dex / 5) + math.floor(Luk / 5)
  local BaseAtk1 = Str * 4 + math.floor(Str * Str / 100) * 2 + math.floor(Dex / 5) + math.floor(Luk / 5)
  local AtkFinal = ((Atk - BaseAtk) * (1 + AtkPer) * CommonFun.ShapeCorrection(srcUser, targetUser) * bodyparam * elementparam * elementparam2 + BaseAtk1) * raceparam * bossparam * bossparam2
  local ShortRangeDamReduc2 = targetUser:GetProperty("ShortRangeDamReduc")
  local GemDam = 1
  if Sp < MaxSp * 0.3 then
    GemValue = srcUser:GetGemValue(122131)
    GemDam = 1 + GemValue / 100000
  end
  local potian = 1
  local skillID, skillLevel = CommonFun.UnmergeSkillID(params.skillIDAndLevel)
  if skillID == 3303 or skillID == 819 then
    local skilllv_potian = srcUser:GetLernedSkillLevel(3303)
    local skilllv_fuw = srcUser:GetLernedSkillLevel(819)
    local skilllv_lz = srcUser:GetLernedSkillLevel(3329)
    local Num_lz = srcUser:GetBuffLayer(100500)
    local lz = 1
    if 1 <= skilllv_lz then
      lz = 1 + Num_lz * skilllv_lz * 0.002
    end
    damChangePer = 4 * skilllv
    damChangePer1 = 5 * skilllv
    potian = (math.max(skilllv_potian, skilllv_fuw) * 0.05 + 0.5) * lz
  end
  local A = (((AtkFinal * (1 - DamReduc2) + Refine) * (damChangePer + Sp / 100 + RuneDamage + a + b + c + d) + 2500 + 500 * damChangePer1) * (1 + DamIncrease - ShortRangeDamReduc2) * (1 - RefineDamReduc) * GemDam + BaseLvDamage) * potian
  if targetUser:GetNpcID() ~= 0 and srcUser:HasBuffID(1010220) and srcUser:HasBuffID(1010250) then
    A = A * xinnian1
  end
  if A <= 1 then
    return 1
  end
  return A
end

Skill JSON (Level 10)

{
  "id": 306010,
  "NameZh": "阿修罗霸凰拳",
  "Level": 10,
  "Icon": "skill_306001",
  "Cost": 1,
  "PeakLevel": 5,
  "Desc": [
    {
      "id": 306001,
      "params": [
        40,
        100,
        2500,
        500,
        50,
        30,
        300
      ]
    }
  ],
  "RollType": 1,
  "DamageType": 1,
  "SkillType": "Attack",
  "Camps": "Enemy",
  "Launch_Range": 3,
  "Fire_EP": 0,
  "Target_EP": 0,
  "Attack_EP": 0,
  "CD": 5,
  "SkillCost": {
    "costtype": 1
  },
  "DelayCD": 1,
  "PreCondition": {
    "ProType": 1
  },
  "Lead_Type": {
    "CCT": 0,
    "FCT": 2,
    "type": 2
  },
  "Logic": "SkillLockedTarget",
  "Logic_Param": {
    "CanBeInterrupted": 1
  },
  "Damage": [
    {
      "damChangePer": 40,
      "damChangePer1": 50,
      "elementparam": 5,
      "type": 12202
    }
  ],
  "DamTime": {
    "type": 1,
    "value": 1
  },
  "AttackEffects": [
    {
      "curve": 1,
      "range": 0.1,
      "time": 1,
      "type": 2
    },
    {
      "direction": "forward",
      "distance": 1.5,
      "speed": 20,
      "type": 1
    }
  ],
  "Buff": {
    "enemy": [
      90004365
    ],
    "self": [
      100721,
      100722,
      100723
    ]
  },
  "Pvp_buff": {
    "enemy": [
      90004365
    ],
    "self": [
      100721,
      100722,
      100723
    ]
  },
  "CastAct": "reading",
  "AttackAct": [
    "use_skill2"
  ],
  "E_Attack_On": 1,
  "SE_cast": "Common/Magic_cast",
  "SE_attack": "Skill/GuillotineFist",
  "description": {
    "chinesesimplified": "就是这件吗?",
    "english": "Is this the one?",
    "german": "Ist das der eine?",
    "portuguese": "É esta?",
    "spanish": "¿Es este?"
  }
}