Formula

CommonFun.calcBuff_4030

function CommonFun.calcBuff_4030(srcUser, targetUser, a, b, c, d, lv)
  if srcUser == nil or targetUser == nil then
    return 0
  end
  local Num = srcUser:GetRunePoint(c)
  local RefineLv = srcUser:GetEquipedRefineLv(7_WEAPON)
  local Ring1 = srcUser:GetEquipedID(7_WEAPON)
  local diary = 0
  local StateEffect = targetUser:GetProperty("StateEffect")
  local bits = CommonFun.getBits(StateEffect)
  if Ring1 == 63440_SAGE_S_HANDBOOK_1 or Ring1 == 163440_SAGE_S_HANDBOOK_2 or Ring1 == 63417_SAGE_DIARY_1 or Ring1 == 163417_SAGE_DIARY_2 then
    diary = RefineLv
  end
  local card = 0
  if srcUser:HasBuffID(53340_DARK_MAGE_CARD_:MAX_STACK_0) then
    card = 3
  end
  if (bits[CommonFun.StateEffect.Poison] == 1 or bits[CommonFun.StateEffect.Blood] == 1 or bits[CommonFun.StateEffect.Burn] == 1 or bits[CommonFun.StateEffect.Dizzy] == 1 or bits[CommonFun.StateEffect.Freeze] == 1 or bits[CommonFun.StateEffect.Stone] == 1 or bits[CommonFun.StateEffect.Sleep] == 1 or bits[CommonFun.StateEffect.Fear] == 1 or bits[CommonFun.StateEffect.NoMove] == 1 or bits[CommonFun.StateEffect.Silence] == 1 or bits[CommonFun.StateEffect.Curse] == 1 or bits[CommonFun.StateEffect.Dark] == 1) and (srcUser:HasBuffID(43110_TIME_MANIPULATOR_:MAX_STACK_0) or srcUser:HasBuffLayer(43110, EBUFFERLAYER_SHADOW)) and srcUser:HasBuffID(42240_SAGE_S_HANDBOOK_:MAX_STACK_0) then
    card = card + 5
  end
  if srcUser:HasBuffID(90004514_SAGE_S_HANDBOOK_1_T5_:MAX_STACK_0) and srcUser:HasBuffID(90004515_SAGE_S_HANDBOOK_1_T5_EFFECT_:MAX_STACK_0) then
    card = card + 5
  end
  local A = lv * a + b + Num * d + diary * 0.3 + card
  return A
end