
Absolute Penetration
Aims at an enemy, charges briefly, and deals neutral Phy. DMG equal to ([Crack Shot] x130% +Phy. ATK x opponent's Phy. DEF/500) to the target when the charge is completed. The damage is increased by 50% for each additional second of charge. Move or click again to stop the charge and shoot directly. It can be charged for up to 5 sec and ignores Phy. DEF when fully charged. Consumes 1 bullet and requires a Rifle Gun to use. The skill ignores the effect of [Light Shield], [Auto Guard], [Sword Parry], and [Kyrie Eleison].
Skill Levels
• Aims at an enemy, charges briefly, and deals neutral Phy. DMG equal to ([Crack Shot] x127% +Phy. ATK x opponent's Phy. DEF/500) to the target when the charge is completed. The damage is increased by 50% for each additional second of charge. Move or click again to stop the charge and shoot directly. It can be charged for up to 5 sec and ignores Phy. DEF when fully charged. Consumes 1 bullet and requires a Rifle Gun to use. The skill ignores the effect of [Light Shield], [Auto Guard], [Sword Parry], and [Kyrie Eleison].
• Aims at an enemy, charges briefly, and deals neutral Phy. DMG equal to ([Crack Shot] x124% +Phy. ATK x opponent's Phy. DEF/500) to the target when the charge is completed. The damage is increased by 50% for each additional second of charge. Move or click again to stop the charge and shoot directly. It can be charged for up to 5 sec and ignores Phy. DEF when fully charged. Consumes 1 bullet and requires a Rifle Gun to use. The skill ignores the effect of [Light Shield], [Auto Guard], [Sword Parry], and [Kyrie Eleison].
• Aims at an enemy, charges briefly, and deals neutral Phy. DMG equal to ([Crack Shot] x121% +Phy. ATK x opponent's Phy. DEF/500) to the target when the charge is completed. The damage is increased by 50% for each additional second of charge. Move or click again to stop the charge and shoot directly. It can be charged for up to 5 sec and ignores Phy. DEF when fully charged. Consumes 1 bullet and requires a Rifle Gun to use. The skill ignores the effect of [Light Shield], [Auto Guard], [Sword Parry], and [Kyrie Eleison].
• Aims at an enemy, charges briefly, and deals neutral Phy. DMG equal to ([Crack Shot] x118% +Phy. ATK x opponent's Phy. DEF/500) to the target when the charge is completed. The damage is increased by 50% for each additional second of charge. Move or click again to stop the charge and shoot directly. It can be charged for up to 5 sec and ignores Phy. DEF when fully charged. Consumes 1 bullet and requires a Rifle Gun to use. The skill ignores the effect of [Light Shield], [Auto Guard], [Sword Parry], and [Kyrie Eleison].
• Aims at an enemy, charges briefly, and deals neutral Phy. DMG equal to ([Crack Shot] x115% +Phy. ATK x opponent's Phy. DEF/500) to the target when the charge is completed. The damage is increased by 50% for each additional second of charge. Move or click again to stop the charge and shoot directly. It can be charged for up to 5 sec and ignores Phy. DEF when fully charged. Consumes 1 bullet and requires a Rifle Gun to use. The skill ignores the effect of [Light Shield], [Auto Guard], [Sword Parry], and [Kyrie Eleison].
• Aims at an enemy, charges briefly, and deals neutral Phy. DMG equal to ([Crack Shot] x112% +Phy. ATK x opponent's Phy. DEF/500) to the target when the charge is completed. The damage is increased by 50% for each additional second of charge. Move or click again to stop the charge and shoot directly. It can be charged for up to 5 sec and ignores Phy. DEF when fully charged. Consumes 1 bullet and requires a Rifle Gun to use. The skill ignores the effect of [Light Shield], [Auto Guard], [Sword Parry], and [Kyrie Eleison].
• Aims at an enemy, charges briefly, and deals neutral Phy. DMG equal to ([Crack Shot] x109% +Phy. ATK x opponent's Phy. DEF/500) to the target when the charge is completed. The damage is increased by 50% for each additional second of charge. Move or click again to stop the charge and shoot directly. It can be charged for up to 5 sec and ignores Phy. DEF when fully charged. Consumes 1 bullet and requires a Rifle Gun to use. The skill ignores the effect of [Light Shield], [Auto Guard], [Sword Parry], and [Kyrie Eleison].
• Aims at an enemy, charges briefly, and deals neutral Phy. DMG equal to ([Crack Shot] x106% +Phy. ATK x opponent's Phy. DEF/500) to the target when the charge is completed. The damage is increased by 50% for each additional second of charge. Move or click again to stop the charge and shoot directly. It can be charged for up to 5 sec and ignores Phy. DEF when fully charged. Consumes 1 bullet and requires a Rifle Gun to use. The skill ignores the effect of [Light Shield], [Auto Guard], [Sword Parry], and [Kyrie Eleison].
• Aims at an enemy, charges briefly, and deals neutral Phy. DMG equal to ([Crack Shot] x103% +Phy. ATK x opponent's Phy. DEF/500) to the target when the charge is completed. The damage is increased by 50% for each additional second of charge. Move or click again to stop the charge and shoot directly. It can be charged for up to 5 sec and ignores Phy. DEF when fully charged. Consumes 1 bullet and requires a Rifle Gun to use. The skill ignores the effect of [Light Shield], [Auto Guard], [Sword Parry], and [Kyrie Eleison].
Formula
1function CommonFun.calcDamage_17303(srcUser, targetUser, params, damageParam, logger)
2 local Str = srcUser:GetProperty("Str")
3 local Dex = srcUser:GetProperty("Dex")
4 local Luk = srcUser:GetProperty("Luk")
5 local Luk2 = targetUser:GetProperty("Luk")
6 local Atk = srcUser:GetProperty("Atk")
7 local AtkPer = srcUser:GetProperty("AtkPer")
8 local DamIncrease = srcUser:GetProperty("DamIncrease")
9 local IgnoreDef = 0
10 local IgnoreDef1 = srcUser:GetProperty("IgnoreDef")
11 local IgnoreDef2 = srcUser:GetProperty("IgnoreEquipDef")
12 if targetUser.boss or targetUser.mini then
13 IgnoreDef = IgnoreDef1
14 else
15 IgnoreDef = IgnoreDef1 + IgnoreDef2
16 end
17 if 1 <= IgnoreDef then
18 IgnoreDef = 1
19 end
20 local Refine = srcUser:GetProperty("Refine")
21 local Def2 = targetUser:GetProperty("Def")
22 local DefPer2 = targetUser:GetProperty("DefPer")
23 local Vit2 = targetUser:GetProperty("Vit")
24 local VitPer2 = targetUser:GetProperty("VitPer")
25 local DamReduc2 = CommonFun.calcDamReDuc(srcUser, targetUser)
26 local RefineDamReduc = CommonFun.calcRefineDamReduc(srcUser, targetUser)
27 local AttrEffect2 = srcUser:GetProperty("AttrEffect")
28 local bits2 = CommonFun.getBits(AttrEffect2)
29 local raceparam = CommonFun.CalcRaceParam(srcUser, targetUser, params, damageParam, logger)
30 local bodyparam = CommonFun.CalcBodyParam(srcUser, targetUser, params, damageParam, logger)
31 local elementparam = CommonFun.CalcElementParam(srcUser, targetUser, params, damageParam, logger)
32 local bossparam = CommonFun.CalcBossParam(srcUser, targetUser, params, damageParam, logger)
33 local raceparam2 = CommonFun.CalcRaceParam2(srcUser, targetUser, params, damageParam, logger)
34 local bodyparam2 = CommonFun.CalcBodyParam2(srcUser, targetUser, params, damageParam, logger)
35 local elementparam2 = CommonFun.CalcElementParam2(srcUser, targetUser, params, damageParam, logger)
36 local bossparam2 = CommonFun.CalcBossParam2(srcUser, targetUser, params, damageParam, logger)
37 local BaseAtk = Dex * 2 + math.floor(Dex * Dex / 100) + math.floor(Str / 5) + math.floor(Luk / 5)
38 local skilllv = srcUser:GetLernedSkillLevel(2206_STELLAR_HUNTER:MAGICAL_BULLET)
39 local MAtk = srcUser:GetProperty("MAtk")
40 local MAtkPer = srcUser:GetProperty("MAtkPer")
41 local Magic = 0
42 local Num4 = srcUser:GetRunePoint(173015_AESIR_THE_M_ATK_BONUS_OF_MAGICAL_BULLET_IS_INCREASED_BY_3)
43 if 0 < skilllv then
44 Magic = MAtk * (1 + MAtkPer) * (math.min(skilllv, 10) * 0.05 + Num4 * 0.03)
45 end
46 local AtkFinal = ((Atk - BaseAtk) * (1 + AtkPer) * CommonFun.ShapeCorrection(srcUser, targetUser) * bodyparam * elementparam * elementparam2 + BaseAtk + Magic) * raceparam * bossparam * bossparam2
47 local DefReduc = CommonFun.CalcDef(srcUser, targetUser)
48 local LongRangeDamReduc2 = targetUser:GetProperty("LongRangeDamReduc")
49 local damChangePer = damageParam.damChangePer
50 local Rune = 1
51 local Num1 = srcUser:GetRunePoint(173018_AESIR_POINT_SHOOTING_DMG_6)
52 local Num2 = srcUser:GetRunePoint(173035_AESIR_CRACK_SHOT_DMG_5)
53 local targetid = targetUser:GetGuid()
54 local distance = srcUser:GetDistance(targetid)
55 local dis_ratio = 1
56 local Num3 = srcUser:GetRunePoint(173031_AESIR_WHEN_EQUIPPED_WITH_A_RIFLE_GUN_SHOOTING_SKILLS_DEAL_INCREASED_DMG_ACCORDING_TO_THE_DISTANCE_1_DMG_PER_METER)
57 if 0 < Num3 and 1 <= distance then
58 dis_ratio = 1 + Num3 * 0.01 * math.floor(distance)
59 end
60 local Rifle = 1
61 local RefineLv = srcUser:GetEquipedRefineLv(7_WEAPON)
62 local skillID, skillLevel = CommonFun.UnmergeSkillID(params.skillIDAndLevel)
63 if skillID == 2243_STELLAR_HUNTER:ABSOLUTE_PENETRATION then
64 local skilllv1 = srcUser:GetLernedSkillLevel(2227_STELLAR_HUNTER:CRACK_SHOT)
65 local skilllv2 = srcUser:GetLernedSkillLevel(2243_STELLAR_HUNTER:ABSOLUTE_PENETRATION)
66 local DefParam = Def2 * (1 + DefPer2) / 500
67 local ChantTime = srcUser:GetCurChantTime()
68 local skilllv_luk = srcUser:GetLernedSkillLevel(2264_STELLAR_HUNTER:THOROUGH_THROUGH_VITAL_PART_STRIKE)
69 AtkFinal = AtkFinal + skilllv_luk * Luk * 3
70 if srcUser:HasBuffID(45040_TERMINATOR_SNIPER_RIFLE_:MAX_STACK_0) then
71 Rifle = 1 + RefineLv * 0.01
72 end
73 if srcUser:HasBuffID(45050_TERMINATOR_SNIPER_RIFLE_AFTER_PERFUSION_:MAX_STACK_0) then
74 Rifle = 1 + RefineLv * 0.02
75 end
76 if srcUser:HasBuffID(90004674_ASSAULT_TERMINATOR_1_TIER_5_:MAX_STACK_0) then
77 Rifle = Rifle + 0.15
78 end
79 local mapid, maptype = srcUser:GetMapInfo()
80 if (maptype == PVP_MAPS) and 3000 <= ChantTime then
81 local skilllv3 = srcUser:GetLernedSkillLevel(2263_STELLAR_HUNTER:THOROUGH_THROUGH_HEAD_SHOT)
82 local KillRate = (Luk - Luk2) * skilllv3 * 0.01
83 if srcUser:HasBuffID(21730040_HEAD_SHOT_CHANCE_IN_THE_HAWK_EYES_STATE_:MAX_STACK_0) and srcUser:HasBuffID(133769_HAWK_EYES_MODE_:MAX_STACK_0) then
84 KillRate = KillRate + 5
85 end
86 if srcUser:HasBuffID(45264_PASSIVE_HEAD_SHOT_PROBABILITY_:MAX_STACK_0) or srcUser:HasBuffID(45274_PASSIVE_HEAD_SHOT_PROBABILITY_:MAX_STACK_0) or srcUser:HasBuffID(47364_PASSIVE_HEAD_SHOT_PROBABILITY_:MAX_STACK_0) then
87 KillRate = KillRate + 7
88 end
89 if srcUser:HasBuffID(45265_CAN_T_BE_ATTACKED_:MAX_STACK_0) or srcUser:HasBuffID(45275_CAN_T_BE_ATTACKED_:MAX_STACK_0) then
90 KillRate = KillRate * 1.77
91 end
92 end
93 Rune = 1 + Num2 * 0.05
94 damChangePer = ((skilllv1 * 0.6 + 12) * (1 + skilllv2 * 0.03) * Rune * Rifle + DefParam) * (1 + math.floor(ChantTime / 1000) * 0.5)
95 Rune = 1
96 Rifle = 1
97 if 4900 <= ChantTime then
98 DefReduc = 1
99 end
100 end
101 if skillID == 2205_STELLAR_HUNTER:POINT_SHOOTING then
102 local GemValue = srcUser:GetGemValue(173151_POINT_SHOOTING_DMG_PERCENTAGE)
103 local GemDam = 1 + GemValue / 100000
104 Rune = (1 + Num1 * 0.06) * GemDam
105 end
106 if skillID == 2227_STELLAR_HUNTER:CRACK_SHOT then
107 Rune = 1 + Num2 * 0.05
108 if srcUser:HasBuffID(45040_TERMINATOR_SNIPER_RIFLE_:MAX_STACK_0) then
109 Rifle = 1 + RefineLv * 0.01
110 end
111 if srcUser:HasBuffID(45050_TERMINATOR_SNIPER_RIFLE_AFTER_PERFUSION_:MAX_STACK_0) then
112 Rifle = 1 + RefineLv * 0.02
113 end
114 if srcUser:HasBuffID(90004674_ASSAULT_TERMINATOR_1_TIER_5_:MAX_STACK_0) then
115 Rifle = Rifle + 0.15
116 end
117 end
118 local A = ((AtkFinal * DefReduc * (1 - DamReduc2) + Refine) * damChangePer * (1 - RefineDamReduc) * (1 + DamIncrease - LongRangeDamReduc2) - Vit2 * (1 + VitPer2)) * Rune * dis_ratio * Rifle
119 if A <= 1 then
120 return 1
121 end
122 return A
123end