CommonFun

CommonFun.CalcCrit

Dataset · 20251127_update

Formula Source

function CommonFun.CalcCrit(srcUser, targetUser, skillParams)
  local CriDamPer = srcUser:GetProperty("CriDamPer")
  local CriDefPer2 = targetUser:GetProperty("CriDefPer")
  local targetRace = targetUser.race
  if srcUser:HasBuffID(49320) and srcUser:HasBuffID(49325) then
  elseif srcUser:HasBuffID(49320) then
    targetRace = 2
  end
  local Weapon = srcUser:GetEquipedID(7)
  local scale = 1.5 + CriDamPer - CriDefPer2
  if targetRace == 3 and (Weapon == 41815 or Weapon == 141815) then
    scale = 1.75 + CriDamPer - CriDefPer2
  end
  local Buff = srcUser:HasBuffID(80000300)
  if targetRace == 5 and Buff == true then
    scale = 1.55 + CriDamPer - CriDefPer2
  end
  local Buff = srcUser:HasBuffID(80000310)
  if targetRace == 6 and Buff == true then
    scale = 1.55 + CriDamPer - CriDefPer2
  end
  local CardKapok = srcUser:GetEquipCardNum(7, 23247)
  if targetRace == 1 and srcUser:HasBuffID(56650) then
    scale = 1.5 + CardKapok * 0.15 + CriDamPer - CriDefPer2
  end
  if targetRace == 9 and srcUser:HasBuffID(56650) then
    scale = 1.5 + CardKapok * 0.15 + CriDamPer - CriDefPer2
  end
  local Cri = srcUser:GetProperty("Cri")
  local CriRes = targetUser:GetProperty("CriRes")
  local Gem = srcUser:GetGemValue(31021)
  scale = scale + (Cri - CriRes) * Gem / 100000
  if srcUser:HasBuffID(64710) then
    scale = scale - 0.25
  end
  scale = CommonFun.Clamp(scale, 1, 100)
  return scale
end
No formula links

Version History

Loading dependencies...
Loading usage...