Formula

CommonFun.calcWeaponPetNpcAttrValue

function CommonFun.calcWeaponPetNpcAttrValue(attr, classtype, level, srcUser)
  local result = {}
  if srcUser == nil then
    return result
  end
  local a = 1
  if srcUser ~= nil and srcUser:HasBuffID(30000_BLACK_CAT_LEMEGETON_PACKAGE_:MAX_STACK_0) == true then
    a = 1.1
  end
  local wlv = srcUser:GetWeaponPetLevel()
  if classtype == 51 then
    result[CommonFun.RoleData.EATTRTYPE_ATK] = 0.15 * level * level - 3 * level + 70 + attr[CommonFun.RoleData.EATTRTYPE_ATK]
    result[CommonFun.RoleData.EATTRTYPE_MATK] = 0.1 * level * level - 3 * level + 70 + attr[CommonFun.RoleData.EATTRTYPE_MATK]
    result[CommonFun.RoleData.EATTRTYPE_DEF] = level * 6 + attr[CommonFun.RoleData.EATTRTYPE_DEF]
    result[CommonFun.RoleData.EATTRTYPE_MDEF] = level * 2 + attr[CommonFun.RoleData.EATTRTYPE_MDEF]
    result[CommonFun.RoleData.EATTRTYPE_MAXHP] = (4 * level * level + 140 * level + 1000 + attr[CommonFun.RoleData.EATTRTYPE_MAXHP]) * (1 + attr[CommonFun.RoleData.EATTRTYPE_MAXHPPER])
    result[CommonFun.RoleData.EATTRTYPE_HIT] = 3 * level + 50 + attr[CommonFun.RoleData.EATTRTYPE_HIT]
    result[CommonFun.RoleData.EATTRTYPE_FLEE] = level + attr[CommonFun.RoleData.EATTRTYPE_FLEE]
    result[CommonFun.RoleData.EATTRTYPE_CRI] = level * 0.3 + attr[CommonFun.RoleData.EATTRTYPE_CRI]
    result[CommonFun.RoleData.EATTRTYPE_CRIRES] = level * 0.3 + attr[CommonFun.RoleData.EATTRTYPE_CRIRES]
    result[CommonFun.RoleData.EATTRTYPE_DAMINCREASE] = wlv * 0 + attr[CommonFun.RoleData.EATTRTYPE_DAMINCREASE]
    result[CommonFun.RoleData.EATTRTYPE_MDAMINCREASE] = wlv * 0 + attr[CommonFun.RoleData.EATTRTYPE_MDAMINCREASE]
    result[CommonFun.RoleData.EATTRTYPE_HEALENCPER] = math.floor((wlv + 1) / 2) * 0.2 + level / 200 + attr[CommonFun.RoleData.EATTRTYPE_HEALENCPER]
  elseif classtype == 41 then
    result[CommonFun.RoleData.EATTRTYPE_ATK] = (0.37 * level * level - 2 * level + 70 + attr[CommonFun.RoleData.EATTRTYPE_ATK]) * a
    result[CommonFun.RoleData.EATTRTYPE_MATK] = 0.1 * level * level - 3 * level + 70 + attr[CommonFun.RoleData.EATTRTYPE_MATK]
    result[CommonFun.RoleData.EATTRTYPE_DEF] = level * 6 + attr[CommonFun.RoleData.EATTRTYPE_DEF]
    result[CommonFun.RoleData.EATTRTYPE_MDEF] = level * 2 + attr[CommonFun.RoleData.EATTRTYPE_MDEF]
    result[CommonFun.RoleData.EATTRTYPE_MAXHP] = (5 * level * level + 140 * level + 1000 + attr[CommonFun.RoleData.EATTRTYPE_MAXHP]) * (1 + attr[CommonFun.RoleData.EATTRTYPE_MAXHPPER])
    result[CommonFun.RoleData.EATTRTYPE_HIT] = 3 * level + 50 + attr[CommonFun.RoleData.EATTRTYPE_HIT]
    result[CommonFun.RoleData.EATTRTYPE_FLEE] = level + attr[CommonFun.RoleData.EATTRTYPE_FLEE]
    result[CommonFun.RoleData.EATTRTYPE_CRI] = level * 0.3 + attr[CommonFun.RoleData.EATTRTYPE_CRI]
    result[CommonFun.RoleData.EATTRTYPE_CRIRES] = level * 0.3 + attr[CommonFun.RoleData.EATTRTYPE_CRIRES]
    result[CommonFun.RoleData.EATTRTYPE_DAMINCREASE] = math.floor((wlv + 1) / 2) * 0.2 + attr[CommonFun.RoleData.EATTRTYPE_DAMINCREASE]
    result[CommonFun.RoleData.EATTRTYPE_MDAMINCREASE] = wlv * 0 + attr[CommonFun.RoleData.EATTRTYPE_MDAMINCREASE]
    result[CommonFun.RoleData.EATTRTYPE_HEALENCPER] = wlv * 0 + attr[CommonFun.RoleData.EATTRTYPE_HEALENCPER]
  elseif classtype == 11 then
    result[CommonFun.RoleData.EATTRTYPE_ATK] = 0.15 * level * level - 3 * level + 70 + attr[CommonFun.RoleData.EATTRTYPE_ATK]
    result[CommonFun.RoleData.EATTRTYPE_MATK] = 0.1 * level * level - 3 * level + 70 + attr[CommonFun.RoleData.EATTRTYPE_MATK]
    result[CommonFun.RoleData.EATTRTYPE_DEF] = level * 12 + attr[CommonFun.RoleData.EATTRTYPE_DEF]
    result[CommonFun.RoleData.EATTRTYPE_MDEF] = level * 4 + attr[CommonFun.RoleData.EATTRTYPE_MDEF]
    result[CommonFun.RoleData.EATTRTYPE_MAXHP] = (4 * level * level + 350 * level + 5000 + attr[CommonFun.RoleData.EATTRTYPE_MAXHP]) * (1 + math.floor((wlv + 1) / 2) * 0.2 + level / 200 + attr[CommonFun.RoleData.EATTRTYPE_MAXHPPER])
    result[CommonFun.RoleData.EATTRTYPE_HIT] = 3 * level + 50 + attr[CommonFun.RoleData.EATTRTYPE_HIT]
    result[CommonFun.RoleData.EATTRTYPE_FLEE] = level + attr[CommonFun.RoleData.EATTRTYPE_FLEE]
    result[CommonFun.RoleData.EATTRTYPE_CRI] = level * 0.3 + attr[CommonFun.RoleData.EATTRTYPE_CRI]
    result[CommonFun.RoleData.EATTRTYPE_CRIRES] = level * 0.3 + attr[CommonFun.RoleData.EATTRTYPE_CRIRES]
    result[CommonFun.RoleData.EATTRTYPE_DAMINCREASE] = wlv * 0 + attr[CommonFun.RoleData.EATTRTYPE_DAMINCREASE]
    result[CommonFun.RoleData.EATTRTYPE_MDAMINCREASE] = wlv * 0 + attr[CommonFun.RoleData.EATTRTYPE_MDAMINCREASE]
    result[CommonFun.RoleData.EATTRTYPE_HEALENCPER] = wlv * 0 + attr[CommonFun.RoleData.EATTRTYPE_HEALENCPER]
  elseif classtype == 21 then
    result[CommonFun.RoleData.EATTRTYPE_ATK] = 0.1 * level * level - 3 * level + 70 + attr[CommonFun.RoleData.EATTRTYPE_ATK]
    result[CommonFun.RoleData.EATTRTYPE_MATK] = (0.42 * level * level - 2 * level + 70 + attr[CommonFun.RoleData.EATTRTYPE_MATK]) * a
    result[CommonFun.RoleData.EATTRTYPE_DEF] = level * 6 + attr[CommonFun.RoleData.EATTRTYPE_DEF]
    result[CommonFun.RoleData.EATTRTYPE_MDEF] = level * 2 + attr[CommonFun.RoleData.EATTRTYPE_MDEF]
    result[CommonFun.RoleData.EATTRTYPE_MAXHP] = (5 * level * level + 140 * level + 1000 + attr[CommonFun.RoleData.EATTRTYPE_MAXHP]) * (1 + attr[CommonFun.RoleData.EATTRTYPE_MAXHPPER])
    result[CommonFun.RoleData.EATTRTYPE_HIT] = 3 * level + 50 + attr[CommonFun.RoleData.EATTRTYPE_HIT]
    result[CommonFun.RoleData.EATTRTYPE_FLEE] = level + attr[CommonFun.RoleData.EATTRTYPE_FLEE]
    result[CommonFun.RoleData.EATTRTYPE_CRI] = level * 0.3 + attr[CommonFun.RoleData.EATTRTYPE_CRI]
    result[CommonFun.RoleData.EATTRTYPE_CRIRES] = level * 0.3 + attr[CommonFun.RoleData.EATTRTYPE_CRIRES]
    result[CommonFun.RoleData.EATTRTYPE_DAMINCREASE] = wlv * 0 + attr[CommonFun.RoleData.EATTRTYPE_DAMINCREASE]
    result[CommonFun.RoleData.EATTRTYPE_MDAMINCREASE] = math.floor((wlv + 1) / 2) * 0.2 + attr[CommonFun.RoleData.EATTRTYPE_MDAMINCREASE]
    result[CommonFun.RoleData.EATTRTYPE_HEALENCPER] = wlv * 0 + attr[CommonFun.RoleData.EATTRTYPE_HEALENCPER]
  else
    result[CommonFun.RoleData.EATTRTYPE_ATK] = 0.15 * level * level - 3 * level + 70 + attr[CommonFun.RoleData.EATTRTYPE_ATK]
    result[CommonFun.RoleData.EATTRTYPE_MATK] = 0.1 * level * level - 3 * level + 70 + attr[CommonFun.RoleData.EATTRTYPE_MATK]
    result[CommonFun.RoleData.EATTRTYPE_DEF] = level * 6 + attr[CommonFun.RoleData.EATTRTYPE_DEF]
    result[CommonFun.RoleData.EATTRTYPE_MDEF] = level * 2 + attr[CommonFun.RoleData.EATTRTYPE_MDEF]
    result[CommonFun.RoleData.EATTRTYPE_MAXHP] = 1.5 * level * level - 10 * level + 1000 + attr[CommonFun.RoleData.EATTRTYPE_MAXHP]
    result[CommonFun.RoleData.EATTRTYPE_HIT] = 3 * level + 50 + attr[CommonFun.RoleData.EATTRTYPE_HIT]
    result[CommonFun.RoleData.EATTRTYPE_FLEE] = level + attr[CommonFun.RoleData.EATTRTYPE_FLEE]
    result[CommonFun.RoleData.EATTRTYPE_CRI] = level * 0.3 + attr[CommonFun.RoleData.EATTRTYPE_CRI]
    result[CommonFun.RoleData.EATTRTYPE_CRIRES] = level * 0.3 + attr[CommonFun.RoleData.EATTRTYPE_CRIRES]
  end
  return result
end