Formula

CommonFun.calcUserShowAttrValue

function CommonFun.calcUserShowAttrValue(attr, profession, oldlv, newlv, WeaponType)
  local result = {}
  local oldvalue = 50 + oldlv * BaseLvRate[profession] + CommonFun.CalcSum(oldlv) * HpRate[profession] + BaseHp[profession]
  local newvalue = 50 + newlv * BaseLvRate[profession] + CommonFun.CalcSum(newlv) * HpRate[profession] + BaseHp[profession]
  if newvalue > oldvalue + 1 then
    result[CommonFun.RoleData.EATTRTYPE_MAXHP] = newvalue - oldvalue
  end
  if CommonFun.checkRemoteAtk(profession, WeaponType) then
    oldvalue = attr[CommonFun.RoleData.EATTRTYPE_DEX] * 3 + attr[CommonFun.RoleData.EATTRTYPE_DEX] * attr[CommonFun.RoleData.EATTRTYPE_DEX] / 100 + attr[CommonFun.RoleData.EATTRTYPE_STR] / 5 + attr[CommonFun.RoleData.EATTRTYPE_LUK] / 5 + oldlv * BaseLvAtkRate1[profession]
  else
    oldvalue = attr[CommonFun.RoleData.EATTRTYPE_STR] * 5 + attr[CommonFun.RoleData.EATTRTYPE_STR] * attr[CommonFun.RoleData.EATTRTYPE_STR] / 100 + attr[CommonFun.RoleData.EATTRTYPE_DEX] / 5 + attr[CommonFun.RoleData.EATTRTYPE_LUK] / 5 + oldlv * BaseLvAtkRate1[profession]
  end
  if CommonFun.checkRemoteAtk(profession, WeaponType) then
    newvalue = attr[CommonFun.RoleData.EATTRTYPE_DEX] * 3 + attr[CommonFun.RoleData.EATTRTYPE_DEX] * attr[CommonFun.RoleData.EATTRTYPE_DEX] / 100 + attr[CommonFun.RoleData.EATTRTYPE_STR] / 5 + attr[CommonFun.RoleData.EATTRTYPE_LUK] / 5 + newlv * BaseLvAtkRate1[profession]
  else
    newvalue = attr[CommonFun.RoleData.EATTRTYPE_STR] * 3 + attr[CommonFun.RoleData.EATTRTYPE_STR] * attr[CommonFun.RoleData.EATTRTYPE_STR] / 100 + attr[CommonFun.RoleData.EATTRTYPE_DEX] / 5 + attr[CommonFun.RoleData.EATTRTYPE_LUK] / 5 + newlv * BaseLvAtkRate1[profession]
  end
  if newvalue > oldvalue + 1 then
    result[CommonFun.RoleData.EATTRTYPE_ATK] = newvalue - oldvalue
  end
  oldvalue = attr[CommonFun.RoleData.EATTRTYPE_INT] * 3 + attr[CommonFun.RoleData.EATTRTYPE_INT] * attr[CommonFun.RoleData.EATTRTYPE_INT] / 100 + oldlv * BaseLvAtkRate2[profession]
  newvalue = attr[CommonFun.RoleData.EATTRTYPE_INT] * 3 + attr[CommonFun.RoleData.EATTRTYPE_INT] * attr[CommonFun.RoleData.EATTRTYPE_INT] / 100 + newlv * BaseLvAtkRate2[profession]
  if newvalue > oldvalue + 1 then
    result[CommonFun.RoleData.EATTRTYPE_MATK] = newvalue - oldvalue
  end
  oldvalue = attr[CommonFun.RoleData.EATTRTYPE_VIT] * 2 + attr[CommonFun.RoleData.EATTRTYPE_VIT] * attr[CommonFun.RoleData.EATTRTYPE_VIT] / 100 + oldlv * BaseLvDefRate[profession]
  newvalue = attr[CommonFun.RoleData.EATTRTYPE_VIT] * 2 + attr[CommonFun.RoleData.EATTRTYPE_VIT] * attr[CommonFun.RoleData.EATTRTYPE_VIT] / 100 + newlv * BaseLvDefRate[profession]
  if newvalue > oldvalue + 1 then
    result[CommonFun.RoleData.EATTRTYPE_DEF] = newvalue - oldvalue
  end
  oldvalue = attr[CommonFun.RoleData.EATTRTYPE_INT] * 2 + attr[CommonFun.RoleData.EATTRTYPE_INT] * attr[CommonFun.RoleData.EATTRTYPE_INT] / 100 + oldlv * BaseLvMDefRate[profession]
  newvalue = attr[CommonFun.RoleData.EATTRTYPE_INT] * 2 + attr[CommonFun.RoleData.EATTRTYPE_INT] * attr[CommonFun.RoleData.EATTRTYPE_INT] / 100 + newlv * BaseLvMDefRate[profession]
  if newvalue > oldvalue + 1 then
    result[CommonFun.RoleData.EATTRTYPE_MDEF] = newvalue - oldvalue
  end
  oldvalue = 20 + oldlv * GameConfig.NewRole.recover[profession].sp + attr[CommonFun.RoleData.EATTRTYPE_INT] * 2
  newvalue = 20 + newlv * GameConfig.NewRole.recover[profession].sp + attr[CommonFun.RoleData.EATTRTYPE_INT] * 2
  if newvalue > oldvalue + 1 then
    result[CommonFun.RoleData.EATTRTYPE_MAXSP] = newvalue - oldvalue
  end
  oldvalue = oldlv + attr[CommonFun.RoleData.EATTRTYPE_DEX]
  newvalue = newlv + attr[CommonFun.RoleData.EATTRTYPE_DEX]
  if newvalue > oldvalue + 1 then
    result[CommonFun.RoleData.EATTRTYPE_HIT] = newvalue - oldvalue
  end
  oldvalue = oldlv + attr[CommonFun.RoleData.EATTRTYPE_AGI]
  newvalue = newlv + attr[CommonFun.RoleData.EATTRTYPE_AGI]
  if newvalue > oldvalue + 1 then
    result[CommonFun.RoleData.EATTRTYPE_FLEE] = newvalue - oldvalue
  end
  return result
end