Formula
CommonFun.GetElementRate
formula.lua
1function CommonFun.GetElementRate(srcUser, srcAtkElement, targetUser, targetDefElement, params, damageParam)
2 if srcAtkElement < 1 or 10 < srcAtkElement then
3 return 0
4 end
5 if targetDefElement < 1 or 10 < targetDefElement then
6 return 0
7 end
8 local ElementRate = GameConfig.ElementRestrain[srcAtkElement][targetDefElement]
9 if params ~= nil and damageParam ~= nil then
10 local skillID, skillLevel = CommonFun.UnmergeSkillID(params.skillIDAndLevel)
11 if (skillID == 1700_BLADE_SOUL:TWIN_FLAME_SLASH or skillID == 1725_ARCHER:SUPER_SPRING_TWIN_FLAME_SLASH) and (targetDefElement == 3 or targetDefElement == 4) then
12 local skilllv = srcUser:GetLernedSkillLevel(1715_ARCHER:WHITE_BLAZE_S_PROTECTION)
13 ElementRate = 0.75 + skilllv * 0.05
14 end
15 if (skillID == 2705_ARCHBISHOP:INVASION or skillID == 2706_ARCHBISHOP:ABYSSAL_SPEAR) and targetDefElement == 2 then
16 ElementRate = 1
17 end
18 if srcAtkElement == 10 and targetUser:GetBuffActive(137004) then
19 ElementRate = math.max(1, ElementRate)
20 end
21 if srcAtkElement == 1 and srcUser:HasBuffID(141230_WIND_MONSTER_MASTERY_:MAX_STACK_0) and (targetDefElement == 2 or targetDefElement == 1) then
22 ElementRate = 1
23 end
24 end
25 local srcAtkLevel = CommonFun.GetUserAtkLevel(srcUser, srcAtkElement, params, damageParam)
26 local tarDefLevel = CommonFun.GetUserDefLevel(targetUser, targetDefElement)
27 if srcUser:HasBuffID(22000991_WIND_FIELD_:MAX_STACK_0) and srcAtkElement == 1 or srcUser:HasBuffID(22000992_TERRITORY_:MAX_STACK_0) and srcAtkElement == 2 or srcUser:HasBuffID(22000993_WATER_SECTOR_:MAX_STACK_0) and srcAtkElement == 3 or srcUser:HasBuffID(22000994_FIRE_DOMAIN_:MAX_STACK_0) and srcAtkElement == 4 or srcUser:HasBuffID(22000996_SPACE_FIELD_:MAX_STACK_0) and srcAtkElement == 5 or srcUser:HasBuffID(22000995_TIME_FIELD_:MAX_STACK_0) and srcAtkElement == 8 then
28 ElementRate = ElementRate + 0.15
29 end
30 if srcUser:HasBuffID(116832_WIND_ELEMENT_:MAX_STACK_0) and srcAtkElement == 1 or srcUser:HasBuffID(116833_EARTH_ELEMENT_:MAX_STACK_0) and srcAtkElement == 2 or srcUser:HasBuffID(116831_AQUA_ELEMENTAL_:MAX_STACK_0) and srcAtkElement == 3 or srcUser:HasBuffID(116830_FIRE_ELEMENT_:MAX_STACK_0) and srcAtkElement == 4 or srcUser:HasBuffID(116834_THOUGHT_ELEMENT_:MAX_STACK_0) and srcAtkElement == 8 then
31 local skilllv = srcUser:GetLernedSkillLevel(1163_THIEF:ELEMENTAL_ENHANCEMENT)
32 ElementRate = ElementRate + 0.02 * skilllv
33 end
34 if srcUser:HasBuffID(130503_PHANTOM_:MAX_STACK_0) and srcAtkElement == 10 and targetUser:GetNpcID() ~= 0 then
35 local skilllv_sh = srcUser:GetLernedSkillLevel(3908_DIVINE_AVENGER:SOUL_EROSION)
36 ElementRate = ElementRate + 0.04 * skilllv_sh
37 end
38 if srcUser:HasBuffID(138320_HEAVENLY_POWER_:MAX_STACK_5) and srcAtkElement == 1 then
39 local leishen = srcUser:GetBuffLayer(138320_HEAVENLY_POWER_:MAX_STACK_5)
40 local skilllv = srcUser:GetLernedSkillLevel(2792_SAINT:LIGHTNING_POWER)
41 ElementRate = ElementRate + skilllv * 0.02 * leishen
42 end
43 if srcUser:HasBuffID(141800_ATTUNEMENT_OF_FATE_:MAX_STACK_0) and srcAtkElement == 5 then
44 local skilllv = srcUser:GetLernedSkillLevel(4852_PHANTOM_DANCER:UNDERCURRENTS_SURGE)
45 ElementRate = ElementRate + skilllv * 0.03
46 end
47 if 3 <= tarDefLevel then
48 ElementRate = ElementRate + (srcAtkLevel - 1) * 0.25 - 0.25 - (tarDefLevel - 2) * 0.125
49 elseif 2 <= tarDefLevel and tarDefLevel < 3 then
50 ElementRate = ElementRate + (srcAtkLevel - 1) * 0.25 - 0.25
51 else
52 ElementRate = ElementRate + (srcAtkLevel - 1) * 0.25
53 end
54 if ElementRate < 0 then
55 ElementRate = 0
56 end
57 return ElementRate
58endFormula Graph
Connected Archive Data
See which cards, equipment, headwears, buffs, and other archived records connect to this formula.
Loading graph filters
CommonFun.GetElementRate
commonfun-getelementrate
Nodes
0
Edges
0
Related Nodes
Select at least one node type.
