CommonFun

CommonFun.GetElementRate

Dataset · 20251127_update

Formula Source

function CommonFun.GetElementRate(srcUser, srcAtkElement, targetUser, targetDefElement, params, damageParam)
  if srcAtkElement < 1 or 10 < srcAtkElement then
    return 0
  end
  if targetDefElement < 1 or 10 < targetDefElement then
    return 0
  end
  local ElementRate = GameConfig.ElementRestrain[srcAtkElement][targetDefElement]
  if params ~= nil and damageParam ~= nil then
    local skillID, skillLevel = CommonFun.UnmergeSkillID(params.skillIDAndLevel)
    if (skillID == 1700 or skillID == 1725) and (targetDefElement == 3 or targetDefElement == 4) then
      local skilllv = srcUser:GetLernedSkillLevel(1715)
      ElementRate = 0.75 + skilllv * 0.05
    end
    if (skillID == 2705 or skillID == 2706) and targetDefElement == 2 then
      ElementRate = 1
    end
  end
  local srcAtkLevel = CommonFun.GetUserAtkLevel(srcUser, srcAtkElement, params, damageParam)
  local tarDefLevel = CommonFun.GetUserDefLevel(targetUser, targetDefElement)
  if srcUser:HasBuffID(22000991) and srcAtkElement == 1 or srcUser:HasBuffID(22000992) and srcAtkElement == 2 or srcUser:HasBuffID(22000993) and srcAtkElement == 3 or srcUser:HasBuffID(22000994) and srcAtkElement == 4 or srcUser:HasBuffID(22000996) and srcAtkElement == 5 or srcUser:HasBuffID(22000995) and srcAtkElement == 8 or srcUser:HasBuffID(1001120) and srcAtkElement == 10 then
    ElementRate = ElementRate + 0.15
  end
  if srcUser:HasBuffID(116832) and srcAtkElement == 1 or srcUser:HasBuffID(116833) and srcAtkElement == 2 or srcUser:HasBuffID(116831) and srcAtkElement == 3 or srcUser:HasBuffID(116830) and srcAtkElement == 4 then
    local skilllv = srcUser:GetLernedSkillLevel(1163)
    ElementRate = ElementRate + 0.02 * skilllv
  end
  if srcUser:HasBuffID(1000031) and srcAtkElement == 8 then
    local skilllv1 = srcUser:GetLernedSkillLevel(1163)
    local skilllv2 = srcUser:GetLernedSkillLevel(5003)
    local layer = 0
    if srcUser:HasBuffID(116832) then
      layer = layer + 1
    end
    if srcUser:HasBuffID(116830) then
      layer = layer + 1
    end
    if srcUser:HasBuffID(116831) then
      layer = layer + 1
    end
    if srcUser:HasBuffID(116833) then
      layer = layer + 1
    end
    ElementRate = ElementRate + 0.02 * skilllv1 * skilllv2 * 0.05 * layer
  end
  if 3 <= tarDefLevel then
    ElementRate = ElementRate + (srcAtkLevel - 1) * 0.25 - 0.25 - (tarDefLevel - 2) * 0.125
  elseif 2 <= tarDefLevel and tarDefLevel < 3 then
    ElementRate = ElementRate + (srcAtkLevel - 1) * 0.25 - 0.25
  else
    ElementRate = ElementRate + (srcAtkLevel - 1) * 0.25
  end
  if ElementRate < 0 then
    ElementRate = 0
  end
  return ElementRate
end
No formula links

Version History

Loading dependencies...
Loading usage...