function x_RoleHolyCalDmg(MapID, InstanceID, RoleID, TargetID, Target_ESAT_Demage, Target_ESAT_HolyDef, Target_ESAT_Crit, Target_ESAT_CritRate, Target_ESAT_ExDmg, Target_ESAT_AttackTec, Target_ESAT_NeglectToughness, Target_ESAT_LingNeng, Src_ESAT_Demage, Src_ESAT_HolyDef, Src_ESAT_Crit, Src_ESAT_CritRate, Src_ESAT_ExDmg, Src_ESAT_AttackTec, Src_ESAT_NeglectToughness, Src_ESAT_LingNeng, nSkillDmg, fActionTime) --if unit.IsPlayer(RoleID) -- §Á§Ó§Ý§ñ§Ö§ä§ã§ñ §Ý§Ú §Ú§Ô§â§à§Ü§à§Þ RoleID , §Ñ§ß§Ñ§Ý§à§Ô§Ú§é§ß§à §Þ§à§Ø§ß§à §ã TargetID if nSkillDmg > 10000 then nSkillDmg = nSkillDmg/10000; end if fActionTime > 4 then fActionTime = 4 end if fActionTime < 1 then fActionTime = 1 end local dwTmpValue = 0 local BaseDmg = 0 local fDerateCoef = 0 local a = role.GetRoleAttValue(MapID, InstanceID, RoleID, 140) local b = role.GetRoleAttValue(MapID, InstanceID, TargetID, 137) local c = role.GetRoleAttValue(MapID, InstanceID, RoleID, 136) if Target_ESAT_HolyDef > 0 then if((Src_ESAT_ExDmg+a)>=(Target_ESAT_HolyDef + b)) then dwTmpValue = (Src_ESAT_ExDmg+a) - (Target_ESAT_HolyDef+b) end fBaseDmg = ( Src_ESAT_Demage + c + nSkillDmg )*(1 + ((dwTmpValue)*fActionTime)/100000); else fBaseDmg = ( Src_ESAT_Demage + c+ nSkillDmg )*(1 + ((Src_ESAT_ExDmg)*fActionTime)/100000); end if Target_ESAT_HolyDef > 0 then fDerateCoef = (Target_ESAT_HolyDef+b)/(Target_ESAT_HolyDef+b + 100000); end local fDmg = (fBaseDmg - fBaseDmg * fDerateCoef); --§µ§Þ§ß§à§Ø§Ö§ß§Ú§Ö §å§â§à§ß§Ñ §Õ§å§ç§Ñ §Ö§ã§Ý§Ú §ï§ä§à §Þ§à§Ò if not unit.IsPlayer(TargetID) then fDmg=fDmg*3 end if unit.IsPlayer(TargetID) then fDmg=fDmg*4 end if not unit.IsPlayer(TargetID) then local creaID = unit.GetUnitTypeID(MapID, InstanceID, TargetID) if creaID == 2055025 or creaID == 2055052 or creaID == 2055079 or creaID == 9999993 or creaID == 9999999 or creaID == 1008501 or creaID == 9010228 then fDmg = fDmg/5 end end return fDmg end aux.RegisterRoleEvent(96, "x_RoleHolyCalDmg") function x_RoleHolyCanCrit(MapID, InstanceID, RoleID, TargetID, Target_ESAT_Demage, Target_ESAT_HolyDef, Target_ESAT_Crit, Target_ESAT_CritRate, Target_ESAT_ExDmg, Target_ESAT_AttackTec, Target_ESAT_NeglectToughness, Target_ESAT_LingNeng, Src_ESAT_Demage, Src_ESAT_HolyDef, Src_ESAT_Crit, Src_ESAT_CritRate, Src_ESAT_ExDmg, Src_ESAT_AttackTec, Src_ESAT_NeglectToughness, Src_ESAT_LingNeng, nSkillDmg, fActionTime, SkillCrit) local a = role.GetRoleAttValue(MapID, InstanceID, RoleID, 138) local b = role.GetRoleAttValue(MapID, InstanceID, TargetID, 142) local fBaseCrit = math.pow((Src_ESAT_Crit + a) / ((Src_ESAT_Crit + a) + 250000), 0.75) local fCrit = 0 if Target_ESAT_HolyDef > 0 then fCrit = fBaseCrit * (1 + (Src_ESAT_Crit + a - (Target_ESAT_NeglectToughness + b)) / 20000.0) + SkillCrit * 0.75 else fCrit = fBaseCrit * (1 + (Src_ESAT_Crit + a) / 20000.0) + SkillCrit * 0.75 end if fCrit < 0 then fCrit = 0 end if fCrit > 1 then fCrit = 1 end return fCrit end aux.RegisterRoleEvent(97, "x_RoleHolyCanCrit") function x_RoleHolyCalCrit(MapID, InstanceID, RoleID, TargetID, Target_ESAT_Demage, Target_ESAT_HolyDef, Target_ESAT_Crit, Target_ESAT_CritRate, Target_ESAT_ExDmg, Target_ESAT_AttackTec, Target_ESAT_NeglectToughness, Target_ESAT_LingNeng, Src_ESAT_Demage, Src_ESAT_HolyDef, Src_ESAT_Crit, Src_ESAT_CritRate, Src_ESAT_ExDmg, Src_ESAT_AttackTec, Src_ESAT_NeglectToughness, Src_ESAT_LingNeng, nSkillDmg, fActionTime) local a = role.GetRoleAttValue(MapID, InstanceID, RoleID, 139) local fCritAmount = math.floor((Src_ESAT_CritRate + a) / 100000) if fCritAmount < 0 then fCritAmount = 0 end return fCritAmount end aux.RegisterRoleEvent(98, "x_RoleHolyCalCrit") function x_RoleHolyCanHit(MapID, InstanceID, RoleID, TargetID, Target_ESAT_Demage, Target_ESAT_HolyDef, Target_ESAT_Crit, Target_ESAT_CritRate, Target_ESAT_ExDmg, Target_ESAT_AttackTec, Target_ESAT_NeglectToughness, Target_ESAT_LingNeng, Src_ESAT_Demage, Src_ESAT_HolyDef, Src_ESAT_Crit, Src_ESAT_CritRate, Src_ESAT_ExDmg, Src_ESAT_AttackTec, Src_ESAT_NeglectToughness, Src_ESAT_LingNeng, nSkillDmg, fActionTime) local fHolyHit = 0 local result = false local a = role.GetRoleAttValue(MapID, InstanceID, TargetID, 142) local b = role.GetRoleAttValue(MapID, InstanceID, RoleID, 140) if pTargetHoly and (Target_ESAT_NeglectToughness + a) >= (Src_ESAT_AttackTec+ b) then fHolyHit = math.floor(0.9 * (1 - ((Target_ESAT_NeglectToughness + b) - (Src_ESAT_AttackTec + b)) / 100000)) else fHolyHit = 90 end if fHolyHit < 30 then fHolyHit = 30 end if fHolyHit > 90 then fHolyHit = 90 end local f = math.random(100) if f < fHolyHit then result = true else result = false end return result end aux.RegisterRoleEvent(99, "x_RoleHolyCanHit") function x_RoleHolyFinalDmg(MapID, InstanceID, nDmg, nCrit) return (nDmg * (1.5 + nCrit * 0.75)) end aux.RegisterWorldEvent(10, "x_RoleHolyFinalDmg")