Formula

CommonFun.calcSealNpcAttrValue

function CommonFun.calcSealNpcAttrValue(attr, classtype, sealtype, mapid)
  local result = {}
  local A = GameConfig.Seal.npclv[mapid]
  if A == nil then
    A = 65
  end
  if sealtype == 1 then
    result[CommonFun.RoleData.EATTRTYPE_ATK] = (0.34 * A * A - 8.26 * A + 72) * 0.4
    result[CommonFun.RoleData.EATTRTYPE_MATK] = (0.34 * A * A - 8.26 * A + 72) * 0.23
    result[CommonFun.RoleData.EATTRTYPE_DEF] = 8.0E-4 * A * A * A - 0.0494 * A * A + 4.5061 * A + 1
    result[CommonFun.RoleData.EATTRTYPE_MDEF] = 2 * A
    result[CommonFun.RoleData.EATTRTYPE_MAXHP] = 0.1373 * A * A * A - 2.9336 * A * A + 202.51 * A + 40.727
    result[CommonFun.RoleData.EATTRTYPE_HIT] = 2 * A + 50
    result[CommonFun.RoleData.EATTRTYPE_FLEE] = A + 50
    result[CommonFun.RoleData.EATTRTYPE_CRI] = A * 0.3
    result[CommonFun.RoleData.EATTRTYPE_CRIRES] = A * 0.3
  elseif A < 20 then
    result[CommonFun.RoleData.EATTRTYPE_ATK] = 4
    result[CommonFun.RoleData.EATTRTYPE_MATK] = 4
    result[CommonFun.RoleData.EATTRTYPE_DEF] = 8.0E-4 * A * A * A - 0.0494 * A * A + 4.5061 * A + 1
    result[CommonFun.RoleData.EATTRTYPE_MDEF] = 2 * A
    result[CommonFun.RoleData.EATTRTYPE_MAXHP] = (0.1373 * A * A * A - 2.9336 * A * A + 202.51 * A + 40.727) * 0.1
    result[CommonFun.RoleData.EATTRTYPE_HIT] = 2 * A
    result[CommonFun.RoleData.EATTRTYPE_FLEE] = A
    result[CommonFun.RoleData.EATTRTYPE_CRI] = A * 0.3
    result[CommonFun.RoleData.EATTRTYPE_CRIRES] = A * 0.3
  elseif A < 30 and 20 <= A then
    result[CommonFun.RoleData.EATTRTYPE_ATK] = (2 * (A - 19) + 8) * 0.5
    result[CommonFun.RoleData.EATTRTYPE_MATK] = (2 * (A - 19) + 8) * 0.2
    result[CommonFun.RoleData.EATTRTYPE_DEF] = 8.0E-4 * A * A * A - 0.0494 * A * A + 4.5061 * A + 1
    result[CommonFun.RoleData.EATTRTYPE_MDEF] = 2 * A
    result[CommonFun.RoleData.EATTRTYPE_MAXHP] = (0.1373 * A * A * A - 2.9336 * A * A + 202.51 * A + 40.727) * 0.1
    result[CommonFun.RoleData.EATTRTYPE_HIT] = 2 * A
    result[CommonFun.RoleData.EATTRTYPE_FLEE] = A
    result[CommonFun.RoleData.EATTRTYPE_CRI] = A * 0.3
    result[CommonFun.RoleData.EATTRTYPE_CRIRES] = A * 0.3
  elseif A < 40 and 30 <= A then
    result[CommonFun.RoleData.EATTRTYPE_ATK] = (3 * (A - 29) + 25) * 0.5
    result[CommonFun.RoleData.EATTRTYPE_MATK] = (3 * (A - 29) + 25) * 0.2
    result[CommonFun.RoleData.EATTRTYPE_DEF] = 8.0E-4 * A * A * A - 0.0494 * A * A + 4.5061 * A + 1
    result[CommonFun.RoleData.EATTRTYPE_MDEF] = 2 * A
    result[CommonFun.RoleData.EATTRTYPE_MAXHP] = (0.1373 * A * A * A - 2.9336 * A * A + 202.51 * A + 40.727) * 0.15
    result[CommonFun.RoleData.EATTRTYPE_HIT] = 2 * A
    result[CommonFun.RoleData.EATTRTYPE_FLEE] = A
    result[CommonFun.RoleData.EATTRTYPE_CRI] = A * 0.3
    result[CommonFun.RoleData.EATTRTYPE_CRIRES] = A * 0.3
  elseif A < 50 and 40 <= A then
    result[CommonFun.RoleData.EATTRTYPE_ATK] = (A - 39 + 57) * 0.5
    result[CommonFun.RoleData.EATTRTYPE_MATK] = (A - 39 + 57) * 0.2
    result[CommonFun.RoleData.EATTRTYPE_DEF] = 8.0E-4 * A * A * A - 0.0494 * A * A + 4.5061 * A + 1
    result[CommonFun.RoleData.EATTRTYPE_MDEF] = 2 * A
    result[CommonFun.RoleData.EATTRTYPE_MAXHP] = (0.1373 * A * A * A - 2.9336 * A * A + 202.51 * A + 40.727) * 0.15
    result[CommonFun.RoleData.EATTRTYPE_HIT] = 2 * A
    result[CommonFun.RoleData.EATTRTYPE_FLEE] = A
    result[CommonFun.RoleData.EATTRTYPE_CRI] = A * 0.3
    result[CommonFun.RoleData.EATTRTYPE_CRIRES] = A * 0.3
  elseif A < 60 and 50 <= A then
    result[CommonFun.RoleData.EATTRTYPE_ATK] = (2 * (A - 49) + 69) * 0.5
    result[CommonFun.RoleData.EATTRTYPE_MATK] = (2 * (A - 49) + 69) * 0.2
    result[CommonFun.RoleData.EATTRTYPE_DEF] = 8.0E-4 * A * A * A - 0.0494 * A * A + 4.5061 * A + 1
    result[CommonFun.RoleData.EATTRTYPE_MDEF] = 2 * A
    result[CommonFun.RoleData.EATTRTYPE_MAXHP] = (0.1373 * A * A * A - 2.9336 * A * A + 202.51 * A + 40.727) * 0.2
    result[CommonFun.RoleData.EATTRTYPE_HIT] = 2 * A
    result[CommonFun.RoleData.EATTRTYPE_FLEE] = A
    result[CommonFun.RoleData.EATTRTYPE_CRI] = A * 0.3
    result[CommonFun.RoleData.EATTRTYPE_CRIRES] = A * 0.3
  elseif A < 70 and 60 <= A then
    result[CommonFun.RoleData.EATTRTYPE_ATK] = (3 * (A - 59) + 94) * 0.5
    result[CommonFun.RoleData.EATTRTYPE_MATK] = (3 * (A - 59) + 94) * 0.2
    result[CommonFun.RoleData.EATTRTYPE_DEF] = 8.0E-4 * A * A * A - 0.0494 * A * A + 4.5061 * A + 1
    result[CommonFun.RoleData.EATTRTYPE_MDEF] = 2 * A
    result[CommonFun.RoleData.EATTRTYPE_MAXHP] = (0.1373 * A * A * A - 2.9336 * A * A + 202.51 * A + 40.727) * 0.2
    result[CommonFun.RoleData.EATTRTYPE_HIT] = 2 * A
    result[CommonFun.RoleData.EATTRTYPE_FLEE] = A
    result[CommonFun.RoleData.EATTRTYPE_CRI] = A * 0.3
    result[CommonFun.RoleData.EATTRTYPE_CRIRES] = A * 0.3
  elseif A < 80 and 70 <= A then
    result[CommonFun.RoleData.EATTRTYPE_ATK] = 13 * (A - 69) + 114
    result[CommonFun.RoleData.EATTRTYPE_MATK] = (13 * (A - 69) + 114) * 0.5
    result[CommonFun.RoleData.EATTRTYPE_DEF] = 8.0E-4 * A * A * A - 0.0494 * A * A + 4.5061 * A + 1
    result[CommonFun.RoleData.EATTRTYPE_MDEF] = 2 * A
    result[CommonFun.RoleData.EATTRTYPE_MAXHP] = (0.1373 * A * A * A - 2.9336 * A * A + 202.51 * A + 40.727) * 0.2
    result[CommonFun.RoleData.EATTRTYPE_HIT] = 2 * A
    result[CommonFun.RoleData.EATTRTYPE_FLEE] = A
    result[CommonFun.RoleData.EATTRTYPE_CRI] = A * 0.3
    result[CommonFun.RoleData.EATTRTYPE_CRIRES] = A * 0.3
  elseif A < 90 and 80 <= A then
    result[CommonFun.RoleData.EATTRTYPE_ATK] = 7 * (A - 79) + 242
    result[CommonFun.RoleData.EATTRTYPE_MATK] = (7 * (A - 79) + 242) * 0.5
    result[CommonFun.RoleData.EATTRTYPE_DEF] = 8.0E-4 * A * A * A - 0.0494 * A * A + 4.5061 * A + 1
    result[CommonFun.RoleData.EATTRTYPE_MDEF] = 2 * A
    result[CommonFun.RoleData.EATTRTYPE_MAXHP] = (0.1373 * A * A * A - 2.9336 * A * A + 202.51 * A + 40.727) * 0.2
    result[CommonFun.RoleData.EATTRTYPE_HIT] = 2 * A
    result[CommonFun.RoleData.EATTRTYPE_FLEE] = A
    result[CommonFun.RoleData.EATTRTYPE_CRI] = A * 0.3
    result[CommonFun.RoleData.EATTRTYPE_CRIRES] = A * 0.3
  elseif A < 100 and 90 <= A then
    result[CommonFun.RoleData.EATTRTYPE_ATK] = 8 * (A - 89) + 309
    result[CommonFun.RoleData.EATTRTYPE_MATK] = (8 * (A - 89) + 309) * 0.5
    result[CommonFun.RoleData.EATTRTYPE_DEF] = 8.0E-4 * A * A * A - 0.0494 * A * A + 4.5061 * A + 1
    result[CommonFun.RoleData.EATTRTYPE_MDEF] = 2 * A
    result[CommonFun.RoleData.EATTRTYPE_MAXHP] = (0.1373 * A * A * A - 2.9336 * A * A + 202.51 * A + 40.727) * 0.2
    result[CommonFun.RoleData.EATTRTYPE_HIT] = 2 * A
    result[CommonFun.RoleData.EATTRTYPE_FLEE] = A
    result[CommonFun.RoleData.EATTRTYPE_CRI] = A * 0.3
    result[CommonFun.RoleData.EATTRTYPE_CRIRES] = A * 0.3
  end
  return result
end