1function CommonFun.calcBuff_3021(srcUser, targetUser, a, b, c, d, lv)
2 if srcUser == nil or targetUser == nil then
3 return 0
4 end
5 local PoisonAtk = srcUser:GetProperty("PoisonAtk")
6 local PoisonDef2 = targetUser:GetProperty("PoisonDef")
7 local PoisonDam = 1 + PoisonAtk - PoisonDef2
8 if PoisonDam <= 0 then
9 PoisonDam = 0
10 end
11 local StateAtk = srcUser:GetProperty("StateAtk")
12 local StateDef2 = targetUser:GetProperty("StateDef")
13 local StateDam = (1 + StateAtk) * (1 - StateDef2)
14 if StateDam <= 0 then
15 StateDam = 0
16 end
17 local skilllv_1 = srcUser:GetLernedSkillLevel(1103_ARCANE_MASTER:POISONOUS_SMOKE)
18 local skilllv_2 = srcUser:GetLernedSkillLevel(1102_ARCANE_MASTER:NEW_POISON_RESEARCH)
19 skilllv_1 = math.min(skilllv_1, 10)
20 local A = (10 + skilllv_1 * 4 + skilllv_2) * PoisonDam * StateDam * CommonFun.calcAttrPoisonRate(srcUser, targetUser)
21 if targetUser:HasBuffID(20610050_ANTI_GRAVITY_ARMOR_FLEE_HELL_PLANT_:MAX_STACK_0) and targetUser:HasBuffID(117860_HOVER_:MAX_STACK_0) or targetUser:HasBuffID(20610050_ANTI_GRAVITY_ARMOR_FLEE_HELL_PLANT_:MAX_STACK_0) and targetUser:HasBuffID(184020_ANTI_GRAVITY_ARMOR_FLEE_HELL_PLANT_:MAX_STACK_0) then
22 A = 0
23 end
24 if srcUser:HasBuffID(140080_PURE_SIN_:MAX_STACK_0) then
25 A = 0
26 end
27 if A <= 0 then
28 return 0
29 end
30 return A
31end