Formula
CommonFun.GetUserAtkAttr
formula.lua
1function CommonFun.GetUserAtkAttr(srcUser, targetUser, params, damageParam)
2 local skillParams = Table_Skill[params.skillIDAndLevel]
3 if skillParams == nil then
4 return 0
5 end
6 if damageParam == nil then
7 return 0
8 end
9 if srcUser:GetProperty("ForceAtkAttr") ~= 0 then
10 return srcUser:GetProperty("ForceAtkAttr")
11 end
12 local hasArrow = false
13 local arrowNum = 0
14 if skillParams.StrengthenCost ~= nil then
15 for key, val in pairs(skillParams.StrengthenCost) do
16 if val.type == 1 and val.num ~= nil then
17 hasArrow = true
18 arrowNum = val.num
19 end
20 end
21 end
22 local srcAtkElement = 0
23 if damageParam.elementparam ~= nil and damageParam.elementparam ~= 0 then
24 srcAtkElement = damageParam.elementparam
25 elseif hasArrow == false then
26 srcAtkElement = srcUser:GetProperty("AtkAttr")
27 else
28 local AttrEffect = srcUser:GetProperty("AttrEffect")
29 local bits = CommonFun.getBits(AttrEffect)
30 if bits[CommonFun.AttrEffect.BuffPriorArrow] == 1 then
31 srcAtkElement = srcUser:GetProperty("AtkAttr")
32 elseif srcUser.arrow_server ~= nil then
33 if srcUser.arrow_server == 0 or srcUser.arrow_server == 12508 or srcUser.arrow_server == 12509 then
34 srcAtkElement = srcUser:GetProperty("AtkAttr")
35 else
36 srcAtkElement = CommonFun.GetAtkAttrByArrow(srcUser.arrow_server)
37 end
38 elseif srcUser:GetArrowID() == 0 or srcUser:GetArrowID() == 12508 or srcUser:GetArrowID() == 12509 then
39 srcAtkElement = srcUser:GetProperty("AtkAttr")
40 else
41 local arrowid = srcUser:GetArrowID()
42 local hasNum = srcUser:GetPackageItemNum(arrowid)
43 if arrowNum <= hasNum then
44 srcAtkElement = CommonFun.GetAtkAttrByArrow(arrowid)
45 else
46 srcAtkElement = srcUser:GetProperty("AtkAttr")
47 end
48 end
49 end
50 local skillID, skillLevel = CommonFun.UnmergeSkillID(params.skillIDAndLevel)
51 if skillID == 2300_STELLAR_HUNTER:STORM_GUST or skillID == 2323_ACOLYTE:ESTUN or skillID == 2343_ACOLYTE:ESMA or skillID == 2344_ACOLYTE:ESKA then
52 if srcUser:HasBuffID(135001_WIND_:MAX_STACK_0) then
53 srcAtkElement = 1
54 elseif srcUser:HasBuffID(135002_EARTH_:MAX_STACK_0) then
55 srcAtkElement = 2
56 elseif srcUser:HasBuffID(135003_WATER_:MAX_STACK_0) then
57 srcAtkElement = 3
58 elseif srcUser:HasBuffID(135004_FIRE_:MAX_STACK_0) then
59 srcAtkElement = 4
60 elseif srcUser:HasBuffID(135005_HOLY_:MAX_STACK_0) then
61 srcAtkElement = 6
62 elseif srcUser:HasBuffID(135006_DARK_:MAX_STACK_0) then
63 srcAtkElement = 7
64 elseif srcUser:HasBuffID(135007_GHOST_:MAX_STACK_0) then
65 srcAtkElement = 8
66 end
67 end
68 if srcUser:HasBuffID(138940_FOREST_ELEMENT_WIND_:MAX_STACK_0) then
69 srcAtkElement = 1
70 elseif srcUser:HasBuffID(138941_FOREST_ELEMENT_EARTH_:MAX_STACK_0) then
71 srcAtkElement = 2
72 elseif srcUser:HasBuffID(138942_FOREST_ELEMENT_WATER_:MAX_STACK_0) then
73 srcAtkElement = 3
74 elseif srcUser:HasBuffID(138943_FOREST_ELEMENT_FIRE_:MAX_STACK_0) then
75 srcAtkElement = 4
76 elseif srcUser:HasBuffID(138944_FOREST_ELEMENT_HOLY_:MAX_STACK_0) then
77 srcAtkElement = 6
78 end
79 if targetUser:HasBuffID(138380_ELECTRIC_ENERGY_SHIELD_:MAX_STACK_0) and targetUser:HasBuffID(138390_ELEMENTAL_SENSE_:MAX_STACK_0) then
80 srcAtkElement = 1
81 end
82 if srcUser:GetNpcID() == 580700_VISION_OF_THE_UNKNOWN or srcUser:GetNpcID() == 580701_PERFECT_ILLUSION_OF_THE_NAMELESS or srcUser:GetNpcID() == 580101_NIGHT_SHADOW or srcUser:GetNpcID() == 580102_NIGHT_SHADOW or srcUser:GetNpcID() == 580103_NIGHT_SHADOW or srcUser:GetNpcID() == 580104_NIGHT_SHADOW or srcUser:GetNpcID() == 580105_NIGHT_SHADOW then
83 local Master = srcUser:GetMasterUser()
84 if Master ~= nil then
85 srcAtkElement = Master:GetProperty("AtkAttr")
86 end
87 end
88 return srcAtkElement
89endFormula Graph
Connected Archive Data
See which cards, equipment, headwears, buffs, and other archived records connect to this formula.
Loading graph filters
CommonFun.GetUserAtkAttr
commonfun-getuseratkattr
Nodes
0
Edges
0
Related Nodes
Select at least one node type.
