Formula

CommonFun.calcBeingNpcAttrValue

function CommonFun.calcBeingNpcAttrValue(attr, npcid, npclevel, srcUser)
  local result = {}
  if srcUser == nil then
    return result
  end
  local Vit = srcUser:GetProperty("Vit")
  local Str = srcUser:GetProperty("Str")
  local Int = srcUser:GetProperty("Int")
  local Dex = srcUser:GetProperty("Dex")
  local MaxHp = srcUser:GetProperty("MaxHp")
  local mapid, maptype = srcUser:GetMapInfo()
  if maptype == PVP_MAPS then
    MaxHp = MaxHp / 4
  end
  local Atk = srcUser:GetProperty("Atk")
  local MAtk = srcUser:GetProperty("MAtk")
  local Def = srcUser:GetProperty("Def")
  local MDef = srcUser:GetProperty("MDef")
  local Refine = srcUser:GetProperty("Refine")
  local MRefine = srcUser:GetProperty("MRefine")
  local Hit = srcUser:GetProperty("Hit")
  local Flee = srcUser:GetProperty("Flee")
  local Cri = srcUser:GetProperty("Cri")
  local CriRes = srcUser:GetProperty("CriRes")
  local npcSkillId_1 = srcUser:GetLernedSkillLevel(416_RUNE_KNIGHT:HOMUNCULUS_STRENGTH_I)
  local npcSkillId_2 = srcUser:GetLernedSkillLevel(428_RUNE_KNIGHT:HOMUNCULUS_STRENGTH_II)
  local npcSkillId_3 = srcUser:GetLernedSkillLevel(1127_ARCANE_MASTER:HEALTH_LINK)
  local QualityRatio = 2
  local lianjie = 0
  if srcUser:HasBuffID(116310_HEALTH_LINK_PEAK_PLAYER_EMPTY_BUFF_:MAX_STACK_0) then
    lianjie = 0.05 * npcSkillId_3 - 0.25
  end
  local RefineLv7 = srcUser:GetEquipedRefineLv(7_WEAPON)
  local Atk_7 = 0
  if srcUser:HasBuffID(90001586_BATTLE_BERDYSZ_R7_:MAX_STACK_0) and 5 < RefineLv7 then
    Atk_7 = (RefineLv7 - 5) * 10
  end
  if srcUser:HasBuffID(42010_DEVASTATION_AXE_:MAX_STACK_0) and 5 < RefineLv7 then
    Atk_7 = (RefineLv7 - 5) * 10
  end
  local AtkPer_7 = 0
  if srcUser:HasBuffID(90001587_BATTLE_BERDYSZ_R8_:MAX_STACK_0) and 10 < RefineLv7 then
    AtkPer_7 = (RefineLv7 - 10) * 0.01
  end
  if srcUser:HasBuffID(42010_DEVASTATION_AXE_:MAX_STACK_0) and 10 < RefineLv7 then
    AtkPer_7 = (RefineLv7 - 10) * 0.01
  end
  if srcUser:HasBuffID(90004484_WAR_AXE_OF_DESTRUCTION_1_T5_:MAX_STACK_0) then
    AtkPer_7 = AtkPer_7 + 0.15
  end
  local MAXHPPER_7 = 0
  if srcUser:HasBuffID(90004484_WAR_AXE_OF_DESTRUCTION_1_T5_:MAX_STACK_0) then
    MAXHPPER_7 = MAXHPPER_7 + 0.15
  end
  local GemValue1 = srcUser:GetGemValue(132023_HOMUNCULUS_ATK_PERCENTAGE)
  local GemValue2 = srcUser:GetGemValue(132053_HOMUNCULUS_ATK_PERCENTAGE)
  local GemDam = 1 + GemValue1 / 100000 + GemValue2 / 100000
  if npcid == 600010 then
    result[CommonFun.RoleData.EATTRTYPE_STR] = (1 + (npclevel - 1) * 0.05) * QualityRatio + attr[CommonFun.RoleData.EATTRTYPE_STR]
    result[CommonFun.RoleData.EATTRTYPE_AGI] = (1 + (npclevel - 1) * 0.05) * QualityRatio + attr[CommonFun.RoleData.EATTRTYPE_AGI]
    result[CommonFun.RoleData.EATTRTYPE_VIT] = (7 + (npclevel - 1) * 0.04) * QualityRatio + attr[CommonFun.RoleData.EATTRTYPE_VIT]
    result[CommonFun.RoleData.EATTRTYPE_INT] = (7 + (npclevel - 1) * 0.35) * QualityRatio + attr[CommonFun.RoleData.EATTRTYPE_INT]
    result[CommonFun.RoleData.EATTRTYPE_DEX] = (3 + (npclevel - 1) * 0.1) * QualityRatio + attr[CommonFun.RoleData.EATTRTYPE_DEX]
    result[CommonFun.RoleData.EATTRTYPE_LUK] = (1 + (npclevel - 1) * 0.05) * QualityRatio + attr[CommonFun.RoleData.EATTRTYPE_LUK]
    local BeingBase_ATK = (28 + (npclevel - 1) * 0.96) * 1.5
    local BeingBase_MATK = (66 + (npclevel - 1) * 2.81) * 1.5
    local BeingBase_DEF = 28 + (npclevel - 1) * 1.38
    local BeingBase_MDEF = 42 + (npclevel - 1) * 2.09
    local BeingBase_MAXHP = 130 + (npclevel - 1) * 129.93
    local BeingBase_HIT = 62 + (npclevel - 1) * 0.6
    local BeingBase_FLEE = 54 + (npclevel - 1) * 0.19
    local BeingBase_CRI = 51.32 + (npclevel - 1) * 0.07
    local BeingBase_CRIRES = 50.8 + (npclevel - 1) * 0.04
    local BeingToUser_ATK = (Str * 0.5 + Atk * 0.02 + Refine * 0.3) * 1.5
    local BeingToUser_MATK = (Int * 3 + MAtk * 0.02 + MRefine * 0.3) * 1.5
    local BeingToUser_DEF = Vit * 2 + Def * 0.3
    local BeingToUser_MDEF = Int * 2 + MDef * 0.3
    local BeingToUser_MAXHP = Vit * 300 + MaxHp * 0.6
    local BeingToUser_HIT = 0
    local BeingToUser_FLEE = Flee * 0.5
    local BeingToUser_CRI = 0
    local BeingToUser_CRIRES = CriRes * 0.5
    result[CommonFun.RoleData.EATTRTYPE_ATK] = (BeingBase_ATK + BeingToUser_ATK + Atk_7 + attr[CommonFun.RoleData.EATTRTYPE_ATK] + attr[CommonFun.RoleData.EATTRTYPE_STR] * 4.02 + attr[CommonFun.RoleData.EATTRTYPE_LUK] * 0.2 + attr[CommonFun.RoleData.EATTRTYPE_DEX] * 0.2) * (1 + attr[CommonFun.RoleData.EATTRTYPE_ATKPER]) * (1 + AtkPer_7) * GemDam
    result[CommonFun.RoleData.EATTRTYPE_MATK] = (BeingBase_MATK + BeingToUser_MATK + Atk_7 + attr[CommonFun.RoleData.EATTRTYPE_MATK] + attr[CommonFun.RoleData.EATTRTYPE_INT] * 2.01 + npcSkillId_1 * 100) * (1 + npcSkillId_2 * 0.01) * (1 + attr[CommonFun.RoleData.EATTRTYPE_MATKPER]) * (1 + AtkPer_7) * GemDam
    result[CommonFun.RoleData.EATTRTYPE_DEF] = BeingBase_DEF + BeingToUser_DEF + attr[CommonFun.RoleData.EATTRTYPE_DEF] + attr[CommonFun.RoleData.EATTRTYPE_VIT] * 1
    result[CommonFun.RoleData.EATTRTYPE_MDEF] = BeingBase_MDEF + BeingToUser_MDEF + attr[CommonFun.RoleData.EATTRTYPE_MDEF] + attr[CommonFun.RoleData.EATTRTYPE_INT] * 1 + attr[CommonFun.RoleData.EATTRTYPE_VIT] * 0.5
    result[CommonFun.RoleData.EATTRTYPE_MAXHP] = (BeingBase_MAXHP + BeingToUser_MAXHP + attr[CommonFun.RoleData.EATTRTYPE_MAXHP] + npcSkillId_1 * 2000) * (1 + attr[CommonFun.RoleData.EATTRTYPE_VIT] / 100) * (1 + attr[CommonFun.RoleData.EATTRTYPE_MAXHPPER] + MAXHPPER_7)
    if maptype == PVP_MAPS then
      result[CommonFun.RoleData.EATTRTYPE_MAXHP] = result[CommonFun.RoleData.EATTRTYPE_MAXHP] * 4
    end
    result[CommonFun.RoleData.EATTRTYPE_HIT] = BeingToUser_HIT + BeingToUser_HIT + attr[CommonFun.RoleData.EATTRTYPE_HIT] + attr[CommonFun.RoleData.EATTRTYPE_DEX] * 1
    result[CommonFun.RoleData.EATTRTYPE_FLEE] = BeingBase_FLEE + BeingToUser_FLEE + attr[CommonFun.RoleData.EATTRTYPE_FLEE] + attr[CommonFun.RoleData.EATTRTYPE_AGI] * 1
    result[CommonFun.RoleData.EATTRTYPE_CRI] = BeingBase_CRI + BeingToUser_CRI + attr[CommonFun.RoleData.EATTRTYPE_CRI] + attr[CommonFun.RoleData.EATTRTYPE_LUK] * 0.33
    result[CommonFun.RoleData.EATTRTYPE_CRIRES] = BeingBase_CRIRES + BeingToUser_CRIRES + attr[CommonFun.RoleData.EATTRTYPE_CRIRES] + attr[CommonFun.RoleData.EATTRTYPE_LUK] * 0.2
    result[CommonFun.RoleData.EATTRTYPE_ATKSPD] = 1.5
    result[CommonFun.RoleData.EATTRTYPE_DAMREDUC] = npcSkillId_2 * 0.02 + lianjie + attr[CommonFun.RoleData.EATTRTYPE_DAMREDUC]
    result[CommonFun.RoleData.EATTRTYPE_REFINEDAMREDUC] = 0.75
    result[CommonFun.RoleData.EATTRTYPE_REFINEMDAMREDUC] = 0.75
  elseif npcid == 600020 then
    result[CommonFun.RoleData.EATTRTYPE_STR] = (6 + (npclevel - 1) * 0.3) * QualityRatio + attr[CommonFun.RoleData.EATTRTYPE_STR]
    result[CommonFun.RoleData.EATTRTYPE_AGI] = (1 + (npclevel - 1) * 0.05) * QualityRatio + attr[CommonFun.RoleData.EATTRTYPE_AGI]
    result[CommonFun.RoleData.EATTRTYPE_VIT] = (8 + (npclevel - 1) * 0.4) * QualityRatio + attr[CommonFun.RoleData.EATTRTYPE_VIT]
    result[CommonFun.RoleData.EATTRTYPE_INT] = (2 + (npclevel - 1) * 0.1) * QualityRatio + attr[CommonFun.RoleData.EATTRTYPE_INT]
    result[CommonFun.RoleData.EATTRTYPE_DEX] = (2 + (npclevel - 1) * 0.1) * QualityRatio + attr[CommonFun.RoleData.EATTRTYPE_DEX]
    result[CommonFun.RoleData.EATTRTYPE_LUK] = (1 + (npclevel - 1) * 0.05) * QualityRatio + attr[CommonFun.RoleData.EATTRTYPE_LUK]
    local BeingBase_ATK = (108 + (npclevel - 1) * 4.94) * 1.5
    local BeingBase_MATK = (26 + (npclevel - 1) * 0.79) * 1.5
    local BeingBase_DEF = 32 + (npclevel - 1) * 1.6
    local BeingBase_MDEF = 24 + (npclevel - 1) * 1.19
    local BeingBase_MAXHP = 134 + (npclevel - 1) * 141.43
    local BeingBase_HIT = 58 + (npclevel - 1) * 0.38
    local BeingBase_FLEE = 54 + (npclevel - 1) * 0.19
    local BeingBase_CRI = 51.32 + (npclevel - 1) * 0.07
    local BeingBase_CRIRES = 50.8 + (npclevel - 1) * 0.04
    local BeingToUser_ATK = (Str * 5 + Atk * 0.02 + Refine * 0.3) * 1.5
    local BeingToUser_MATK = (Int * 0.5 + MAtk * 0.02 + MRefine * 0.3) * 1.5
    local BeingToUser_DEF = Vit * 4 + Def * 0.6
    local BeingToUser_MDEF = Int * 4 + MDef * 0.6
    local BeingToUser_MAXHP = Vit * 500 + MaxHp * 0.8
    local BeingToUser_HIT = Hit * 0.5
    local BeingToUser_FLEE = Flee * 0.5
    local BeingToUser_CRI = Cri * 0.5
    local BeingToUser_CRIRES = CriRes * 0.5
    local Num1 = srcUser:GetBuffLayer(91000141_ALLOY_MAIL_BERDYSZ_:MAX_STACK_3)
    local Num2 = srcUser:GetBuffLayer(91000721_ALLOY_MAIL_BERDYSZ_:MAX_STACK_3)
    local Num3 = srcUser:GetBuffLayer(91001121_BRIGHT_ARMOR_BERDYSZ_:MAX_STACK_3)
    local Num4 = srcUser:GetBuffLayer(91001131_BRIGHT_ARMOR_SHATTERING_WAR_AXE_:MAX_STACK_3)
    local AtkPer_1 = 0.03
    local AtkPer_2 = 0
    if srcUser:HasBuffID(91000141_ALLOY_MAIL_BERDYSZ_:MAX_STACK_3) or srcUser:HasBuffID(91000721_ALLOY_MAIL_BERDYSZ_:MAX_STACK_3) or srcUser:HasBuffID(91001121_BRIGHT_ARMOR_BERDYSZ_:MAX_STACK_3) or srcUser:HasBuffID(91001131_BRIGHT_ARMOR_SHATTERING_WAR_AXE_:MAX_STACK_3) then
      AtkPer_2 = (Num1 + Num2 + Num3 + Num4) * AtkPer_1
    end
    local WeaponRefineLv = srcUser:GetEquipedRefineLv(7_WEAPON)
    if (srcUser:HasBuffID(90001583_BATTLE_BERDYSZ_R4_:MAX_STACK_0) or srcUser:HasBuffID(42010_DEVASTATION_AXE_:MAX_STACK_0)) and 15 <= WeaponRefineLv then
      AtkPer_2 = AtkPer_2 + 0.1
    end
    result[CommonFun.RoleData.EATTRTYPE_ATK] = (BeingBase_ATK + BeingToUser_ATK + Atk_7 + attr[CommonFun.RoleData.EATTRTYPE_ATK] + attr[CommonFun.RoleData.EATTRTYPE_STR] * 4.02 + attr[CommonFun.RoleData.EATTRTYPE_LUK] * 0.2 + attr[CommonFun.RoleData.EATTRTYPE_DEX] * 0.2 + npcSkillId_1 * 100) * (1 + AtkPer_2 + AtkPer_7) * (1 + attr[CommonFun.RoleData.EATTRTYPE_ATKPER]) * GemDam
    result[CommonFun.RoleData.EATTRTYPE_MATK] = (BeingBase_MATK + BeingToUser_MATK + Atk_7 + attr[CommonFun.RoleData.EATTRTYPE_MATK] + attr[CommonFun.RoleData.EATTRTYPE_INT] * 2.01) * (1 + attr[CommonFun.RoleData.EATTRTYPE_MATKPER]) * (1 + AtkPer_7) * GemDam
    result[CommonFun.RoleData.EATTRTYPE_DEF] = BeingBase_DEF + BeingToUser_DEF + attr[CommonFun.RoleData.EATTRTYPE_DEF] + attr[CommonFun.RoleData.EATTRTYPE_VIT] * 1
    result[CommonFun.RoleData.EATTRTYPE_MDEF] = BeingBase_MDEF + BeingToUser_MDEF + attr[CommonFun.RoleData.EATTRTYPE_MDEF] + attr[CommonFun.RoleData.EATTRTYPE_INT] * 1 + attr[CommonFun.RoleData.EATTRTYPE_VIT] * 0.5
    result[CommonFun.RoleData.EATTRTYPE_MAXHP] = (BeingBase_MAXHP + BeingToUser_MAXHP + attr[CommonFun.RoleData.EATTRTYPE_MAXHP]) * (1 + attr[CommonFun.RoleData.EATTRTYPE_VIT] / 100) * (1 + npcSkillId_2 * 0.01) * (1 + attr[CommonFun.RoleData.EATTRTYPE_MAXHPPER] + MAXHPPER_7)
    if maptype == PVP_MAPS then
      result[CommonFun.RoleData.EATTRTYPE_MAXHP] = result[CommonFun.RoleData.EATTRTYPE_MAXHP] * 4
    end
    result[CommonFun.RoleData.EATTRTYPE_HIT] = BeingToUser_HIT + BeingToUser_HIT + attr[CommonFun.RoleData.EATTRTYPE_HIT] + attr[CommonFun.RoleData.EATTRTYPE_DEX] * 1
    result[CommonFun.RoleData.EATTRTYPE_FLEE] = BeingBase_FLEE + BeingToUser_FLEE + attr[CommonFun.RoleData.EATTRTYPE_FLEE] + attr[CommonFun.RoleData.EATTRTYPE_AGI] * 1
    result[CommonFun.RoleData.EATTRTYPE_CRI] = BeingBase_CRI + BeingToUser_CRI + attr[CommonFun.RoleData.EATTRTYPE_CRI] + attr[CommonFun.RoleData.EATTRTYPE_LUK] * 0.33
    result[CommonFun.RoleData.EATTRTYPE_CRIRES] = BeingBase_CRIRES + BeingToUser_CRIRES + attr[CommonFun.RoleData.EATTRTYPE_CRIRES] + attr[CommonFun.RoleData.EATTRTYPE_LUK] * 0.2
    result[CommonFun.RoleData.EATTRTYPE_ATKSPD] = 1 + npcSkillId_1 * 0.05 + npcSkillId_2 * 0.05
    result[CommonFun.RoleData.EATTRTYPE_REFINEDAMREDUC] = 0.75
    result[CommonFun.RoleData.EATTRTYPE_REFINEMDAMREDUC] = 0.75
  elseif npcid == 600030 then
    result[CommonFun.RoleData.EATTRTYPE_STR] = (1 + (npclevel - 1) * 0.05) * QualityRatio + attr[CommonFun.RoleData.EATTRTYPE_STR]
    result[CommonFun.RoleData.EATTRTYPE_AGI] = (1 + (npclevel - 1) * 0.05) * QualityRatio + attr[CommonFun.RoleData.EATTRTYPE_AGI]
    result[CommonFun.RoleData.EATTRTYPE_VIT] = (6 + (npclevel - 1) * 0.35) * QualityRatio + attr[CommonFun.RoleData.EATTRTYPE_VIT]
    result[CommonFun.RoleData.EATTRTYPE_INT] = (8 + (npclevel - 1) * 0.4) * QualityRatio + attr[CommonFun.RoleData.EATTRTYPE_INT]
    result[CommonFun.RoleData.EATTRTYPE_DEX] = (3 + (npclevel - 1) * 0.1) * QualityRatio + attr[CommonFun.RoleData.EATTRTYPE_DEX]
    result[CommonFun.RoleData.EATTRTYPE_LUK] = (1 + (npclevel - 1) * 0.05) * QualityRatio + attr[CommonFun.RoleData.EATTRTYPE_LUK]
    local BeingBase_ATK = (28 + (npclevel - 1) * 0.96) * 1.5
    local BeingBase_MATK = (74 + (npclevel - 1) * 3.21) * 1.5
    local BeingBase_DEF = 24 + (npclevel - 1) * 1.19
    local BeingBase_MDEF = 44 + (npclevel - 1) * 2.19
    local BeingBase_MAXHP = 126 + (npclevel - 1) * 118.44
    local BeingBase_HIT = 62 + (npclevel - 1) * 0.6
    local BeingBase_FLEE = 54 + (npclevel - 1) * 0.19
    local BeingBase_CRI = 51.32 + (npclevel - 1) * 0.07
    local BeingBase_CRIRES = 50.8 + (npclevel - 1) * 0.04
    local BeingToUser_ATK = (Str * 1 + Atk * 0.02 + Refine * 0.3) * 1.5
    local BeingToUser_MATK = (Int * 4.5 + MAtk * 0.02 + MRefine * 0.3) * 1.5
    local BeingToUser_DEF = Vit * 1 + Def * 0.3
    local BeingToUser_MDEF = Int * 1 + MDef * 0.3
    local BeingToUser_MAXHP = Vit * 300 + MaxHp * 0.6
    local BeingToUser_HIT = 0
    local BeingToUser_FLEE = Flee * 0.5
    local BeingToUser_CRI = 0
    local BeingToUser_CRIRES = CriRes * 0.5
    result[CommonFun.RoleData.EATTRTYPE_ATK] = (BeingBase_ATK + BeingToUser_ATK + Atk_7 + attr[CommonFun.RoleData.EATTRTYPE_ATK] + attr[CommonFun.RoleData.EATTRTYPE_STR] * 4.02 + attr[CommonFun.RoleData.EATTRTYPE_LUK] * 0.2 + attr[CommonFun.RoleData.EATTRTYPE_DEX] * 0.2) * (1 + attr[CommonFun.RoleData.EATTRTYPE_ATKPER]) * (1 + AtkPer_7) * GemDam
    result[CommonFun.RoleData.EATTRTYPE_MATK] = (BeingBase_MATK + BeingToUser_MATK + Atk_7 + attr[CommonFun.RoleData.EATTRTYPE_MATK] + attr[CommonFun.RoleData.EATTRTYPE_INT] * 2.01 + npcSkillId_1 * 100) * (1 + npcSkillId_2 * 0.01) * (1 + attr[CommonFun.RoleData.EATTRTYPE_MATKPER]) * (1 + AtkPer_7) * GemDam
    result[CommonFun.RoleData.EATTRTYPE_DEF] = BeingBase_DEF + BeingToUser_DEF + attr[CommonFun.RoleData.EATTRTYPE_DEF] + attr[CommonFun.RoleData.EATTRTYPE_VIT] * 1 + npcSkillId_1 * 40
    result[CommonFun.RoleData.EATTRTYPE_MDEF] = BeingBase_MDEF + BeingToUser_MDEF + attr[CommonFun.RoleData.EATTRTYPE_MDEF] + attr[CommonFun.RoleData.EATTRTYPE_INT] * 1 + attr[CommonFun.RoleData.EATTRTYPE_VIT] * 0.5
    result[CommonFun.RoleData.EATTRTYPE_MAXHP] = (BeingBase_MAXHP + BeingToUser_MAXHP + attr[CommonFun.RoleData.EATTRTYPE_MAXHP]) * (1 + attr[CommonFun.RoleData.EATTRTYPE_VIT] / 100) * (1 + attr[CommonFun.RoleData.EATTRTYPE_MAXHPPER] + MAXHPPER_7)
    if maptype == PVP_MAPS then
      result[CommonFun.RoleData.EATTRTYPE_MAXHP] = result[CommonFun.RoleData.EATTRTYPE_MAXHP] * 4
    end
    result[CommonFun.RoleData.EATTRTYPE_HIT] = BeingToUser_HIT + BeingToUser_HIT + attr[CommonFun.RoleData.EATTRTYPE_HIT] + attr[CommonFun.RoleData.EATTRTYPE_DEX] * 1
    result[CommonFun.RoleData.EATTRTYPE_FLEE] = BeingBase_FLEE + BeingToUser_FLEE + attr[CommonFun.RoleData.EATTRTYPE_FLEE] + attr[CommonFun.RoleData.EATTRTYPE_AGI] * 1
    result[CommonFun.RoleData.EATTRTYPE_CRI] = BeingBase_CRI + BeingToUser_CRI + attr[CommonFun.RoleData.EATTRTYPE_CRI] + attr[CommonFun.RoleData.EATTRTYPE_LUK] * 0.33
    result[CommonFun.RoleData.EATTRTYPE_CRIRES] = BeingBase_CRIRES + BeingToUser_CRIRES + attr[CommonFun.RoleData.EATTRTYPE_CRIRES] + attr[CommonFun.RoleData.EATTRTYPE_LUK] * 0.2
    result[CommonFun.RoleData.EATTRTYPE_ATKSPD] = 1.5
    result[CommonFun.RoleData.EATTRTYPE_DAMREDUC] = npcSkillId_2 * 0.02 + lianjie + attr[CommonFun.RoleData.EATTRTYPE_DAMREDUC]
    result[CommonFun.RoleData.EATTRTYPE_REFINEDAMREDUC] = 0.75
    result[CommonFun.RoleData.EATTRTYPE_REFINEMDAMREDUC] = 0.75
  elseif npcid == 591010 then
    result[CommonFun.RoleData.EATTRTYPE_STR] = (6 + (npclevel - 1) * 0.3) * QualityRatio + attr[CommonFun.RoleData.EATTRTYPE_STR]
    result[CommonFun.RoleData.EATTRTYPE_AGI] = (1 + (npclevel - 1) * 0.05) * QualityRatio + attr[CommonFun.RoleData.EATTRTYPE_AGI]
    result[CommonFun.RoleData.EATTRTYPE_VIT] = (8 + (npclevel - 1) * 0.4) * QualityRatio + attr[CommonFun.RoleData.EATTRTYPE_VIT]
    result[CommonFun.RoleData.EATTRTYPE_INT] = (2 + (npclevel - 1) * 0.1) * QualityRatio + attr[CommonFun.RoleData.EATTRTYPE_INT]
    result[CommonFun.RoleData.EATTRTYPE_DEX] = (2 + (npclevel - 1) * 0.1) * QualityRatio + attr[CommonFun.RoleData.EATTRTYPE_DEX]
    result[CommonFun.RoleData.EATTRTYPE_LUK] = (1 + (npclevel - 1) * 0.05) * QualityRatio + attr[CommonFun.RoleData.EATTRTYPE_LUK]
    local BeingBase_ATK = (108 + (npclevel - 1) * 4.94) * 1.5
    local BeingBase_MATK = (26 + (npclevel - 1) * 0.79) * 1.5
    local BeingBase_DEF = 32 + (npclevel - 1) * 1.6
    local BeingBase_MDEF = 24 + (npclevel - 1) * 1.19
    local BeingBase_MAXHP = 134 + (npclevel - 1) * 141.43
    local BeingBase_HIT = 58 + (npclevel - 1) * 0.38
    local BeingBase_FLEE = 54 + (npclevel - 1) * 0.19
    local BeingBase_CRI = 51.32 + (npclevel - 1) * 0.07
    local BeingBase_CRIRES = 50.8 + (npclevel - 1) * 0.04
    local BeingToUser_ATK = (Str * 5 + Dex * 2 + Atk * 0.02 + Refine * 0.3) * 1.5
    local BeingToUser_MATK = (Int * 0.5 + MAtk * 0.02 + MRefine * 0.3) * 1.5
    local BeingToUser_DEF = Vit * 4 + Def * 0.6
    local BeingToUser_MDEF = Int * 4 + MDef * 0.6
    local BeingToUser_MAXHP = Vit * 500 + MaxHp * 0.7
    local BeingToUser_HIT = Hit * 0.5
    local BeingToUser_FLEE = Flee * 0.5
    local BeingToUser_CRI = Cri * 0.5
    local BeingToUser_CRIRES = CriRes * 0.5
    result[CommonFun.RoleData.EATTRTYPE_ATK] = (BeingBase_ATK + BeingToUser_ATK + Atk_7 + attr[CommonFun.RoleData.EATTRTYPE_ATK] + attr[CommonFun.RoleData.EATTRTYPE_STR] * 4.02 + attr[CommonFun.RoleData.EATTRTYPE_LUK] * 0.2 + attr[CommonFun.RoleData.EATTRTYPE_DEX] * 0.2 + npcSkillId_1 * 100) * (1 + AtkPer_7 + npcSkillId_2 * 0.01) * (1 + attr[CommonFun.RoleData.EATTRTYPE_ATKPER]) * GemDam
    result[CommonFun.RoleData.EATTRTYPE_MATK] = (BeingBase_MATK + BeingToUser_MATK + Atk_7 + attr[CommonFun.RoleData.EATTRTYPE_MATK] + attr[CommonFun.RoleData.EATTRTYPE_INT] * 2.01) * (1 + attr[CommonFun.RoleData.EATTRTYPE_MATKPER]) * (1 + AtkPer_7) * GemDam
    result[CommonFun.RoleData.EATTRTYPE_DEF] = BeingBase_DEF + BeingToUser_DEF + attr[CommonFun.RoleData.EATTRTYPE_DEF] + attr[CommonFun.RoleData.EATTRTYPE_VIT] * 1
    result[CommonFun.RoleData.EATTRTYPE_MDEF] = BeingBase_MDEF + BeingToUser_MDEF + attr[CommonFun.RoleData.EATTRTYPE_MDEF] + attr[CommonFun.RoleData.EATTRTYPE_INT] * 1 + attr[CommonFun.RoleData.EATTRTYPE_VIT] * 0.5
    result[CommonFun.RoleData.EATTRTYPE_MAXHP] = (BeingBase_MAXHP + BeingToUser_MAXHP + attr[CommonFun.RoleData.EATTRTYPE_MAXHP]) * (1 + attr[CommonFun.RoleData.EATTRTYPE_VIT] / 100) * 1 * (1 + attr[CommonFun.RoleData.EATTRTYPE_MAXHPPER] + MAXHPPER_7)
    if maptype == PVP_MAPS then
      result[CommonFun.RoleData.EATTRTYPE_MAXHP] = result[CommonFun.RoleData.EATTRTYPE_MAXHP] * 4
    end
    result[CommonFun.RoleData.EATTRTYPE_HIT] = BeingToUser_HIT + BeingToUser_HIT + attr[CommonFun.RoleData.EATTRTYPE_HIT] + attr[CommonFun.RoleData.EATTRTYPE_DEX] * 1
    result[CommonFun.RoleData.EATTRTYPE_FLEE] = BeingBase_FLEE + BeingToUser_FLEE + attr[CommonFun.RoleData.EATTRTYPE_FLEE] + attr[CommonFun.RoleData.EATTRTYPE_AGI] * 1
    result[CommonFun.RoleData.EATTRTYPE_CRI] = BeingBase_CRI + BeingToUser_CRI + attr[CommonFun.RoleData.EATTRTYPE_CRI] + attr[CommonFun.RoleData.EATTRTYPE_LUK] * 0.33
    result[CommonFun.RoleData.EATTRTYPE_CRIRES] = BeingBase_CRIRES + BeingToUser_CRIRES + attr[CommonFun.RoleData.EATTRTYPE_CRIRES] + attr[CommonFun.RoleData.EATTRTYPE_LUK] * 0.2
    result[CommonFun.RoleData.EATTRTYPE_IgnoreDef] = npcSkillId_1 * 0.05
    result[CommonFun.RoleData.EATTRTYPE_DAMREDUC] = npcSkillId_2 * 0.02 + lianjie + attr[CommonFun.RoleData.EATTRTYPE_DAMREDUC]
    result[CommonFun.RoleData.EATTRTYPE_REFINEDAMREDUC] = 0.75
    result[CommonFun.RoleData.EATTRTYPE_REFINEMDAMREDUC] = 0.75
  end
  return result
end