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
89end
Formula 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.