CommonFun

CommonFun.CalcElementParam2

Dataset · 20251127_update

Formula Source

function CommonFun.CalcElementParam2(srcUser, targetUser, params, damageParam, logger)
  local elementInc = 0
  local elementRed = 0
  local srcAtkElement = CommonFun.GetUserAtkAttr(srcUser, params, damageParam)
  local targetDefElement = targetUser:GetProperty("DefAttr")
  if srcUser:HasBuffID(1009022) then
    targetDefElement = 7
  end
  if nil == srcAtkElement then
    logger.error(string.format("%s srcAtkElement is nil", srcUser.name))
    return 0
  end
  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[srcAtkElement] then
    logger.error(string.format("CommonFun.NatureProps[%s] is nil", tostring(srcAtkElement)))
    return 0
  end
  elementInc = srcUser:GetProperty(CommonFun.NatureProps[targetDefElement][1])
  elementRed = targetUser:GetProperty(CommonFun.NatureProps[srcAtkElement][2])
  elementAtk = srcUser:GetProperty(CommonFun.NatureProps[srcAtkElement][3])
  if nil == elementAtk then
    elementAtk = 0
  end
  local xinnian = 0
  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
  local skilllv = srcUser:GetLernedSkillLevel(306)
  local skillID, skillLevel = CommonFun.UnmergeSkillID(params.skillIDAndLevel)
  if 5 < skilllv and skillID == 306 or skillID == 3303 or skillID == 819 then
    elementRed = math.max(elementRed - 0.06 * (skilllv - 5) - xinnian, 0)
  end
  if skillID == 1288 or skillID == 1812 or skillID == 4310 then
    local GemValue = srcUser:GetGemValue(61002)
    elementRed = math.max(elementRed - GemValue / 100000, 0)
  end
  local skilllv1 = srcUser:GetLernedSkillLevel(4762)
  if skillID == 4763 or skillID == 4764 or skillID == 4766 then
    raceRed = math.max(elementRed - 0.02 * skilllv1, 0)
  end
  local result = 1 + elementAtk - elementRed
  local mapid, maptype = srcUser:GetMapInfo()
  if (maptype == 2 or maptype == 4) and targetUser:GetNpcID() ~= 40022 then
    local pvpReduce = 0
    local Master = targetUser:GetMasterUser()
    if targetUser:GetNpcID() == 0 or Master ~= nil then
      pvpReduce = 0.2
    end
    local B = elementRed - elementAtk
    B = B < -1 and -1 or 1 < B and 1 or B
    B = math.floor(B * 1000) / 1000
    B = B + 0.2 * (1 - math.sin(B * 3.14 / 2)) + pvpReduce
    result = 1 - B
  end
  if result <= 0.15 then
    result = 0.15
  end
  return result
end
No formula links

Changes: 20251127_update vs 20251105_standard_instalation

 function CommonFun.CalcElementParam2(srcUser, targetUser, params, damageParam, logger)
  local elementInc = 0
  local elementRed = 0
  local srcAtkElement = CommonFun.GetUserAtkAttr(srcUser, params, damageParam)
  local targetDefElement = targetUser:GetProperty("DefAttr")
-  if srcUser:HasBuffID(20510031) then
+  if srcUser:HasBuffID(1009022) then
     targetDefElement = 7
  end
  if nil == srcAtkElement then
    logger.error(string.format("%s srcAtkElement is nil", srcUser.name))
    return 0
  end
  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[srcAtkElement] then
    logger.error(string.format("CommonFun.NatureProps[%s] is nil", tostring(srcAtkElement)))
    return 0
  end
  elementInc = srcUser:GetProperty(CommonFun.NatureProps[targetDefElement][1])
  elementRed = targetUser:GetProperty(CommonFun.NatureProps[srcAtkElement][2])
  elementAtk = srcUser:GetProperty(CommonFun.NatureProps[srcAtkElement][3])
  if nil == elementAtk then
    elementAtk = 0
  end
  local xinnian = 0
  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
  local skilllv = srcUser:GetLernedSkillLevel(306)
  local skillID, skillLevel = CommonFun.UnmergeSkillID(params.skillIDAndLevel)
  if 5 < skilllv and skillID == 306 or skillID == 3303 or skillID == 819 then
    elementRed = math.max(elementRed - 0.06 * (skilllv - 5) - xinnian, 0)
  end
  if skillID == 1288 or skillID == 1812 or skillID == 4310 then
    local GemValue = srcUser:GetGemValue(61002)
    elementRed = math.max(elementRed - GemValue / 100000, 0)
  end
  local skilllv1 = srcUser:GetLernedSkillLevel(4762)
  if skillID == 4763 or skillID == 4764 or skillID == 4766 then
    raceRed = math.max(elementRed - 0.02 * skilllv1, 0)
  end
  local result = 1 + elementAtk - elementRed
+  local mapid, maptype = srcUser:GetMapInfo()
  if (maptype == 2 or maptype == 4) and targetUser:GetNpcID() ~= 40022 then
    local pvpReduce = 0
    local Master = targetUser:GetMasterUser()
    if targetUser:GetNpcID() == 0 or Master ~= nil then
      pvpReduce = 0.2
    end
    local B = elementRed - elementAtk
    B = B < -1 and -1 or 1 < B and 1 or B
    B = math.floor(B * 1000) / 1000
    B = B + 0.2 * (1 - math.sin(B * 3.14 / 2)) + pvpReduce
    result = 1 - B
  end
   if result <= 0.15 then
    result = 0.15
  end
  return result
end

Version History

Loading dependencies...
Loading usage...