Formula
CommonFun.ModifyMagicCriDam
formula.lua
1function CommonFun.ModifyMagicCriDam(srcUser, targetUser, params, skillParams, damage)
2 local skilllv_1 = skillParams.id
3 if 0 < damage and (CommonFun.RollType.Magic == skillParams.RollType and srcUser:IsAttackSkill(params.skillIDAndLevel) == false or math.floor(skilllv_1 / 1000) == 4787) and (srcUser:HasBuffID(35600_WHEEL_OF_FORTUNE_FOUR_LEAF_CLOVER_1_:MAX_STACK_0) or srcUser:HasBuffID(43230_EXORCISM_SACHET_:MAX_STACK_0) or srcUser:HasBuffID(55170_SHELL_CHEPET_CARD_:MAX_STACK_0) or srcUser:HasBuffID(66730_5672_:MAX_STACK_0) or srcUser:HasBuffID(55890_SHELL_CHEPET_CARD_:MAX_STACK_0) or srcUser:HasBuffID(70450_9586_:MAX_STACK_0) or srcUser:HasBuffID(56700_11924_:MAX_STACK_0) or srcUser:HasBuffID(56730_11927_:MAX_STACK_0) or srcUser:HasBuffID(55710_10355_:MAX_STACK_0) or srcUser:HasBuffID(73550_1_:MAX_STACK_0) or srcUser:HasBuffID(57700_WHISPER_LEGION_CARD_:MAX_STACK_0) or srcUser:HasBuffID(74870_23_:MAX_STACK_0) or srcUser:HasBuffID(57170_CAMORRA_CARD_:MAX_STACK_0) or srcUser:HasBuffID(23200_EXORCISM_SACHET_INFUSE_:MAX_STACK_0) or srcUser:HasBuffLayer(23200, EBUFFERLAYER_SHADOW) or srcUser:HasBuffID(59160_ALIEN_PRIEST_MAGALETA_CARD_:MAX_STACK_0) or srcUser:HasBuffID(140800_THE_HESTIA_KNIFE_:MAX_STACK_0) or srcUser:HasBuffID(59510_23455_DUNGEON_COLLABORATION_BELLE_CARD_:MAX_STACK_0) or srcUser:HasBuffID(700850_3033965_PUSS_IN_BOOTS_RED_:MAX_STACK_0)) then
4 local Luk = srcUser:GetProperty("Luk")
5 local CriDamNum = 1.5 + math.floor(Luk / 6) / 100
6 if srcUser:HasBuffID(81002780_13328_:MAX_STACK_0) then
7 CriDamNum = CriDamNum + math.floor(Luk / 6) / 1000
8 end
9 if srcUser:HasBuffID(140860_UNYIELDING_WILL_LUK_:MAX_STACK_0) then
10 local skilllv = srcUser:GetLernedSkillLevel(4784_PHANTOM_DANCER:UNYIELDING_WILL)
11 CriDamNum = CriDamNum + skilllv * 0.1
12 end
13 local CriDamPer = srcUser:GetProperty("CriDamPer")
14 local SkillDamPer = srcUser:GetProperty("SkillDamPer")
15 if srcUser:HasBuffID(140920_YEARNING_OR_LONGING_:MAX_STACK_0) then
16 local skilllv = srcUser:GetLernedSkillLevel(4792_PHANTOM_DANCER:BLADE_RESONANCE)
17 local zhuanwu = 1
18 CriDamNum = CriDamNum + skilllv * CriDamPer * zhuanwu / 20
19 end
20 if srcUser:HasBuffID(81005110_23455_DUNGEON_COLLABORATION_BELLE_CARD_:MAX_STACK_0) then
21 CriDamNum = CriDamNum + math.floor(CriDamPer * 100 / 20) / 100
22 end
23 local Ring1 = srcUser:GetEquipedID(5_ACCESSORY)
24 local RefineLv1 = srcUser:GetEquipedRefineLv(5_ACCESSORY)
25 local Ring2 = srcUser:GetEquipedID(6_ACCESSORY)
26 local RefineLv2 = srcUser:GetEquipedRefineLv(6_ACCESSORY)
27 local RefineLv7 = srcUser:GetEquipedRefineLv(7_WEAPON)
28 local CriNum1 = 0
29 if srcUser:HasBuffID(35600_WHEEL_OF_FORTUNE_FOUR_LEAF_CLOVER_1_:MAX_STACK_0) then
30 CriNum1 = 20
31 end
32 local a = 0
33 local b = 0
34 if (Ring1 == 44076_EXORCISM_SACHET_EXORCISM_SACHET_EXORCISM_SACHET or Ring1 == 144076_EXORCISM_SACHET_1_EXORCISM_SACHET_1_EXORCISM_SACHET_1) and RefineLv1 < 8 then
35 a = 3
36 elseif (Ring1 == 44076_EXORCISM_SACHET_EXORCISM_SACHET_EXORCISM_SACHET or Ring1 == 144076_EXORCISM_SACHET_1_EXORCISM_SACHET_1_EXORCISM_SACHET_1) and 8 <= RefineLv1 and RefineLv1 < 12 then
37 a = 6
38 elseif (Ring1 == 44076_EXORCISM_SACHET_EXORCISM_SACHET_EXORCISM_SACHET or Ring1 == 144076_EXORCISM_SACHET_1_EXORCISM_SACHET_1_EXORCISM_SACHET_1) and 12 <= RefineLv1 then
39 a = 10
40 end
41 if (Ring2 == 44076_EXORCISM_SACHET_EXORCISM_SACHET_EXORCISM_SACHET or Ring2 == 144076_EXORCISM_SACHET_1_EXORCISM_SACHET_1_EXORCISM_SACHET_1) and RefineLv2 < 8 then
42 b = 3
43 elseif (Ring2 == 44076_EXORCISM_SACHET_EXORCISM_SACHET_EXORCISM_SACHET or Ring2 == 144076_EXORCISM_SACHET_1_EXORCISM_SACHET_1_EXORCISM_SACHET_1) and 8 <= RefineLv2 and RefineLv2 < 12 then
44 b = 6
45 elseif (Ring2 == 44076_EXORCISM_SACHET_EXORCISM_SACHET_EXORCISM_SACHET or Ring2 == 144076_EXORCISM_SACHET_1_EXORCISM_SACHET_1_EXORCISM_SACHET_1) and 12 <= RefineLv2 then
46 b = 10
47 end
48 local aa = 0
49 local bb = 0
50 local equipRing5 = srcUser:getEquip(CommonFun.PackType.EPACKTYPE_EQUIP, CommonFun.EquipPos.EEQUIPPOS_ACCESSORY1)
51 if equipRing5.id == 44166 or equipRing5.id == 144166 then
52 if 0 <= equipRing5.refinelv and 8 > equipRing5.refinelv then
53 aa = 3
54 elseif 8 <= equipRing5.refinelv and 12 > equipRing5.refinelv then
55 aa = 6
56 elseif 12 <= equipRing5.refinelv then
57 aa = 10
58 end
59 end
60 local equipRingSD5 = srcUser:getEquip(CommonFun.PackType.EPACKTYPE_SHADOWEQUIP, CommonFun.EquipPos.EEQUIPPOS_ACCESSORY1)
61 if equipRingSD5.id == 44166 or equipRingSD5.id == 144166 then
62 if 0 <= equipRingSD5.refinelv and 8 > equipRingSD5.refinelv then
63 aa = 3 * equipRingSD5.quench_per / 100
64 elseif 8 <= equipRingSD5.refinelv and 12 > equipRingSD5.refinelv then
65 aa = 6 * equipRingSD5.quench_per / 100
66 elseif 12 <= equipRingSD5.refinelv then
67 aa = 10 * equipRingSD5.quench_per / 100
68 end
69 end
70 local equipRing6 = srcUser:getEquip(CommonFun.PackType.EPACKTYPE_EQUIP, CommonFun.EquipPos.EEQUIPPOS_ACCESSORY2)
71 if equipRing6.id == 44166 or equipRing6.id == 144166 then
72 if 0 <= equipRing6.refinelv and 8 > equipRing6.refinelv then
73 bb = 3
74 elseif 8 <= equipRing6.refinelv and 12 > equipRing6.refinelv then
75 bb = 6
76 elseif 12 <= equipRing6.refinelv then
77 bb = 10
78 end
79 end
80 local equipRingSD6 = srcUser:getEquip(CommonFun.PackType.EPACKTYPE_SHADOWEQUIP, CommonFun.EquipPos.EEQUIPPOS_ACCESSORY2)
81 if equipRingSD6.id == 44166 or equipRingSD6.id == 144166 then
82 if 0 <= equipRingSD6.refinelv and 8 > equipRingSD6.refinelv then
83 bb = 3 * equipRingSD6.quench_per / 100
84 elseif 8 <= equipRingSD6.refinelv and 12 > equipRingSD6.refinelv then
85 bb = 6 * equipRingSD6.quench_per / 100
86 elseif 12 <= equipRingSD6.refinelv then
87 bb = 10 * equipRingSD6.quench_per / 100
88 end
89 end
90 local CriNum2 = a + b + aa + bb
91 local CardBK = srcUser:GetEquipCardNum(7, 20189_SHELL_CHEPET_CARD)
92 local CardBK1 = srcUser:GetEquipCardNum(7, 24113_SHELL_CHEPET_STAR_CARD)
93 local CardKL = srcUser:GetEquipCardNum(7, 23256)
94 local CardConjuror = srcUser:GetEquipCardNum(2, 23252_SORCERER_STAR_CARD)
95 local CardCamorra = srcUser:GetEquipCardNum(7, 23334_CAMORRA_CARD)
96 local CardHighPriest = srcUser:GetEquipCardNum(2, 23433_ALIEN_PRIEST_MAGALETA_CARD)
97 local CardBE = srcUser:GetEquipCardNum(8, 23455_BELL_CRANEL_CARD)
98 local CriNum3 = CardBK * 15 + CardBK1 * 17.5 + CardKL * 10 + CardConjuror * 10 + CardCamorra * (5 + RefineLv7) + CardHighPriest * 15 + CardBE * 10
99 local CardNumH1 = srcUser:GetEquipCardNum(5, 23064_WITCH_OF_CALAMITY_CARD)
100 local CardNumH2 = srcUser:GetEquipCardNum(6, 23064_WITCH_OF_CALAMITY_CARD)
101 local CardNumB1 = srcUser:GetEquipCardNum(5, 23324)
102 local CardNumB2 = srcUser:GetEquipCardNum(6, 23324)
103 local CriNum5 = CardNumH1 * 10 + CardNumH2 * 10 + CardNumB1 * 8 + CardNumB2 * 8
104 local CriNum4 = 0
105 local RefineLv3 = srcUser:GetEquipedRefineLv(11)
106 if srcUser:HasBuffID(66730_5672_:MAX_STACK_0) and 6 <= RefineLv3 then
107 CriNum4 = 20
108 elseif srcUser:HasBuffID(66730_5672_:MAX_STACK_0) and RefineLv3 < 6 then
109 CriNum4 = 10
110 end
111 local CriNum6 = 0
112 local RefineLv10 = srcUser:GetEquipedRefineLv(10)
113 if srcUser:HasBuffID(70450_9586_:MAX_STACK_0) then
114 CriNum6 = 5 + RefineLv10 * 1
115 end
116 local CriNum7 = 0
117 local RefineLv8 = srcUser:GetEquipedRefineLv(8)
118 if srcUser:HasBuffID(73550_1_:MAX_STACK_0) then
119 CriNum7 = 10 + RefineLv8 * 1
120 end
121 local CriNum8 = 0
122 if srcUser:HasBuffID(74870_23_:MAX_STACK_0) then
123 CriNum8 = 10
124 end
125 local RefineLv12 = srcUser:GetEquipedRefineLv(12)
126 if srcUser:HasBuffID(700850_3033965_PUSS_IN_BOOTS_RED_:MAX_STACK_0) then
127 CriNum8 = CriNum8 + 10
128 end
129 if srcUser:HasBuffID(700850_3033965_PUSS_IN_BOOTS_RED_:MAX_STACK_0) and 6 <= RefineLv12 then
130 CriNum8 = CriNum8 + 5
131 end
132 local CriNum9 = 0
133 if srcUser:HasBuffID(140800_THE_HESTIA_KNIFE_:MAX_STACK_0) then
134 local skilllv_be = srcUser:GetLernedSkillLevel(4781_PHANTOM_DANCER:THE_HESTIA_KNIFE)
135 local skilllv_mxz = srcUser:GetLernedSkillLevel(4790_PHANTOM_DANCER:ADVENTURER)
136 local ManualLevel = srcUser:GetManualLevel()
137 local Manual = 1
138 if 1 <= skilllv_mxz then
139 Manual = 1 + math.min(math.floor(ManualLevel / 10), 5) * 0.02 * skilllv_mxz
140 end
141 CriNum9 = Luk * 0.01 * skilllv_be * Manual
142 if srcUser:HasBuffID(140815_LUK_:MAX_STACK_0) and 4 <= skilllv_be then
143 CriNum9 = CriNum9 * 2
144 end
145 end
146 local CriNum = CriNum1 + CriNum2 + CriNum3 + CriNum4 + CriNum5 + CriNum6 + CriNum7 + CriNum8 + CriNum9
147 if CommonFun.IsInRate(CriNum, srcUser:GetRandom()) then
148 damage = damage * CriDamNum
149 local mapid, maptype = srcUser:GetMapInfo()
150 if 2147483647 <= damage and (mapid == PONAPE_SECRET_REALM or mapid == WHITESTAR_AIRSHIP or mapid == PALACE_OF_GHOST_-_EPIC_SPIRIT or mapid == QUAINT_COTTAGE or mapid == ELEGANT_HOUSE or mapid == GARDEN or mapid == TOWER_OF_EVILNESS_V or mapid == TOWER_OF_HEAT_V or mapid == TOWER_OF_WORLDLINE_V or mapid == TOWER_OF_DOOM_V or mapid == DARK_FINALE_-_EPIC_SPIRIT or mapid == SPACE_OF_TIME_-_EPIC_SPIRIT or mapid == TOWER_OF_EVILNESS_IV or mapid == TOWER_OF_HEAT_IV or mapid == TOWER_OF_WORLDLINE_IV or mapid == TOWER_OF_DOOM_IV or mapid == ABYSSAL_LAKE or srcUser:InDamReduceRaid() == true and srcUser:IsUserCamp() == true) then
151 return damage, CommonFun.DamageType.Crit
152 else
153 return math.min(damage, 2147483647), CommonFun.DamageType.Crit
154 end
155 end
156 end
157endFormula Graph
Connected Archive Data
See which cards, equipment, headwears, buffs, and other archived records connect to this formula.
Loading graph filters
CommonFun.ModifyMagicCriDam
commonfun-modifymagiccridam
Nodes
0
Edges
0
Related Nodes
Select at least one node type.
