CommonFun

CommonFun.GetUserAtkAttr

Dataset · 20251127_update

Formula Source

function CommonFun.GetUserAtkAttr(srcUser, params, damageParam)
  local skillParams = Table_Skill[params.skillIDAndLevel]
  if skillParams == nil then
    return 0
  end
  if damageParam == nil then
    return 0
  end
  local hasArrow = false
  local arrowNum = 0
  if skillParams.StrengthenCost ~= nil then
    for key, val in pairs(skillParams.StrengthenCost) do
      if val.type == 1 and val.num ~= nil then
        hasArrow = true
        arrowNum = val.num
      end
    end
  end
  local srcAtkElement = 0
  if damageParam.elementparam ~= nil and damageParam.elementparam ~= 0 then
    srcAtkElement = damageParam.elementparam
  elseif hasArrow == false then
    srcAtkElement = srcUser:GetProperty("AtkAttr")
  else
    local AttrEffect = srcUser:GetProperty("AttrEffect")
    local bits = CommonFun.getBits(AttrEffect)
    if bits[CommonFun.AttrEffect.BuffPriorArrow] == 1 then
      srcAtkElement = srcUser:GetProperty("AtkAttr")
    elseif srcUser.arrow_server ~= nil then
      if srcUser.arrow_server == 0 or srcUser.arrow_server == 12508 or srcUser.arrow_server == 12509 then
        srcAtkElement = srcUser:GetProperty("AtkAttr")
      else
        srcAtkElement = CommonFun.GetAtkAttrByArrow(srcUser.arrow_server)
      end
    elseif srcUser:GetArrowID() == 0 or srcUser:GetArrowID() == 12508 or srcUser:GetArrowID() == 12509 then
      srcAtkElement = srcUser:GetProperty("AtkAttr")
    else
      local arrowid = srcUser:GetArrowID()
      local hasNum = srcUser:GetPackageItemNum(arrowid)
      if arrowNum <= hasNum then
        srcAtkElement = CommonFun.GetAtkAttrByArrow(arrowid)
      else
        srcAtkElement = srcUser:GetProperty("AtkAttr")
      end
    end
  end
  local skillID, skillLevel = CommonFun.UnmergeSkillID(params.skillIDAndLevel)
  if skillID == 2300 or skillID == 2323 or skillID == 2343 or skillID == 2344 then
    if srcUser:HasBuffID(135001) then
      srcAtkElement = 1
    elseif srcUser:HasBuffID(135002) then
      srcAtkElement = 2
    elseif srcUser:HasBuffID(135003) then
      srcAtkElement = 3
    elseif srcUser:HasBuffID(135004) then
      srcAtkElement = 4
    elseif srcUser:HasBuffID(135005) then
      srcAtkElement = 6
    elseif srcUser:HasBuffID(135006) then
      srcAtkElement = 7
    elseif srcUser:HasBuffID(135007) then
      srcAtkElement = 8
    end
  end
  if skillID == 5604 then
    if srcUser:HasBuffID(7014) then
      srcAtkElement = 1
    elseif srcUser:HasBuffID(7012) then
      srcAtkElement = 2
    elseif srcUser:HasBuffID(7011) then
      srcAtkElement = 3
    elseif srcUser:HasBuffID(7013) then
      srcAtkElement = 4
    end
  end
  return srcAtkElement
end
No formula links

Version History

Loading dependencies...
Loading usage...