Formula

CommonFun.calcBuff_5200

function CommonFun.calcBuff_5200(srcUser, targetUser, a, b, c, d, lv)
  if srcUser == nil or targetUser == nil then
    return 0
  end
  local SilenceAtk = srcUser:GetProperty("SilenceAtk")
  local SilenceDef2 = targetUser:GetProperty("SilenceDef")
  local SlienceDam = 1 + SilenceAtk - SilenceDef2
  if SlienceDam <= 0 then
    SlienceDam = 0
  end
  local StateAtk = srcUser:GetProperty("StateAtk")
  local StateDef2 = targetUser:GetProperty("StateDef")
  local StateDam = 1 + StateAtk - StateDef2
  if StateDam <= 0 then
    StateDam = 0
  end
  local GemValue = srcUser:GetGemValue(91021_MAGIC_TRAP_HAS_A_PERCENTAGE_CHANCE_OF_APPLYING_SILENCE)
  local rate1 = GemValue / 1000 * SlienceDam * StateDam * CommonFun.calcAttrSilenceRate(srcUser, targetUser)
  local rate2 = GemValue / 1000 * SlienceDam * StateDam * CommonFun.calcAttrSilenceRate(srcUser, targetUser)
  local Hasbuff = 0
  if srcUser:HasBuffID(20910030_MAGIC_TRAP_SILENCE_EFFECT_IGNORES_IMMUNITY_:MAX_STACK_0) then
    Hasbuff = 1
  end
  local A = rate1 * a + rate2 * b * Hasbuff
  if A <= 0 then
    return 0
  end
  return A
end