1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426 |
- --[[
- 1.该脚本所有本地方法末尾均需要加PF,防止与事件接口冲突
- 2.攻击者和被攻击者的类型:1-玩家;2-怪物;3-宠物
- ]] -- 攻击事件的入口
- -- function excusefightdamage(actor, paramMapList)
- -- local fightResults = {}
- -- for _, paramMap in pairs(paramMapList) do
- -- local fightResult = excusefightdamage0(actor, paramMap)
- -- table.insert(fightResults, fightResult)
- -- end
- -- return fightResults
- -- end
- PlayerFight = {}
- local this = {}
- function excusefightdamage0(actor, paramMap)
- LoadGlobalDataPF(paramMap)
- local castType = paramMap["castertype"]
- local targetType = paramMap["targettype"]
- if castType == 1 and targetType == 2 then
- PlayerAtkMonsterPF(paramMap) -- 玩家攻击怪物
- elseif castType == 1 and targetType == 1 then
- PlayerAtkPlayerPF(paramMap) -- 玩家攻击玩家
- elseif castType == 2 and targetType == 1 then
- MonsterAtkPlayerPF(paramMap) -- 怪物攻击玩家
- elseif castType == 2 and targetType == 3 then
- MonsterAtkPlayerPF(paramMap) -- 怪物攻击宠物,走玩家攻击怪物
- elseif castType == 3 and targetType == 2 then
- PlayerAtkMonsterPF(paramMap) -- 宠物攻击怪物,走玩家攻击怪物
- elseif castType == 1 and targetType == 3 then
- PlayerAtkPlayerPF(paramMap) -- 玩家攻击宠物,走玩家攻击玩家
- elseif castType == 3 and targetType == 1 then
- PlayerAtkPlayerPF(paramMap) -- 宠物攻击玩家,走玩家攻击攻击玩家
- end
- local pf_globalData = getplaydef(actor, "@pf_globalData")
- local result = pf_globalData["result"]
- return result
- end
- -- 初始化全局数据
- function LoadGlobalDataPF(paramMap)
- local skillId = paramMap["skillid"]
- local globalTable = {}
- local skillPower = tonumber(ConfigDataManager.getTableValue("cfg_skill_info", "skillPower", "skillID", skillId))
- if skillPower == nil then
- error("战斗脚本技能攻击力配置错误,skillId:" .. skillId)
- skillPower = 0
- end
- local result = {}
- result["target"] = paramMap["target"]
- result["casthurt"] = 0
- result["targethurt"] = 0
- result["castershield"] = 0
- result["targetshield"] = 0
- result["hurttype"] = 108
- result["repeat"] = 1
- globalTable["caster"] = paramMap["caster"]
- globalTable["target"] = paramMap["target"]
- globalTable["mapId"] = paramMap["mapId"]
- globalTable["castType"] = paramMap["castertype"]
- globalTable["targetType"] = paramMap["targettype"]
- globalTable["skillLevel"] = paramMap["skilllevel"]
- globalTable["skillId"] = paramMap["skillid"]
- globalTable["skillPower"] = skillPower
- globalTable["yiBanGongJi"] = "1" -- 一般攻击
- globalTable["zhuoYueYiJi"] = "0" -- 卓越一击
- globalTable["xinYunYiJi"] = "0" -- 幸运一击
- globalTable["wuShiFangYu"] = "0" -- 无视防御
- globalTable["shuangBeiYiJi"] = "0" -- 双倍一击
- globalTable["result"] = result
- setplaydef(paramMap["caster"], "@pf_globalData", globalTable)
- end
- -- 玩家攻击玩家
- function PlayerAtkPlayerPF(paramMap)
- local caster = paramMap["caster"]
- -- PK值判断是否可以造成伤害
- local pkValue = tonumber(pk.getpkvalue(caster))
- local pkCountTableInfo = ConfigDataManager.getTable("cfg_pk_count", "pvpDamage", 1)
- if pkCountTableInfo and #pkCountTableInfo > 0 then
- local maxPkValue = 0
- for _, v in ipairs(pkCountTableInfo) do
- local nameColor = tostring(v["namecolor"])
- local split = string.split(nameColor, "#")
- local minValue = tonumber(split[1])
- local maxValue = tonumber(split[2])
- if pkValue >= minValue and pkValue <= maxValue then
- -- PK值在此区间内不造成伤害
- tipinfo(caster, "pk值较高,无法对玩家造成伤害")
- return
- end
- maxPkValue = maxPkValue > maxValue and maxPkValue or maxValue
- end
- if pkValue and pkValue ~= 0 and pkValue > maxPkValue then
- tipinfo(caster, "pk值较高,无法对玩家造成伤害")
- return
- end
- else
- error("pkCountTableInfo is null")
- end
- -- PK值判断end
- local target = paramMap["target"]
- local skillId = paramMap["skillid"]
- local playerDC = GetAtkPowerPF(caster, skillId)
- local g_minDC = playerDC[1]
- local g_maxDC = playerDC[2]
- setplaydef(caster, "@pf_g_minDC", g_minDC)
- setplaydef(caster, "@pf_g_maxDC", g_maxDC)
- local configValue = ConfigDataManager.getTableValue("cfg_global", "value", "id", 200)
- local split = string.split(configValue, "|")
- local diff = tonumber(split[1])
- local rate = tonumber(split[2])
- local hitRate = getattrinfo(caster, "hitRate")
- local missRate = getattrinfo(target, "missRate")
- local hitRand = rand(0, hitRate)
- local chaZhi = hitRand - missRate
- if chaZhi < 0 then
- chaZhi = abs(chaZhi)
- if chaZhi <= diff then
- local randomFloat = math.random()
- if rate < randomFloat then
- MissPF(paramMap)
- return
- end
- else
- MissPF(paramMap)
- return
- end
- end
- -- 获取玩家普攻技能id
- local group = ConfigDataManager.getTableValue("cfg_skill", "group", "id", skillId)
- local basicDamage
- if tonumber(group) == 4 then
- basicDamage = PlayerNormalAttackPF(paramMap)
- else
- basicDamage = SkillAttackPF(paramMap)
- end
- -- todo 最终伤害
- local damageRateDecrement = getattrinfo(target, "damageRateDecrement")
- local skillDamageAdd = getattrinfo(caster, "skillDamageAdd")
- local damageIncreaseRate = getattrinfo(caster, "damageIncreaseRate")
- local pveDamageAdd = getattrinfo(caster, "pveDamageAdd")
- local finalDamage = basicDamage * (1 + damageIncreaseRate) * (1 + pveDamageAdd) * (1 - damageRateDecrement) +
- skillDamageAdd
- HurtSetMent(finalDamage, paramMap)
- end
- -- 怪物攻击玩家
- function MonsterAtkPlayerPF(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- local g_minDC = getattrinfo(caster, "minDC")
- local g_maxDC = getattrinfo(caster, "maxDC")
- setplaydef(caster, "@pf_g_minDC", g_minDC)
- setplaydef(caster, "@pf_g_maxDC", g_maxDC)
- local configValue = ConfigDataManager.getTableValue("cfg_global", "value", "id", 200)
- local split = string.split(configValue, "|")
- local diff = tonumber(split[1])
- local rate = tonumber(split[2])
- local hitRate = getattrinfo(caster, "hitRate")
- local missRate = getattrinfo(target, "missRate")
- local hitRand = rand(0, hitRate)
- local chaZhi = hitRand - missRate
- if chaZhi < 0 then
- chaZhi = abs(chaZhi)
- if chaZhi <= diff then
- local randomFloat = math.random()
- if rate < randomFloat then
- MissPF(paramMap)
- return
- end
- else
- MissPF(paramMap)
- return
- end
- end
- -- 获取怪物普攻技能id
- local basicSkillId = GetMonsterBasicSkill(caster)
- local basicDamage
- if skillId == basicSkillId then
- basicDamage = MonsterNormalAttackPF(paramMap)
- else
- basicDamage = MonsterSkillAttackPF(paramMap)
- end
- -- 最终伤害
- local damageRateDecrement = getattrinfo(target, "damageRateDecrement")
- local finalDamage = basicDamage * (1 - damageRateDecrement)
- HurtSetMent(finalDamage, paramMap)
- end
- -- 怪物普通攻击
- function MonsterNormalAttackPF(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- local g_minDC = getplaydef(caster, "@pf_g_minDC")
- local g_maxDC = getplaydef(caster, "@pf_g_maxDC")
- -- 基础伤害=(怪物最小攻击力~怪物最大攻击力)-(人物防御力/2)
- local armor = getattrinfo(target, "armor")
- return rand(g_minDC, g_maxDC) - armor / 2
- end
- -- 怪物技能攻击
- function MonsterSkillAttackPF(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- local g_minDC = getplaydef(caster, "@pf_g_minDC")
- local g_maxDC = getplaydef(caster, "@pf_g_maxDC")
- local pf_globalData = getplaydef(caster, "@pf_globalData")
- local skillPower = pf_globalData["skillPower"]
- -- 基础伤害=(怪物最小攻击力~怪物最大攻击力)+怪物技能攻击力-(人物防御力/2)
- local armor = getattrinfo(target, "armor")
- return rand(g_minDC, g_maxDC) - armor / 2 + skillPower
- end
- -- 获取怪物普攻技能id
- function GetMonsterBasicSkill(caster)
- local monCfgId = getbaseinfo(caster, "castermonsterid")
- return ConfigDataManager.getTableValue("cfg_monster", "monsterGeneralAttack", "id", monCfgId)
- end
- -- 玩家攻击怪物
- function PlayerAtkMonsterPF(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- local skillId = paramMap["skillid"]
- local playerDC = GetAtkPowerPF(caster, skillId)
- local g_minDC = playerDC[1]
- local g_maxDC = playerDC[2]
- setplaydef(caster, "@pf_g_minDC", g_minDC)
- setplaydef(caster, "@pf_g_maxDC", g_maxDC)
- local configValue = ConfigDataManager.getTableValue("cfg_global", "value", "id", 200)
- local split = string.split(configValue, "|")
- local diff = tonumber(split[1])
- local rate = tonumber(split[2])
- local hitRate = getattrinfo(caster, "hitRate")
- local missRate = getattrinfo(target, "missRate")
- local hitRand = rand(0, hitRate)
- local chaZhi = hitRand - missRate
- if chaZhi < 0 then
- chaZhi = abs(chaZhi)
- if chaZhi <= diff then
- local randomFloat = math.random()
- if rate < randomFloat then
- MissPF(paramMap)
- return
- end
- else
- MissPF(paramMap)
- return
- end
- end
- -- 获取玩家普攻技能id
- local group = ConfigDataManager.getTableValue("cfg_skill", "group", "id", skillId)
- local basicDamage
- if tonumber(group) == 4 then
- basicDamage = PlayerNormalAttackPF(paramMap)
- else
- basicDamage = SkillAttackPF(paramMap)
- print("伤害", basicDamage)
- end
- -- todo 最终伤害加成
- local skillDamageAdd = getattrinfo(caster, "skillDamageAdd")
- local damageIncreaseRate = getattrinfo(caster, "damageIncreaseRate")
- local pveDamageAdd = getattrinfo(caster, "pveDamageAdd")
- local finalDamage = basicDamage * (1 + damageIncreaseRate) * (1 + pveDamageAdd) + skillDamageAdd
- -- 如果攻击的怪物是秘境副本的BOSS则累加记录实时伤害
- local castType = paramMap["castertype"]
- local targetType = paramMap["targettype"]
- if castType == 1 and targetType == 2 then
- local monsterId = paramMap["monsterid"]
- local bossChallenge = ConfigDataManager.getTable("cfg_BOSS_challenge", "monsterType", BossType.SECRET_REALM_BOSS)
- for i = 1, #bossChallenge do
- if tonumber(monsterId) == tonumber(bossChallenge[i].monsterid) then
- -- 存储实时伤害
- SecretRealm.savePlayerHurtInfo(caster, target, finalDamage < 0 and 1 or finalDamage)
- end
- end
- end
- HurtSetMent(finalDamage, paramMap)
- end
- -- 伤害结算
- function HurtSetMent(damage, paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- local hurttype = GetHurtType(paramMap)
- if damage <= 0 then
- damage = 1
- end
- -- 伤害反射
- local casterDamage, absCasterShield = HurtReflect(damage, paramMap)
- -- 韧性
- damage = CalcuResilience(damage, caster, target, paramMap)
- -- 计算受击方护盾值
- local absTargetShield = 0
- damage, absTargetShield = CalcuShield(damage, caster, target, paramMap)
- -- 设置返回值
- SetResult(casterDamage, damage, absCasterShield, absTargetShield, hurttype, 1, paramMap)
- end
- -- 设置返回值
- function SetResult(casthurt, targethurt, castershield, targetshield, hurttype, repeatl, paramMap)
- local caster = paramMap["caster"]
- local pf_globalData = getplaydef(caster, "@pf_globalData")
- local result = pf_globalData["result"]
- result["casthurt"] = casthurt
- result["targethurt"] = targethurt
- result["castershield"] = castershield
- result["targetshield"] = targetshield
- result["hurttype"] = hurttype
- result["repeat"] = repeatl
- setplaydef(caster, "@pf_globalData", pf_globalData)
- end
- -- 伤害反射
- function HurtReflect(damage, paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- local damageReflex = getattrinfo(target, "damageReflex")
- local reflectDamageReductionAndIncrease = getattrinfo(caster, "reflectDamageReductionAndIncrease")
- local damageRateDecrement = getattrinfo(caster, "damageRateDecrement")
- damage = damage * damageReflex * (1 - reflectDamageReductionAndIncrease) * (1 - damageRateDecrement)
- damage = CalcuResilience(damage, target, caster, paramMap)
- local absCasterShield = 0
- damage, absCasterShield = CalcuShield(damage, target, caster, paramMap)
- return damage, absCasterShield
- end
- -- 计算韧性
- function CalcuResilience(damage, caster, target, paramMap)
- local castType = paramMap["castertype"]
- local targetType = paramMap["targettype"]
- if castType ~= 1 or targetType ~= 1 then
- return damage
- end
- local casterRes = getattrinfo(caster, "equipmentResilienceIndex")
- local targetRes = getattrinfo(target, "equipmentResilienceIndex")
- if casterRes >= targetRes then
- return damage
- end
- return damage * (100 - (targetRes - casterRes)) / 100
- end
- -- 计算护盾值
- function CalcuShield(damage, casterActor, targetActor, paramMap)
- local castType = paramMap["castertype"]
- local targetType = paramMap["targettype"]
- if castType ~= 1 or targetType ~= 1 then
- return damage, 0
- end
- local shield = getattrinfo(targetActor, "shield")
- local sdAdd = getattrinfo(targetActor, "sdAdd")
- local shieldParry = getattrinfo(targetActor, "shieldParry")
- local shieldParryfall = getattrinfo(casterActor, "shieldParryfall")
- -- 护盾抵抗百分比
- local rate = min(0, shieldParry - shieldParryfall)
- local resDamage = damage * rate
- if resDamage > shield + sdAdd then
- damage = damage * (1 - rate) + resDamage - shield - sdAdd
- return damage, shield
- end
- return damage * (1 - rate), resDamage
- end
- -- 获取伤害类型
- function GetHurtType(paramMap)
- local caster = paramMap["caster"]
- local pf_globalData = getplaydef(caster, "@pf_globalData")
- local yiBanGongJi = pf_globalData["yiBanGongJi"]
- local zhuoYueYiJi = pf_globalData["zhuoYueYiJi"]
- local xinYunYiJi = pf_globalData["xinYunYiJi"]
- local wuShiFangYu = pf_globalData["wuShiFangYu"]
- local shuangBeiYiJi = pf_globalData["shuangBeiYiJi"]
- local typeString = yiBanGongJi .. zhuoYueYiJi .. xinYunYiJi .. wuShiFangYu .. shuangBeiYiJi
- print(typeString)
- local hurtTypeCache = getsysvar(SystemVarConst.NORMAL_DAMAGE_TYPE_CACHE)
- local type = hurtTypeCache[typeString]
- if type == nil then
- print("获取攻击概率类型失败")
- type = 101
- end
- return type
- end
- -- 技能攻击
- -- 技能攻击的计算公式分为物理系和魔法系
- function SkillAttackPF(paramMap)
- local skillId = paramMap["skillid"]
- local damage = 0
- local injury_type = tonumber(ConfigDataManager.getTableValue("cfg_skill_info", "injuryType", "skillID", skillId))
- if injury_type == 1 then
- damage = WuliXiSkillPF(paramMap)
- elseif injury_type == 2 then
- damage = MoFaXiSkillPF(paramMap)
- elseif injury_type == 3 then
- damage = ZuZhouXiSkillPF(paramMap)
- else
- error("不存在的伤害类型")
- end
- return damage
- end
- -- 诅咒攻击
- function ZuZhouXiSkillPF(paramMap)
- local retDamage = 0
- if IsShuangBeiYiJiPF(paramMap) then
- retDamage = ShuangBeiYiJi1325(paramMap)
- elseif IsWuShiFangYuPF(paramMap) then
- retDamage = WuShiFangYu1324(paramMap)
- elseif IsZhuoYueYiJiPF(paramMap) then
- retDamage = ZhuoYueYiJi1323(paramMap)
- elseif IsXingYunYiJiPF(paramMap) then
- retDamage = XinYunYiJi1322(paramMap)
- else
- retDamage = YiBanGongJi1321(paramMap)
- end
- return retDamage
- end
- ---------------------------获取技能属性加成---------------------------
- function GetSkillAttributeDamage(paramMap)
- local caster = paramMap["caster"]
- local skillid = paramMap["skillid"]
- local skillLevel = paramMap["skilllevel"]
- local attributeDamage = ConfigDataManager.getTableValue("cfg_skill_info", "attributeDamage", "skillID", skillid, "skillLevel",
- skillLevel)
- if not attributeDamage or attributeDamage == 0 or attributeDamage == "" then
- return nil
- end
- local allAttributeDamage = string.split(attributeDamage, "|")
- local index = math.random(1, #allAttributeDamage)
- local attributeDamageString = allAttributeDamage[index]
- local attributeDamageLocal = string.split(attributeDamageString, "#")
- local attId = tonumber(attributeDamageLocal[1])
- local attName = attrid2name(caster, attId)
- local attValue = getattrinfo(caster, attName)
- local attInfo = {attValue, tonumber(attributeDamageLocal[2])}
- return attInfo
- end
- ---------------------------玩家攻击怪物(1)诅咒系(3)技能攻击(2)双倍一击(5)---------------------------
- function ShuangBeiYiJi1325(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- local retDamage = 0
- local doubleDamageBonus = getattrinfo(caster, "doubleDamageBonus")
- if IsWuShiFangYuPF(paramMap) then
- local ignore_defense_damage = WuShiFangYu1324(paramMap)
- retDamage = ignore_defense_damage * (1 + doubleDamageBonus)
- elseif IsZhuoYueYiJiPF(paramMap) then
- local zhuo_yue_damage = ZhuoYueYiJi1323(paramMap)
- retDamage = zhuo_yue_damage * (1 + doubleDamageBonus)
- elseif IsXingYunYiJiPF(paramMap) then
- local lucky_damage = XinYunYiJi1322(paramMap)
- retDamage = lucky_damage * (1 + doubleDamageBonus)
- else
- local normal_damage = YiBanGongJi1321(paramMap)
- retDamage = normal_damage * (1 + doubleDamageBonus)
- end
- return retDamage
- end
- ---------------------------玩家攻击怪物(1)诅咒系(3)技能攻击(2)卓越一击(3)---------------------------
- function ZhuoYueYiJi1323(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- -- 基础伤害={[(人物最大诅咒攻击力+技能攻击力)*(100%+召唤书诅咒攻击提升加成系数)-(怪物防御力/2)]+技能攻击力增加具体数值}*卓越一击攻击力加成系数+卓越一击攻击力加成具体数值
- local maxDC = getplaydef(caster, "@pf_g_maxDC")
- local pf_globalData = getplaydef(caster, "@pf_globalData")
- local skillPower = pf_globalData["skillPower"]
- local armor = getattrinfo(target, "armor")
- local increaseLevelMaxHp = getattrinfo(caster, "increaseLevelMaxHp")
- local skillDamageAdd = getattrinfo(caster, "skillDamageAdd")
- local excellentDamageBonus = getattrinfo(caster, "excellentDamageBonus")
- local excellentDamageAdd = getattrinfo(caster, "excellentDamageAdd")
- local attAdd = GetSkillAttributeDamage(paramMap)
- if not attAdd then
- return ((maxDC + skillPower) * (increaseLevelMaxHp + 1) + skillDamageAdd - armor / 2) *
- (1 + excellentDamageBonus) + excellentDamageAdd
- end
- return ((maxDC + (skillPower + attAdd[1]) * (1 + attAdd[2] / 10000)) * (increaseLevelMaxHp + 1) + skillDamageAdd -
- armor / 2) * (1 + excellentDamageBonus) + excellentDamageAdd
- end
- ---------------------------玩家攻击怪物(1)诅咒系(3)技能攻击(2)卓越一击(3)---------------------------
- function XinYunYiJi1322(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- -- 基础伤害={[(人物最大诅咒攻击力+技能攻击力)*(100%+召唤书诅咒攻击提升加成系数)-(怪物防御力/2)]+技能攻击力增加具体数值}*卓越一击攻击力加成系数+卓越一击攻击力加成具体数值
- local maxDC = getplaydef(caster, "@pf_g_maxDC")
- local pf_globalData = getplaydef(caster, "@pf_globalData")
- local skillPower = pf_globalData["skillPower"]
- local armor = getattrinfo(target, "armor")
- local increaseLevelMaxHp = getattrinfo(caster, "increaseLevelMaxHp")
- local skillDamageAdd = getattrinfo(caster, "skillDamageAdd")
- local criticalDamageBonus = getattrinfo(caster, "criticalDamageBonus")
- local criticalDamageAdd = getattrinfo(caster, "criticalDamageAdd")
- local attAdd = GetSkillAttributeDamage(paramMap)
- if not attAdd then
- return ((maxDC + skillPower) * (increaseLevelMaxHp + 1) + skillDamageAdd - armor / 2) *
- (1 + criticalDamageBonus) + criticalDamageAdd
- end
- return ((maxDC + (skillPower + attAdd[1]) * (1 + attAdd[2] / 10000)) * (increaseLevelMaxHp + 1) + skillDamageAdd -
- armor / 2) * (1 + criticalDamageBonus) + criticalDamageAdd
- end
- ---------------------------玩家攻击怪物(1)诅咒系(3)技能攻击(2)一般攻击(1)---------------------------
- function YiBanGongJi1321(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- -- 一般攻击:基础伤害=[(人物最小诅咒攻击力~人物最大诅咒攻击力+技能攻击力)*(100%+召唤书诅咒攻击提升加成系数)-(怪物防御力/2)]+技能攻击力增加具体数值
- local maxDC = getplaydef(caster, "@pf_g_maxDC")
- local minDC = getplaydef(caster, "@pf_g_minDC")
- local pf_globalData = getplaydef(caster, "@pf_globalData")
- local skillPower = pf_globalData["skillPower"]
- local armor = getattrinfo(target, "armor")
- local increaseLevelMaxHp = getattrinfo(caster, "increaseLevelMaxHp")
- local skillDamageAdd = getattrinfo(caster, "skillDamageAdd")
- local attAdd = GetSkillAttributeDamage(paramMap)
- if not attAdd then
- return ((rand(minDC, maxDC) + skillPower) * (increaseLevelMaxHp + 1) + skillDamageAdd - armor / 2)
- end
- return ((rand(minDC, maxDC) + (skillPower + attAdd[1]) * (1 + attAdd[2] / 10000)) * (increaseLevelMaxHp + 1) +
- skillDamageAdd - armor / 2)
- end
- ---------------------------玩家攻击怪物(1)诅咒系(3)技能攻击(2)无视防御攻击(4)---------------------------
- function WuShiFangYu1324(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- local retDamage = 0
- local ignoringIncreasedDefenseDamage = getattrinfo(caster, "ignoringIncreasedDefenseDamage")
- if IsZhuoYueYiJiPF() then
- local zhuo_yue_damage = ZhuoYueYiJi13243(paramMap)
- retDamage = zhuo_yue_damage * (1 + ignoringIncreasedDefenseDamage)
- elseif IsXingYunYiJiPF() then
- local lucky_damage = XinYunYiJi13242(paramMap)
- retDamage = lucky_damage * (1 + ignoringIncreasedDefenseDamage)
- else
- local normal_damage = YiBanGongJi13241(paramMap)
- retDamage = normal_damage * (1 + ignoringIncreasedDefenseDamage)
- end
- return retDamage
- end
- ---------------------------玩家攻击怪物(1)诅咒系(3)技能攻击(2)无视防御(4)卓越一击(3)---------------------------
- function ZhuoYueYiJi13243(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- -- ;基础伤害=【{[(人物最大诅咒攻击力+技能攻击力)*(100%+召唤书诅咒攻击提升加成系数)]+技能攻击力增加具体数值}*卓越一击攻击力加成系数+卓越一击攻击力加成具体数值】
- local maxDC = getplaydef(caster, "@pf_g_maxDC")
- local pf_globalData = getplaydef(caster, "@pf_globalData")
- local skillPower = pf_globalData["skillPower"]
- local increaseLevelMaxHp = getattrinfo(caster, "increaseLevelMaxHp")
- local skillDamageAdd = getattrinfo(caster, "skillDamageAdd")
- local excellentDamageBonus = getattrinfo(caster, "excellentDamageBonus")
- local excellentDamageAdd = getattrinfo(caster, "excellentDamageAdd")
- local attAdd = GetSkillAttributeDamage(paramMap)
- if not attAdd then
- return ((maxDC + skillPower) * (increaseLevelMaxHp + 1) + skillDamageAdd) * (1 + excellentDamageBonus) +
- excellentDamageAdd
- end
- return ((maxDC + (skillPower + attAdd[1]) * (1 + attAdd[2] / 10000)) * (increaseLevelMaxHp + 1) + skillDamageAdd) *
- (1 + excellentDamageBonus) + excellentDamageAdd
- end
- ---------------------------玩家攻击怪物(1)诅咒系(3)技能攻击(2)无视防御(4)幸运一击(2)---------------------------
- function XinYunYiJi13242(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- -- 基础伤害=【{[(人物最大诅咒攻击力+技能攻击力)*(100%+召唤书诅咒攻击提升加成系数)]+技能攻击力增加具体数值}*幸运一击攻击力加成系数+幸运一击攻击力加成具体数值】
- local maxDC = getplaydef(caster, "@pf_g_maxDC")
- local pf_globalData = getplaydef(caster, "@pf_globalData")
- local skillPower = pf_globalData["skillPower"]
- local increaseLevelMaxHp = getattrinfo(caster, "increaseLevelMaxHp")
- local skillDamageAdd = getattrinfo(caster, "skillDamageAdd")
- local criticalDamageBonus = getattrinfo(caster, "criticalDamageBonus")
- local criticalDamageAdd = getattrinfo(caster, "criticalDamageAdd")
- local attAdd = GetSkillAttributeDamage(paramMap)
- if not attAdd then
- return ((maxDC + skillPower) * (increaseLevelMaxHp + 1) + skillDamageAdd) * (1 + criticalDamageBonus) +
- criticalDamageAdd
- end
- return ((maxDC + (skillPower + attAdd[1]) * (1 + attAdd[2] / 10000)) * (increaseLevelMaxHp + 1) + skillDamageAdd) *
- (1 + criticalDamageBonus) + criticalDamageAdd
- end
- ---------------------------玩家攻击怪物(1)诅咒系(3)技能攻击(2)一般攻击(1)---------------------------
- function YiBanGongJi13241(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- -- 一般攻击:基础伤害=[(人物最小诅咒攻击力~人物最大诅咒攻击力+技能攻击力)*(100%+召唤书诅咒攻击提升加成系数)-(怪物防御力/2)]+技能攻击力增加具体数值
- local maxDC = getplaydef(caster, "@pf_g_maxDC")
- local minDC = getplaydef(caster, "@pf_g_minDC")
- local pf_globalData = getplaydef(caster, "@pf_globalData")
- local skillPower = pf_globalData["skillPower"]
- local armor = getattrinfo(target, "armor")
- local increaseLevelMaxHp = getattrinfo(caster, "increaseLevelMaxHp")
- local skillDamageAdd = getattrinfo(caster, "skillDamageAdd")
- local attAdd = GetSkillAttributeDamage(paramMap)
- if not attAdd then
- return (rand(minDC, maxDC) + skillPower) * (increaseLevelMaxHp + 1) + skillDamageAdd - armor / 2
- end
- return (rand(minDC, maxDC) + (skillPower + attAdd[1]) * (1 + attAdd[2] / 10000)) * (increaseLevelMaxHp + 1) +
- skillDamageAdd - armor / 2
- end
- -- 魔法系技能攻击
- function MoFaXiSkillPF(paramMap)
- local retDamage = 0
- if IsShuangBeiYiJiPF(paramMap) then
- retDamage = ShuangBeiYiJi1225(paramMap)
- elseif IsWuShiFangYuPF(paramMap) then
- retDamage = WuShiFangYu1224()
- elseif IsZhuoYueYiJiPF(paramMap) then
- retDamage = ZhuoYueYiJi1223(paramMap)
- elseif IsXingYunYiJiPF(paramMap) then
- retDamage = XinYunYiJi1222(paramMap)
- else
- retDamage = YiBanGongJi1221(paramMap)
- end
- return retDamage
- end
- ---------------------------玩家攻击怪物(1)魔法系(2)技能攻击(2)双倍一击(5)---------------------------
- function ShuangBeiYiJi1225(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- local retDamage = 0
- local doubleDamageBonus = getattrinfo(caster, "doubleDamageBonus")
- if IsWuShiFangYuPF(paramMap) then
- local ignore_defense_damage = WuShiFangYu1224(paramMap)
- retDamage = ignore_defense_damage * (1 + doubleDamageBonus)
- elseif IsZhuoYueYiJiPF(paramMap) then
- local zhuo_yue_damage = ZhuoYueYiJi1223(paramMap)
- retDamage = zhuo_yue_damage * (1 + doubleDamageBonus)
- elseif IsXingYunYiJiPF(paramMap) then
- local lucky_damage = XinYunYiJi1222(paramMap)
- retDamage = lucky_damage * (1 + doubleDamageBonus)
- else
- local normal_damage = YiBanGongJi1221(paramMap)
- retDamage = normal_damage * (1 + doubleDamageBonus)
- end
- return retDamage
- end
- ---------------------------玩家攻击怪物(1)魔法系(2)技能攻击(2)一般攻击(1)---------------------------
- function YiBanGongJi1221(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- -- ;基础伤害=[(人物最小魔法攻击力~人物最大魔法攻击力+技能攻击力)*(100%+法杖魔攻加成系数)-(对方防御力/2)]+技能攻击力增加具体数值
- local maxDC = getplaydef(caster, "@pf_g_maxDC")
- local minDC = getplaydef(caster, "@pf_g_minDC")
- local pf_globalData = getplaydef(caster, "@pf_globalData")
- local skillPower = pf_globalData["skillPower"]
- local armor = getattrinfo(target, "armor")
- local wandMagicAttackPowerBonus = getattrinfo(caster, "wandMagicAttackPowerBonus")
- local skillDamageAdd = getattrinfo(caster, "skillDamageAdd")
- local attAdd = GetSkillAttributeDamage(paramMap)
- if not attAdd then
- return ((rand(minDC, maxDC) + skillPower) * (wandMagicAttackPowerBonus + 1) + skillDamageAdd - armor / 2)
- end
- return
- ((rand(minDC, maxDC) + (skillPower + attAdd[1]) * (1 + attAdd[2] / 10000)) * (wandMagicAttackPowerBonus + 1) +
- skillDamageAdd - armor / 2)
- end
- ---------------------------玩家攻击怪物(1)魔法系(2)技能攻击(2)幸运一击(2)---------------------------
- function XinYunYiJi1222(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- -- 基础伤害={[(人物最大魔法攻击力+技能攻击力)*(100%+法杖魔攻加成系数)-(对方防御力/2)]+技能攻击力增加具体数值}*幸运一击攻击力加成系数+幸运一击攻击力加成具体数值
- local maxDC = getplaydef(caster, "@pf_g_maxDC")
- local pf_globalData = getplaydef(caster, "@pf_globalData")
- local skillPower = pf_globalData["skillPower"]
- local armor = getattrinfo(target, "armor")
- local wandMagicAttackPowerBonus = getattrinfo(caster, "wandMagicAttackPowerBonus")
- local skillDamageAdd = getattrinfo(caster, "skillDamageAdd")
- local criticalDamageBonus = getattrinfo(caster, "criticalDamageBonus")
- local criticalDamageAdd = getattrinfo(caster, "criticalDamageAdd")
- local attAdd = GetSkillAttributeDamage(paramMap)
- if not attAdd then
- return ((maxDC + skillPower) * (wandMagicAttackPowerBonus + 1) + skillDamageAdd - armor / 2) *
- (1 + criticalDamageBonus) + criticalDamageAdd
- end
- return ((maxDC + (skillPower + attAdd[1]) * (1 + attAdd[2] / 10000)) * (wandMagicAttackPowerBonus + 1) +
- skillDamageAdd - armor / 2) * (1 + criticalDamageBonus) + criticalDamageAdd
- end
- ---------------------------玩家攻击怪物(1)魔法系(2)技能攻击(2)卓越一击(3)---------------------------
- function ZhuoYueYiJi1223(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- -- 基础伤害={[(人物最大魔法攻击力+技能攻击力)*(100%+法杖魔攻加成系数)-(怪物防御力/2)]+技能攻击力增加具体数值}*卓越一击攻击力加成系数+卓越一击攻击力加成具体数值
- local maxDC = getplaydef(caster, "@pf_g_maxDC")
- local pf_globalData = getplaydef(caster, "@pf_globalData")
- local skillPower = pf_globalData["skillPower"]
- local armor = getattrinfo(target, "armor")
- local wandMagicAttackPowerBonus = getattrinfo(caster, "wandMagicAttackPowerBonus")
- local skillDamageAdd = getattrinfo(caster, "skillDamageAdd")
- local excellentDamageBonus = getattrinfo(caster, "excellentDamageBonus")
- local excellentDamageAdd = getattrinfo(caster, "excellentDamageAdd")
- local attAdd = GetSkillAttributeDamage(paramMap)
- if not attAdd then
- return ((maxDC + skillPower) * (wandMagicAttackPowerBonus + 1) + skillDamageAdd - armor / 2) *
- (1 + excellentDamageBonus) + excellentDamageAdd
- end
- return ((maxDC + (skillPower + attAdd[1]) * (1 + attAdd[2] / 10000)) * (wandMagicAttackPowerBonus + 1) +
- skillDamageAdd - armor / 2) * (1 + excellentDamageBonus) + excellentDamageAdd
- end
- ---------------------------玩家攻击怪物(1)魔法系(2)技能攻击(2)无视防御攻击(4)---------------------------
- function WuShiFangYu1224(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- local retDamage = 0
- local ignoringIncreasedDefenseDamage = getattrinfo(caster, "ignoringIncreasedDefenseDamage")
- if IsZhuoYueYiJiPF(paramMap) then
- local zhuo_yue_damage = ZhuoYueYiJi12243(paramMap)
- retDamage = zhuo_yue_damage * (1 + ignoringIncreasedDefenseDamage)
- elseif IsXingYunYiJiPF(paramMap) then
- local lucky_damage = XinYunYiJi12242(paramMap)
- retDamage = lucky_damage * (1 + ignoringIncreasedDefenseDamage)
- else
- local normal_damage = YiBanGongJi12241(paramMap)
- retDamage = normal_damage * (1 + ignoringIncreasedDefenseDamage)
- end
- return retDamage
- end
- ---------------------------玩家攻击怪物(1)魔法系(2)技能攻击(2)无视防御(4)卓越一击(3)---------------------------
- function ZhuoYueYiJi12243(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- -- 基础伤害=【{[(人物最大魔法攻击力+技能攻击力)*(100%+法杖魔攻加成系数)]+技能攻击力增加具体数值}*卓越一击攻击力加成系数+卓越一击攻击力加成具体数值】
- local maxDC = getplaydef(caster, "@pf_g_maxDC")
- local pf_globalData = getplaydef(caster, "@pf_globalData")
- local skillPower = pf_globalData["skillPower"]
- local wandMagicAttackPowerBonus = getattrinfo(caster, "wandMagicAttackPowerBonus")
- local skillDamageAdd = getattrinfo(caster, "skillDamageAdd")
- local excellentDamageBonus = getattrinfo(caster, "excellentDamageBonus")
- local excellentDamageAdd = getattrinfo(caster, "excellentDamageAdd")
- local attAdd = GetSkillAttributeDamage(paramMap)
- if not attAdd then
- return ((maxDC + skillPower) * (wandMagicAttackPowerBonus + 1) + skillDamageAdd) * (1 + excellentDamageBonus) +
- excellentDamageAdd
- end
- return ((maxDC + (skillPower + attAdd[1]) * (1 + attAdd[2] / 10000)) * (wandMagicAttackPowerBonus + 1) +
- skillDamageAdd) * (1 + excellentDamageBonus) + excellentDamageAdd
- end
- ---------------------------玩家攻击怪物(1)魔法系(2)技能攻击(2)无视防御(4)幸运一击(2)---------------------------
- function XinYunYiJi12242(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- -- 基础伤害=【{[(人物最大魔法攻击力+技能攻击力)*(100%+法杖魔攻加成系数)]+技能攻击力增加具体数值}*幸运一击攻击力加成系数+幸运一击攻击力加成具体数值】
- local maxDC = getplaydef(caster, "@pf_g_maxDC")
- local pf_globalData = getplaydef(caster, "@pf_globalData")
- local skillPower = pf_globalData["skillPower"]
- local wandMagicAttackPowerBonus = getattrinfo(caster, "wandMagicAttackPowerBonus")
- local skillDamageAdd = getattrinfo(caster, "skillDamageAdd")
- local criticalDamageBonus = getattrinfo(caster, "criticalDamageBonus")
- local criticalDamageAdd = getattrinfo(caster, "criticalDamageAdd")
- local attAdd = GetSkillAttributeDamage(paramMap)
- if not attAdd then
- return ((maxDC + skillPower) * (wandMagicAttackPowerBonus + 1) + skillDamageAdd) * (1 + criticalDamageBonus) +
- criticalDamageAdd
- end
- return ((maxDC + (skillPower + attAdd[1]) * (1 + attAdd[2] / 10000)) * (wandMagicAttackPowerBonus + 1) +
- skillDamageAdd) * (1 + criticalDamageBonus) + criticalDamageAdd
- end
- ---------------------------玩家攻击怪物(1)魔法系(2)技能攻击(2)无视防御(4)一般攻击(1)---------------------------
- function YiBanGongJi12241(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- -- 基础伤害={[(人物最小魔法攻击力~人物最大魔法攻击力+技能攻击力)*(100%+法杖魔攻加成系数)]+技能攻击力增加具体数值}
- local maxDC = getplaydef(caster, "@pf_g_maxDC")
- local minDC = getplaydef(caster, "@pf_g_minDC")
- local pf_globalData = getplaydef(caster, "@pf_globalData")
- local skillPower = pf_globalData["skillPower"]
- local wandMagicAttackPowerBonus = getattrinfo(caster, "wandMagicAttackPowerBonus")
- local skillDamageAdd = getattrinfo(caster, "skillDamageAdd")
- local attAdd = GetSkillAttributeDamage(paramMap)
- if not attAdd then
- return (rand(minDC, maxDC) + skillPower) * (1 + wandMagicAttackPowerBonus) + skillDamageAdd
- end
- return (rand(minDC, maxDC) + (skillPower + attAdd[1]) * (1 + attAdd[2] / 10000)) * (1 + wandMagicAttackPowerBonus) +
- skillDamageAdd
- end
- -- 物理系技能攻击
- function WuliXiSkillPF(paramMap)
- local retDamage = 0
- if IsShuangBeiYiJiPF(paramMap) then
- retDamage = ShuangBeiYiJi1125(paramMap)
- elseif IsWuShiFangYuPF(paramMap) then
- retDamage = WuShiFangYu1124(paramMap)
- elseif IsZhuoYueYiJiPF(paramMap) then
- retDamage = ZhuoYueYiJi1123(paramMap)
- elseif IsXingYunYiJiPF(paramMap) then
- retDamage = XinYunYiJi1122(paramMap)
- else
- retDamage = YiBanGongJi1121(paramMap)
- end
- return retDamage
- end
- --------------------------玩家攻击怪物(1)物理系(1)技能攻击(2)双倍一击(5)---------------------------
- function ShuangBeiYiJi1125(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- local retDamage = 0
- local doubleDamageBonus = getattrinfo(caster, "doubleDamageBonus")
- if IsWuShiFangYuPF(paramMap) then
- local ignore_defense_damage = WuShiFangYu1124(paramMap)
- retDamage = ignore_defense_damage * (1 + doubleDamageBonus)
- elseif IsZhuoYueYiJiPF(paramMap) then
- local zhuo_yue_damage = ZhuoYueYiJi1123(paramMap)
- retDamage = zhuo_yue_damage * (1 + doubleDamageBonus)
- elseif IsXingYunYiJiPF(paramMap) then
- local lucky_damage = XinYunYiJi1122(paramMap)
- retDamage = lucky_damage * (1 + doubleDamageBonus)
- else
- local normal_damage = YiBanGongJi1121(paramMap)
- retDamage = normal_damage * (1 + doubleDamageBonus)
- end
- return retDamage
- end
- ---------------------------玩家攻击怪物(1)物理系(1)技能攻击(2)一般攻击(1)---------------------------
- function YiBanGongJi1121(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- -- 基础伤害=[(人物最小攻击力~人物最大攻击力)+技能攻击力-(怪物防御力/2)]*技能攻击力系数+技能攻击力增加具体数值
- local maxDC = getplaydef(caster, "@pf_g_maxDC")
- local minDC = getplaydef(caster, "@pf_g_minDC")
- local armor = getattrinfo(target, "armor")
- local pf_globalData = getplaydef(caster, "@pf_globalData")
- local skillPower = pf_globalData["skillPower"]
- local skillDamage = getattrinfo(caster, "skillDamage")
- local skillDamageAdd = getattrinfo(caster, "skillDamageAdd")
- local attAdd = GetSkillAttributeDamage(paramMap)
- if not attAdd then
- return (rand(minDC, maxDC) + skillPower - (armor / 2)) * (1 + skillDamage) + skillDamageAdd
- end
- return (rand(minDC, maxDC) + (skillPower + attAdd[1]) * (1 + attAdd[2] / 10000) - (armor / 2)) * (1 + skillDamage) +
- skillDamageAdd
- end
- ---------------------------玩家攻击怪物(1)物理系(1)技能攻击(2)幸运一击(2)---------------------------
- function XinYunYiJi1122(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- -- 基础伤害={[(人物最大攻击力+技能攻击力)-(怪物防御力/2)]*技能攻击力系数+技能攻击力增加具体数值}*幸运一击攻击力加成系数+幸运一击攻击力加成具体数值
- local maxDC = getplaydef(caster, "@pf_g_maxDC")
- local armor = getattrinfo(target, "armor")
- local pf_globalData = getplaydef(caster, "@pf_globalData")
- local skillPower = pf_globalData["skillPower"]
- local skillDamage = getattrinfo(caster, "skillDamage")
- local skillDamageAdd = getattrinfo(caster, "skillDamageAdd")
- local criticalDamageBonus = getattrinfo(caster, "criticalDamageBonus")
- local criticalDamageAdd = getattrinfo(caster, "criticalDamageAdd")
- local attAdd = GetSkillAttributeDamage(paramMap)
- if not attAdd then
- return ((maxDC + skillPower - armor / 2) * (skillDamage + 1) + skillDamageAdd) * (1 + criticalDamageBonus) +
- criticalDamageAdd
- end
- return ((maxDC + (skillPower + attAdd[1]) * (1 + attAdd[2] / 10000) - armor / 2) * (skillDamage + 1) +
- skillDamageAdd) * (1 + criticalDamageBonus) + criticalDamageAdd
- end
- ---------------------------玩家攻击怪物(1)物理系(1)技能攻击(2)卓越一击(3)---------------------------
- function ZhuoYueYiJi1123(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- -- 基础伤害={[(人物最大攻击力+技能攻击力)-(怪物防御力/2)]*技能攻击力系数+技能攻击力增加具体数值}*卓越一击攻击力加成系数+卓越一击攻击力加成具体数值
- local maxDC = getplaydef(caster, "@pf_g_maxDC")
- local armor = getattrinfo(target, "armor")
- local pf_globalData = getplaydef(caster, "@pf_globalData")
- local skillPower = pf_globalData["skillPower"]
- local skillDamage = getattrinfo(caster, "skillDamage")
- local skillDamageAdd = getattrinfo(caster, "skillDamageAdd")
- local excellentDamageBonus = getattrinfo(caster, "excellentDamageBonus")
- local excellentDamageAdd = getattrinfo(caster, "excellentDamageAdd")
- local attAdd = GetSkillAttributeDamage(paramMap)
- if not attAdd then
- return ((maxDC + skillPower - armor / 2) * (skillDamage + 1) + skillDamageAdd) * (1 + excellentDamageBonus) +
- excellentDamageAdd
- end
- return ((maxDC + (skillPower + attAdd[1]) * (1 + attAdd[2] / 10000) - armor / 2) * (skillDamage + 1) +
- skillDamageAdd) * (1 + excellentDamageBonus) + excellentDamageAdd
- end
- ---------------------------玩家攻击怪物(1)物理系(1)技能攻击(2)无视防御攻击(4)---------------------------
- function WuShiFangYu1124(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- local retDamage = 0
- local ignoringIncreasedDefenseDamage = getattrinfo(caster, "ignoringIncreasedDefenseDamage")
- if IsZhuoYueYiJiPF(paramMap) then
- local zhuo_yue_damage = ZhuoYueYiJi11243(paramMap)
- retDamage = zhuo_yue_damage * (1 + ignoringIncreasedDefenseDamage)
- elseif IsXingYunYiJiPF(paramMap) then
- local lucky_damage = XinYunYiJi11242(paramMap)
- retDamage = lucky_damage * (1 + ignoringIncreasedDefenseDamage)
- else
- local normal_damage = YiBanGongJi11241(paramMap)
- retDamage = normal_damage * (1 + ignoringIncreasedDefenseDamage)
- end
- return retDamage
- end
- ---------------------------玩家攻击怪物(1)物理系(1)技能攻击(2)无视防御(4)一般攻击(1)---------------------------
- function YiBanGongJi11241(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- -- 基础伤害={[(人物最小攻击力~人物最大攻击力)+技能攻击力]*技能攻击力系数+技能攻击力增加具体数值}
- local maxDC = getplaydef(caster, "@pf_g_maxDC")
- local minDC = getplaydef(caster, "@pf_g_minDC")
- local pf_globalData = getplaydef(caster, "@pf_globalData")
- local skillPower = pf_globalData["skillPower"]
- local armor = getattrinfo(target, "armor")
- local skillDamage = getattrinfo(caster, "skillDamage")
- local skillDamageAdd = getattrinfo(caster, "skillDamageAdd")
- local attAdd = GetSkillAttributeDamage(paramMap)
- if not attAdd then
- return (rand(minDC, maxDC) + skillPower) * (1 + skillDamage) + skillDamageAdd
- end
- return (rand(minDC, maxDC) + (skillPower + attAdd[1]) * (1 + attAdd[2] / 10000)) * (1 + skillDamage) +
- skillDamageAdd
- end
- ---------------------------玩家攻击怪物(1)物理系(1)技能攻击(2)无视防御(4)幸运一击(2)---------------------------
- function XinYunYiJi11242(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- -- 基础伤害={[(人物最大攻击力+技能攻击力)*技能攻击力系数+技能攻击力增加具体数值]*幸运一击攻击力加成系数+幸运一击攻击力加成具体数值}
- local maxDC = getplaydef(caster, "@pf_g_maxDC")
- local pf_globalData = getplaydef(caster, "@pf_globalData")
- local skillPower = pf_globalData["skillPower"]
- local skillDamage = getattrinfo(caster, "skillDamage")
- local skillDamageAdd = getattrinfo(caster, "skillDamageAdd")
- local criticalDamageBonus = getattrinfo(caster, "criticalDamageBonus")
- local criticalDamageAdd = getattrinfo(caster, "criticalDamageAdd")
- local attAdd = GetSkillAttributeDamage(paramMap)
- if not attAdd then
- return ((maxDC + skillPower) * (skillDamage + 1) + skillDamageAdd) * (1 + criticalDamageBonus) +
- criticalDamageAdd
- end
- return ((maxDC + (skillPower + attAdd[1]) * (1 + attAdd[2] / 10000)) * (skillDamage + 1) + skillDamageAdd) *
- (1 + criticalDamageBonus) + criticalDamageAdd
- end
- ---------------------------玩家攻击怪物(1)物理系(1)技能攻击(2)无视防御(4)卓越一击(3)---------------------------
- function ZhuoYueYiJi11243(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- -- 基础伤害={[(人物最大攻击力+技能攻击力)*技能攻击力系数+技能攻击力增加具体数值]*卓越一击攻击力加成系数+卓越一击攻击力加成具体数值
- local maxDC = getplaydef(caster, "@pf_g_maxDC")
- local pf_globalData = getplaydef(caster, "@pf_globalData")
- local skillPower = pf_globalData["skillPower"]
- local skillDamage = getattrinfo(caster, "skillDamage")
- local skillDamageAdd = getattrinfo(caster, "skillDamageAdd")
- local excellentDamageBonus = getattrinfo(caster, "excellentDamageBonus")
- local excellentDamageAdd = getattrinfo(caster, "excellentDamageAdd")
- local attAdd = GetSkillAttributeDamage(paramMap)
- if not attAdd then
- return ((maxDC + skillPower) * (skillDamage + 1) + skillDamageAdd) * (1 + excellentDamageBonus) +
- excellentDamageAdd
- end
- return ((maxDC + (skillPower + attAdd[1]) * (1 + attAdd[2] / 10000)) * (skillDamage + 1) + skillDamageAdd) *
- (1 + excellentDamageBonus) + excellentDamageAdd
- end
- -- 玩家普通攻击
- function PlayerNormalAttackPF(paramMap)
- local retDamage = 0
- if IsShuangBeiYiJiPF(paramMap) then
- retDamage = ShuangBeiYiJi1115(paramMap)
- elseif IsWuShiFangYuPF(paramMap) then
- retDamage = WuShiFangYu11154(paramMap)
- elseif IsZhuoYueYiJiPF(paramMap) then
- retDamage = ZhuoYueYiJi1113(paramMap)
- elseif IsXingYunYiJiPF(paramMap) then
- retDamage = XinYunYiJi1112(paramMap)
- else
- retDamage = YiBanGongJi1111(paramMap)
- end
- return retDamage
- end
- ---------------------------玩家攻击怪物(1)物理系(1)普通攻击(1)双倍一击(5)---------------------------
- function ShuangBeiYiJi1115(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- local retDamage = 0
- local doubleDamageBonus = getattrinfo(caster, "doubleDamageBonus")
- if IsWuShiFangYuPF(paramMap) then
- local ignore_defense_damage = WuShiFangYu11154(paramMap)
- retDamage = ignore_defense_damage * (1 + doubleDamageBonus)
- elseif IsZhuoYueYiJiPF(paramMap) then
- local zhuo_yue_damage = ZhuoYueYiJi1113(paramMap)
- retDamage = zhuo_yue_damage * (1 + doubleDamageBonus)
- elseif IsXingYunYiJiPF(paramMap) then
- local lucky_damage = XinYunYiJi1112(paramMap)
- retDamage = lucky_damage * (1 + doubleDamageBonus)
- else
- local normal_damage = YiBanGongJi1111(paramMap)
- retDamage = normal_damage * (1 + doubleDamageBonus)
- end
- return retDamage
- end
- ---------------------------玩家攻击怪物(1)物理系(1)普通攻击(1)一般攻击(1)---------------------------
- function YiBanGongJi1111(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- -- 基础伤害=(人物最小攻击力~人物最大攻击力)-(怪物防御力/2)
- local maxDC = getplaydef(caster, "@pf_g_maxDC")
- local minDC = getplaydef(caster, "@pf_g_minDC")
- local armor = getattrinfo(target, "armor")
- return rand(minDC, maxDC) - armor / 2
- end
- --------------------------玩家攻击怪物(1)物理系(1)普通攻击(1)幸运一击(2)---------------------------
- function XinYunYiJi1112(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- -- 基础伤害=[人物最大攻击力-(怪物防御力/2)]*幸运一击攻击力加成系数+幸运一击攻击力加成具体数值
- local maxDC = getplaydef(caster, "@pf_g_maxDC")
- local armor = getattrinfo(target, "armor")
- local criticalDamageBonus = getattrinfo(caster, "criticalDamageBonus")
- local criticalDamageAdd = getattrinfo(caster, "criticalDamageAdd")
- return (maxDC - armor / 2) * (criticalDamageBonus + 1) + criticalDamageAdd
- end
- --------------------------玩家攻击怪物(1)物理系(1)普通攻击(1)卓越一击(3)---------------------------
- function ZhuoYueYiJi1113(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- -- 基础伤害=[人物最大攻击力-(怪物防御力/2)]*卓越一击攻击力加成系数+卓越一击攻击力加成具体数值
- local maxDC = getplaydef(caster, "@pf_g_maxDC")
- local armor = getattrinfo(target, "armor")
- local excellentDamageBonus = getattrinfo(caster, "excellentDamageBonus")
- local excellentDamageAdd = getattrinfo(caster, "excellentDamageAdd")
- return (maxDC - armor / 2) * (excellentDamageBonus + 1) + excellentDamageAdd
- end
- ---------------------------玩家攻击怪物(1)物理系(1)普通攻击(1)双倍一击(5)无视防御攻击(4)---------------------------
- function WuShiFangYu11154(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- local retDamage = 0
- local ignoringIncreasedDefenseDamage = getattrinfo(caster, "ignoringIncreasedDefenseDamage")
- if IsZhuoYueYiJiPF(paramMap) then
- local zhuo_yue_damage = ZhuoYueYiJi11143(paramMap)
- retDamage = zhuo_yue_damage * (1 + ignoringIncreasedDefenseDamage)
- elseif IsXingYunYiJiPF(paramMap) then
- local lucky_damage = XinYunYiJi11142(paramMap)
- retDamage = lucky_damage * (1 + ignoringIncreasedDefenseDamage)
- else
- local normal_damage = YiBanGongJi11141(paramMap)
- retDamage = normal_damage * (1 + ignoringIncreasedDefenseDamage)
- end
- return retDamage
- end
- ---------------------------玩家攻击怪物(1)物理系(1)普通攻击(1)无视防御(4)一般攻击(1)---------------------------
- function YiBanGongJi11141(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- local maxDC = getplaydef(caster, "@pf_g_maxDC")
- local minDC = getplaydef(caster, "@pf_g_minDC")
- -- 基础伤害=(人物最小攻击力~人物最大攻击力)
- return rand(minDC, maxDC)
- end
- ---------------------------玩家攻击怪物(1)物理系(1)普通攻击(1)无视防御(4)幸运一击(2)---------------------------
- function XinYunYiJi11142(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- -- 基础伤害=(人物最大攻击力*幸运一击攻击力加成系数+幸运一击攻击力加成具体数值)
- local maxDC = getplaydef(caster, "@pf_g_maxDC")
- local criticalDamageBonus = getattrinfo(caster, "criticalDamageBonus")
- local criticalDamageAdd = getattrinfo(caster, "criticalDamageAdd")
- return maxDC * (criticalDamageBonus + 1) + criticalDamageAdd
- end
- ---------------------------玩家攻击怪物(1)物理系(1)普通攻击(1)无视防御(4)卓越一击(3)---------------------------
- function ZhuoYueYiJi11143(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- -- 基础伤害=(人物最大攻击力*卓越一击攻击力加成系数+卓越一击攻击力加成具体数值)
- local maxDC = getplaydef(caster, "@pf_g_maxDC")
- local excellentDamageBonus = getattrinfo(caster, "excellentDamageBonus")
- local excellentDamageAdd = getattrinfo(caster, "excellentDamageAdd")
- return maxDC * (excellentDamageBonus + 1) + excellentDamageAdd
- end
- -- 攻击miss
- function MissPF(paramMap)
- local caster = paramMap["caster"]
- local pf_globalData = getplaydef(caster, "@pf_globalData")
- local result = pf_globalData["result"]
- result["casthurt"] = 0
- result["targethurt"] = 0
- result["castershield"] = 0
- result["targetshield"] = 0
- result["hurttype"] = 108
- result["repeat"] = 1
- setplaydef(caster, "@pf_globalData", pf_globalData)
- end
- -- 获取技能攻击力
- function GetAtkPowerPF(actor, skillId)
- local injuryType = tonumber(ConfigDataManager.getTableValue("cfg_skill_info", "injuryType", "skillID", skillId))
- local minDC = getattrinfo(actor, "minDC")
- local maxDC = getattrinfo(actor, "maxDC")
- local career = tonumber(getbaseinfo(actor, "getbasecareer"))
- if injuryType == 1 then
- -- 物理攻击
- if career == 1 then
- -- 战士
- local weaponList = GetWeaponListPF(actor)
- local weaponType = GetWeaponTypePF(actor, weaponList)
- if weaponType == 1 then
- return ZhanShiChuLi1BaWuQiPF(actor, weaponList)
- elseif weaponType == 2 then
- return ZhanShiChuLi2BaWuQiPF(actor, weaponList)
- end
- end
- elseif injuryType == 2 then
- -- 魔法攻击
- return MoFaDCPF(actor)
- elseif injuryType == 3 then
- -- 诅咒攻击
- return ZuZhouDCPF(actor)
- end
- local ret = {minDC, maxDC}
- return ret
- end
- -- 诅咒系攻击力计算
- function ZuZhouDCPF(actor)
- local pf_globalData = getplaydef(actor, "@pf_globalData")
- local skillId = pf_globalData["skillId"]
- local skillLevel = pf_globalData["skillLevel"]
- local minZC = getattrinfo(actor, "minimumCurseAttackPower")
- local maxZC = getattrinfo(actor, "maximumCurseAttackPower")
- local skillPower
- if skillId > 0 and skillLevel > 0 then
- skillPower = ConfigDataManager.getTableValue('cfg_skill_info', 'skillpower', 'skillid', skillId, 'skilllevel', skillLevel)
- skillPower = tonumber(skillPower)
- skillPower = skillPower or 0
- end
- local levelMC = getattrinfo(actor, "levelmc")
- -- 计算卓越魔法攻击力
- local zhuoYueMoFaDC = getattrinfo(actor, "levelmc") + getattrinfo(actor, "attackIncreaseMc")
- local enchantmentCurseAttackPowerBonus = getattrinfo(actor, "enchantmentCurseAttackPowerBonus")
- local curseStaffAttackPowerBonus = getattrinfo(actor, "curseStaffAttackPowerBonus")
- local retMinMC = (minZC + skillPower + levelMC / 20) * (1 + zhuoYueMoFaDC * 0.02) *
- (1 + enchantmentCurseAttackPowerBonus / 100) * (1 + curseStaffAttackPowerBonus / 100)
- local retMaxMC = (maxZC + skillPower + levelMC / 20) * (1 + zhuoYueMoFaDC * 0.02) *
- (1 + enchantmentCurseAttackPowerBonus / 100) * (1 + curseStaffAttackPowerBonus / 100)
- local ret = {retMinMC, retMaxMC}
- return ret
- end
- -- 魔法系攻击力计算
- function MoFaDCPF(actor)
- local pf_globalData = getplaydef(actor, "@pf_globalData")
- local skillId = pf_globalData["skillId"]
- local skillLevel = pf_globalData["skillLevel"]
- local minMC = getattrinfo(actor, "minMC")
- local maxMC = getattrinfo(actor, "maxMC")
- local skillPower
- if skillId > 0 and skillLevel > 0 then
- skillPower = ConfigDataManager.getTableValue('cfg_skill_info', 'skillpower', 'skillid', skillId, 'skilllevel', skillLevel)
- skillPower = tonumber(skillPower)
- skillPower = skillPower or 0
- end
- local magicAttackPowerValue = getattrinfo(actor, "magicattackpowervalue")
- local levelMC = getattrinfo(actor, "levelmc")
- -- 计算卓越魔法攻击力
- local zhuoYueMoFaDC = getattrinfo(actor, "levelmc") + getattrinfo(actor, "attackIncreaseMc")
- local enchantmentCurseAttackPowerBonus = getattrinfo(actor, "enchantmentCurseAttackPowerBonus")
- local wandMagicAttackPowerBonus = getattrinfo(actor, "wandMagicAttackPowerBonus")
- local retMinMC = (minMC + skillPower + magicAttackPowerValue + levelMC / 20) * (1 + zhuoYueMoFaDC * 0.02) *
- (1 + enchantmentCurseAttackPowerBonus / 100) * (1 + wandMagicAttackPowerBonus / 100)
- local retMaxMC = (maxMC + skillPower + magicAttackPowerValue + levelMC / 20) * (1 + zhuoYueMoFaDC * 0.02) *
- (1 + enchantmentCurseAttackPowerBonus / 100) * (1 + wandMagicAttackPowerBonus / 100)
- local ret = {retMinMC, retMaxMC}
- return ret
- end
- -- 战士_处理1把武器或者盾牌
- function ZhanShiChuLi1BaWuQiPF(actor, weaponList)
- local weapon = weaponList[1]
- local basicAttr = weapon["basicattr"]
- local minDCId = attrname2id("minDC")
- local maxDCId = attrname2id("maxDC")
- local minDC = getattrinfo(actor, "minDC")
- local maxDC = getattrinfo(actor, "maxDC")
- local weaponMinDC = FindAttrValuePF(basicAttr, minDCId)
- local weaponMaxDC = FindAttrValuePF(basicAttr, maxDCId)
- local levelDC = getattrinfo(actor, "levelDc")
- local powerValue = getattrinfo(actor, "levelDc")
- local attackBonusDC = getattrinfo(actor, "attackBonusDc")
- local zhuoYueDC = CalcuZhuoYueDCPF(actor)
- local retMinDC = (minDC + weaponMinDC + levelDC / 20 + powerValue) * (1 + zhuoYueDC * 0.02) *
- (1 + attackBonusDC / 100)
- local retMaxDC = (maxDC + weaponMaxDC + levelDC / 20 + powerValue) * (1 + zhuoYueDC * 0.02) *
- (1 + attackBonusDC / 100)
- local ret = {retMinDC, retMaxDC}
- return ret
- end
- -- 战士_处理2把单手武器
- function ZhanShiChuLi2BaWuQiPF(actor, weaponList)
- local left = weaponList[1]
- local right = weaponList[2]
- local leftBasicAttr = left["basicattr"]
- local rightBasicAttr = right["basicattr"]
- local minDCId = attrname2id("minDC")
- local maxDCId = attrname2id("maxDC")
- local minDC = getattrinfo(actor, "minDC")
- local maxDC = getattrinfo(actor, "maxDC")
- local leftMinDC = FindAttrValuePF(leftBasicAttr, minDCId)
- local leftMaxDC = FindAttrValuePF(leftBasicAttr, maxDCId)
- local rightMinDC = FindAttrValuePF(rightBasicAttr, minDCId)
- local rightMaxDC = FindAttrValuePF(rightBasicAttr, maxDC)
- local levelDC = getattrinfo(actor, "levelDc")
- local powerValue = getattrinfo(actor, "levelDc")
- local attackBonusDC = getattrinfo(actor, "attackBonusDc")
- local zhuoYueDC = CalcuZhuoYueDCPF(actor)
- local retMinDC = (minDC * 2 + leftMinDC + rightMinDC + levelDC / 20 * 2 + powerValue * 2) * (1 + zhuoYueDC * 0.02) *
- (1 + attackBonusDC / 100) * 0.55
- local retMaxDC = (maxDC * 2 + leftMaxDC + rightMaxDC + levelDC / 20 * 2 + powerValue * 2) * (1 + zhuoYueDC * 0.02) *
- (1 + attackBonusDC / 100) * 0.55
- local ret = {retMinDC, retMaxDC}
- return ret
- end
- -- 计算卓越攻击力
- function CalcuZhuoYueDCPF(actor)
- local value = getattrinfo(actor, "levelDc") + getattrinfo(actor, "attackBonusDc")
- end
- function FindAttrValuePF(attrList, attrId)
- if #attrList <= 0 then
- return 0
- end
- for index, attrMap in ipairs(attrList) do
- local id = tonumber(attrMap["attrid"])
- local value = tonumber(attrMap["value"])
- if id == attrId then
- return value
- end
- end
- return 0
- end
- -- 获取武器列表
- function GetWeaponListPF(actor)
- local retData = {}
- local allEquipInfo = getputonequipinfo(actor)
- for index, equipInfo in ipairs(allEquipInfo) do
- local cfgId = equipInfo["cfgid"]
- local strPart = tonumber(ConfigDataManager.getTableValue('cfg_item', 'strpart', 'id', cfgId))
- if strPart == 1 or strPart == 2 or strPart == 3 then
- table.insert(retData, equipInfo)
- end
- end
- return retData
- end
- function GetWeaponTypePF(actor, weaponList)
- local ret = 0
- local count = #weaponList
- if count == 1 then
- ret = 1
- elseif count == 2 then
- local weapon1 = weaponList[1]
- local weapon2 = weaponList[2]
- local weapon1CfgId = weapon1["cfgid"]
- local weapon2CfgId = weapon2["cfgid"]
- local ok1 = IsZhuFuShouWeapon(weapon1CfgId)
- local ok2 = IsZhuFuShouWeapon(weapon2CfgId)
- if ok1 == 1 or ok2 == 1 then
- return 2
- else
- return 1
- end
- end
- end
- -- 是否是主副手武器
- function IsZhuFuShouWeapon(cfg_id)
- local type = tonumber(ConfigDataManager.getTableValue('cfg_item', 'type', 'id', cfg_id))
- local sub_type = tonumber(ConfigDataManager.getTableValue('cfg_item', 'subtype', 'id', cfg_id))
- if type == 1 and sub_type == 3 then
- return 1
- else
- return 0
- end
- end
- function IsShuangBeiYiJiPF(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- local doubleDamageChance = getattrinfo(caster, "doubleDamageChance")
- local doubleDamageResistanceChance = getattrinfo(target, "doubleDamageResistanceChance")
- local chance = max(0, doubleDamageChance - doubleDamageResistanceChance)
- local randomFloat = math.random()
- local pf_globalData = getplaydef(caster, "@pf_globalData")
- if chance > randomFloat then
- pf_globalData["shuangBeiYiJi"] = "1"
- pf_globalData["yiBanGongJi"] = "0"
- setplaydef(caster, "@pf_globalData", pf_globalData)
- return true
- else
- return false
- end
- end
- function IsWuShiFangYuPF(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- local unMissRate = getattrinfo(caster, "unMissRate")
- local unMissResistanceRate = getattrinfo(target, "unMissResistanceRate")
- local chance = max(0, unMissRate - unMissResistanceRate)
- local randomFloat = math.random()
- local pf_globalData = getplaydef(caster, "@pf_globalData")
- if chance > randomFloat then
- pf_globalData["wuShiFangYu"] = "1"
- pf_globalData["yiBanGongJi"] = "0"
- setplaydef(caster, "@pf_globalData", pf_globalData)
- return true
- else
- return false
- end
- end
- function IsZhuoYueYiJiPF(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- local excellentDamageChance = getattrinfo(caster, "excellentDamageChance")
- local excellentDamageResistanceChance = getattrinfo(target, "excellentDamageResistanceChance")
- local chance = max(0, excellentDamageChance - excellentDamageResistanceChance)
- local randomFloat = math.random()
- local pf_globalData = getplaydef(caster, "@pf_globalData")
- if chance > randomFloat then
- pf_globalData["zhuoYueYiJi"] = "1"
- pf_globalData["yiBanGongJi"] = "0"
- setplaydef(caster, "@pf_globalData", pf_globalData)
- return true
- else
- return false
- end
- end
- function IsXingYunYiJiPF(paramMap)
- local caster = paramMap["caster"]
- local target = paramMap["target"]
- local criticalDamageChance = getattrinfo(caster, "criticalDamageChance")
- local criticalDamageResistanceChance = getattrinfo(target, "criticalDamageResistanceChance")
- local chance = max(0, criticalDamageChance - criticalDamageResistanceChance)
- local randomFloat = math.random()
- local pf_globalData = getplaydef(caster, "@pf_globalData")
- if chance > randomFloat then
- pf_globalData["xinYunYiJi"] = "1"
- pf_globalData["yiBanGongJi"] = "0"
- setplaydef(caster, "@pf_globalData", pf_globalData)
- return true
- else
- return false
- end
- end
- ---玩家战斗触发
- function PlayerFight.AttackTrigger(actor,fightRet)
- this.UpdateFightTask(actor,fightRet)
- end
- ---更新战斗相关任务
- function this.UpdateFightTask(actor,fightRet)
- local taskCfgList = ConfigDataManager.getTable("cfg_task_target", "taskgoaltype",TaskTargetType.HURT_MAP_MONSTER)
- if table.isNullOrEmpty(taskCfgList) then
- return
- end
- local targetHurt = tonumber(fightRet["targethurt"])
- local mapCfgId = tonumber(fightRet["mapcfgid"])
- local targetCfgId = tonumber(fightRet["targetcfgid"])
- local flush = false
- for _, taskCfg in pairs(taskCfgList) do
- local monsterLimit = tonumber(taskCfg["taskgoalparam"])
- local mapLimit = tonumber(taskCfg["taskgoalparam2"])
- if targetCfgId == monsterLimit and mapCfgId == mapLimit then
- flush = true
- break
- end
- end
- -- 触发刷新任务
- if flush then
- local taskParam = {
- monsterid = targetCfgId,
- mapid = mapCfgId,
- hurt = targetHurt
- }
- -- 触发任务目标
- TaskHandler.TriggerTaskGoal(actor, TaskTargetType.HURT_MAP_MONSTER, taskParam)
- end
- end
|