--[[ * File name: battleAiAssistSkillEvaluate.lua * Version: * Author: sky * Date time: 2023-06-27 10:29:27 * Copyright (C) 2023. * Description: 辅助技能AI评分 --]] local battleAdapt = require "adapt.battleAdapt" local battleLog = require "battle.battleLog" local battleConst = require "battle.battleConst" ---------------------------------------- -- 评分方法的匹配 local _StAiAssistSkillMatching = {} local AiAssistSkillMatching = setmetatable( _StAiAssistSkillMatching, { __index = function(self, key) -- print(tostring(self)) local funcName = string.format("getAiAssiSkillEvaluate%s", key) local func = self.funcs[funcName] if func then return func else return self.funcs.getAiAssiSkillEvaluateCommon end end } ) ------------------------------------------------------------ -- 评分功能 local funcs = {} _StAiAssistSkillMatching.funcs = funcs ------------------------------------------------------------ -- 辅助技能, AI评分类. local root = {} function root:getAiAssistSkillConfig(core, skillInfo) local skillConfig = battleAdapt:getSkillByID(skillInfo.skillId or 0) if skillConfig and skillConfig and #skillConfig.effectGroup > 0 then for _, effectId in ipairs(skillConfig.effectGroup) do local assistSkillConfig = battleAdapt:getAssistByEffectID(effectId) if assistSkillConfig and (assistSkillConfig.params1 and not assistSkillConfig.params1.buffId) then return assistSkillConfig end end end end function root:getAiAssistSkillEvaluate(core, actionCastle, skillInfo, params) local assistSkillLevel = skillInfo.newHeroAssistSkillLevel if not assistSkillLevel or assistSkillLevel <= 0 then return 0 end local assistSkillConfig = self:getAiAssistSkillConfig(core, skillInfo) if not assistSkillConfig then return 0 end return AiAssistSkillMatching[(skillInfo or {}).skillId or 0]( _StAiAssistSkillMatching.funcs, core, skillInfo, params, assistSkillConfig ) end ------------------------------------------------------------ -- 通用评分 function funcs:getAiAssiSkillEvaluateCommon(core, skillInfo, params, assistSkillConfig) local newHeroAttack = params.newHeroAttack return newHeroAttack * 0.65 end -- 辅助技能评价 - 清茗 - 2221 范围伤害:对被攻击英雄周围9格子总共造成X倍基础战力 -- 公式: if:对面英雄数量>0,0.25*技能色块战力*75%, else 0 function funcs:getAiAssiSkillEvaluate2221(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {ex={damageNums=0.25}}, local enemyHeroCount = params.enemyHeroCount -- 敌方英雄个数; if enemyHeroCount > 0 then local skillBase = skillInfo.skillBase return math.floor(assistSkillConfig[parValue].ex.damageNums * skillBase * 0.75) end return 0 end -- 辅助技能评价 - 汤圆 - 1221 群治疗:落点周围8格的英雄总共提升X倍基础战力 -- 公式: if:我方英雄数量>0,0.25*技能色块战力*75%, else 0 function funcs:getAiAssiSkillEvaluate1221(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {ex={upNums=0.25}}, local enemyHeroCount = params.enemyHeroCount -- 敌方英雄个数; if enemyHeroCount > 0 then local skillBase = skillInfo.skillBase return math.floor(assistSkillConfig[parValue].ex.upNums * skillBase * 0.75) end return 0 end -- 辅助技能评价 - 穗穗 - 4221 迷雾加防:在迷雾内的英雄受到伤害减伤X% -- 公式: 英雄总战力*25%*50% function funcs:getAiAssiSkillEvaluate4221(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {defendPercent=10}, local selfHeroTotalEv = params.selfHeroTotalEv return math.floor(assistSkillConfig[parValue].defendPercent * selfHeroTotalEv * 0.25 * 0.5) end -- 辅助技能评价 - 絮絮 - 3221 护甲强化:受到伤害降低增加到X% -- 公式: 生成英雄战力*5%*65% function funcs:getAiAssiSkillEvaluate3221(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {defendPercent=55}, local newHeroAttack = params.newHeroAttack return math.floor(assistSkillConfig[parValue].defendPercent * newHeroAttack * 0.05) end -- 辅助技能评价 - 颠颠 - 2231 群伤害:对敌方最低英雄战力英雄周围9格总共造成X倍基础战力 -- 公式: if:对面英雄数量>0,0.25*技能色块战力*75%, else 0 function funcs:getAiAssiSkillEvaluate2231(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {ex={damageNums=0.25}}, local enemyHeroCount = params.enemyHeroCount if enemyHeroCount > 0 then local skillBase = skillInfo.skillBase return math.floor(assistSkillConfig[parValue].ex.damageNums * skillBase * 0.75) end return 0 end -- 辅助技能评价 - 念想 - 1231 战力提升量增加到X倍基础战力 -- 公式: 0.25*技能色块战力*100% function funcs:getAiAssiSkillEvaluate1231(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {upNums=1.25}, local skillBase = skillInfo.skillBase return math.floor(assistSkillConfig[parValue].upNums * skillBase * 1) end -- 辅助技能评价 - 奎 - 4231 色块额外提供X%的基础战力 -- 公式: 0.25*技能色块战力*100% function funcs:getAiAssiSkillEvaluate4231(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {upNums=1.25}, local skillBase = skillInfo.skillBase return math.floor(assistSkillConfig[parValue].upNums * skillBase * 1) end -- 辅助技能评价 - 眠眠 - 3231 囚禁加伤:造成X%英雄战力伤害 -- 公式: 敌方最弱英雄战力*20%*75% function funcs:getAiAssiSkillEvaluate3231(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {ex={damagePercent=20}}, -- 最弱的敌人 local enemyHeroList = params.enemyHeroList local selfHeroLowestEv = 0 if #enemyHeroList > 0 and enemyHeroList[1] then selfHeroLowestEv = self:getHeroEvaluate(core, enemyHeroList[1]) or 0 end return math.floor(assistSkillConfig[parValue].ex.damagePercent * selfHeroLowestEv * 0.01 * 0.75) end -- 辅助技能评价 - 晴色 - 2241 额外燃烧敌人3个格子,消除时会造成基地X倍基础战力伤害 -- 公式: 3*0.25%*技能色块战力*50% function funcs:getAiAssiSkillEvaluate2241(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {damageNums=1}, local skillBase = skillInfo.skillBase return math.floor(assistSkillConfig[parValue].damageNums * 3 * skillBase * 0.5) end -- 辅助技能评价 - 鸢萝 - 1241 伤害加强:对基地造成伤害提升为X% -- 公式: if 对面英雄数量=1,13%*敌方英雄战力*50%,else 0 function funcs:getAiAssiSkillEvaluate1241(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {ex={damagePercent=63}}, local enemyHeroCount = params.enemyHeroCount if enemyHeroCount == 1 then local enemyHeroTotalEv = params.enemyHeroTotalEv return math.floor(assistSkillConfig[parValue].ex.damagePercent * 0.01 * enemyHeroTotalEv * 0.5) end return 0 end -- 辅助技能评价 - 阿空 - 4241 生成强化:生成的英雄战力加强X% -- 公式: 0.2*技能色块战力*3*100% function funcs:getAiAssiSkillEvaluate4241(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {heroLiveNums=1.2}, local skillBase = skillInfo.skillBase return math.floor(assistSkillConfig[parValue].heroLiveNums * skillBase * 3 * 0.2) end -- 辅助技能评价 - 象琪 - 3241 消除加强:使用主技能,该回合结束后扣除对面基地血量本回合消除色块数*X%的基础战力 -- 公式: 13*(0.1)*技能色块战力*50% function funcs:getAiAssiSkillEvaluate3241(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {damageNums=0.1}, local skillBase = skillInfo.skillBase return math.floor(assistSkillConfig[parValue].damageNums * 13 * skillBase * 0.5) end -- 辅助技能评价 - 绮罗 - 2251 电弧反弹:自身受到的伤害减免X%,反射伤害增加Y% -- 公式: 效果英雄战力*(5%)*75%+效果英雄战力*(5%)*75% function funcs:getAiAssiSkillEvaluate2251(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {damagePercent=55}, local newHeroAttack = params.newHeroAttack return math.floor( (assistSkillConfig[parValue].damagePercent * newHeroAttack * 0.75) + (assistSkillConfig[parValue].damagePercent * newHeroAttack * 0.75) ) end -- 辅助技能评价 - 风月 - 1251 属性窃取:下降拉取英雄的50%英雄战力,提升自己X倍的倍拉取英雄下降的英雄战力 -- 公式: max{(敌方所有英雄战力总和-我方所有英雄战力总和),0}*(1.5*0.5-0.5)*50% function funcs:getAiAssiSkillEvaluate1251(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {ex={damagePercent=50,upX=1.5}}, local enemyHeroTotalEv = params.enemyHeroTotalEv local selfHeroTotalEv = params.selfHeroTotalEv return math.floor( max(enemyHeroTotalEv - selfHeroTotalEv, 0) * (assistSkillConfig[parValue].ex.upX * 0.5 - 0.5) * 0.5 ) end -- 辅助技能评价 - 凛凛 - 4251 绝对领域:封锁区域内英雄buff不会触发,并造成X倍英雄基础战力伤害 -- 公式: 1*技能色块战力*75% function funcs:getAiAssiSkillEvaluate4251(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {damageNums = 1}, local skillBase = skillInfo.skillBase return math.floor(assistSkillConfig[parValue].damageNums * skillBase * 0.75) end -- 辅助技能评价 - 常明 - 3251 生命转化:将免疫期间主角受到的攻击值的%s转化为主角的血量恢复 -- 公式: 预估敌方下回合伤害基地 = (max(敌方总战力-我方总战力, 0) + 5*敌方平均卡牌战力) - 我方总战力 -- if 预估敌方下回合伤害基地>0, 预估敌方下回合伤害基地*20%*50%,else 0 function funcs:getAiAssiSkillEvaluate3251(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {percent=20}, local enemyHeroTotalEv = params.enemyHeroTotalEv local selfHeroTotalEv = params.selfHeroTotalEv local enemyAverageBaseAttack = params.enemyAverageBaseAttack local ve = (max(enemyHeroTotalEv - selfHeroTotalEv, 0) + 5 * enemyAverageBaseAttack) - selfHeroTotalEv if ve > 0 then return math.floor(assistSkillConfig[parValue].percent * 0.01 * ve * 0.5) end return 0 end -- 辅助技能评价 - 花椒 - 2261 对方主角对叛变英雄的伤害减少至X% -- 公式: sum(敌方英雄战力*位置系数)*(50-X)% function funcs:getAiAssiSkillEvaluate2261(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {ex={damagePercent=40}}, local enemyHeroTotalEv = params.enemyHeroTotalEv return math.floor((50 - assistSkillConfig[parValue].ex.damagePercent) * enemyHeroTotalEv * 0.01) end -- 辅助技能评价 - 小景 - 1261 分裂的伙伴英雄战力增加至X倍小景基础战力 -- 公式: 0.5*技能色块战力*100% function funcs:getAiAssiSkillEvaluate1261(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {heroLiveNums=1.5}, local skillBase = skillInfo.skillBase return math.floor(assistSkillConfig[parValue].heroLiveNums * skillBase * 1) end -- 辅助技能评价 - 百戏 - 4261 为自身增加1个减伤X%的盾,只抵挡1次,不可叠加 -- 公式: 5*敌方平均卡牌战力*55%*50% function funcs:getAiAssiSkillEvaluate4261(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {defendPercent=55}, local enemyAverageBaseAttack = params.enemyAverageBaseAttack return math.floor(5 * assistSkillConfig[parValue].defendPercent * 0.01 * enemyAverageBaseAttack * 0.5) end -- 辅助技能评价 - 疏雨 - 3261 羁绊:当英雄处于援军召唤状态下,该英雄所受到伤害的%s会被我方的召唤物分担 -- 公式: 20%*英雄基础战力*50% function funcs:getAiAssiSkillEvaluate3261(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {ex={damagePercent=20}}, local baseAttack = params.baseAttack return math.floor(assistSkillConfig[parValue].ex.damagePercent * 0.01 * baseAttack * 0.5) end -- 辅助技能评价 - 金羽 - 2351 主技能生效前为对方召唤X个0.5格战力的单位 -- 公式: 1*0.5*英雄基础战力 function funcs:getAiAssiSkillEvaluate2351(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {num=1}, local baseAttack = params.baseAttack local skillBase = skillInfo.skillBase return math.floor(assistSkillConfig[parValue].num * baseAttack * 0.5) end -- 辅助技能评价 - 盈缺 - 1351 攻击时伤害提升X%,承受伤害增加X% -- 公式: 生成英雄战力*12.5%*75% function funcs:getAiAssiSkillEvaluate1351(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {defendPercent=-12.5}, -- params1 = {ex={damagePercent=112.5}}, local paramsValue = 0 if assistSkillConfig[parValue].ex then paramsValue = assistSkillConfig[parValue].ex.damagePercent else paramsValue = assistSkillConfig[parValue].defendPercent end local newHeroAttack = params.newHeroAttack return math.floor(paramsValue * newHeroAttack * 0.75) end -- 辅助技能评价 - 无情 - 4351 增强加强:吸收队友X%加强自己Y倍吸收的战力值 -- 公式: 除了生成英雄以外的最弱英雄*(1.1*20%-20%)*100% function funcs:getAiAssiSkillEvaluate4351(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {ex={damagePercent=20,upX=1.1}}, -- 最弱的敌人 local enemyHeroList = params.enemyHeroList local enemyHeroLowestEv = 0 if #enemyHeroList > 0 and enemyHeroList[1] then enemyHeroLowestEv = self:getHeroEvaluate(core, enemyHeroList[1]) or 0 end -- 最弱的自己人 local selfHeroList = params.selfHeroList local selfHeroLowestEv = 0 if #selfHeroList > 0 and selfHeroList[1] then selfHeroLowestEv = self:getHeroEvaluate(core, selfHeroList[1]) or 0 end local newHeroAttack = params.newHeroAttack if selfHeroLowestEv == newHeroAttack then if #selfHeroList > 1 and selfHeroList[2] then selfHeroLowestEv = self:getHeroEvaluate(core, selfHeroList[2]) or 0 end end local minHero = min(enemyHeroLowestEv, selfHeroLowestEv) return math.floor( (assistSkillConfig[parValue].ex.upX * assistSkillConfig[parValue].ex.damagePercent - assistSkillConfig[parValue].ex.damagePercent) * minHero * 1 ) end -- 辅助技能评价 - 小青 - 3351 灵魂吸收:吸收我方死亡的英雄战力X% -- 公式: 我方英雄战力(不包括新生成英雄)*20%*100% function funcs:getAiAssiSkillEvaluate3351(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {ex={upPercent=20}}, local newHeroAttack = params.newHeroAttack local selfHeroTotalEv = params.selfHeroTotalEv local ev = max(selfHeroTotalEv - newHeroAttack, 0) return math.floor(assistSkillConfig[parValue].ex.upPercent * 0.01 * ev * 1) end -- 辅助技能评价 - 乔乔 - 2361 吸收消灭英雄的X%战力 -- 公式: 敌方最弱英雄战力*20%*100% function funcs:getAiAssiSkillEvaluate2361(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {ex={percent=20}}, local selfHeroList = params.selfHeroList local selfHeroLowestEv = 0 if #selfHeroList > 0 and selfHeroList[1] then selfHeroLowestEv = self:getHeroEvaluate(core, selfHeroList[1]) or 0 end return math.floor(assistSkillConfig[parValue].ex.percent * 0, 01 * selfHeroLowestEv * 1) end -- 辅助技能评价 - 十里 - 1361 消除加强:使用主技能,回合结束后基地血量恢复本回合消除色块数*10%的基础战力 -- 公式: 10(消除估值)*10%*英雄基础战力*50% function funcs:getAiAssiSkillEvaluate1361(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {upNums=0.1}, local baseAttack = params.baseAttack return math.floor(10 * assistSkillConfig[parValue].upNums * baseAttack * 0.5) end -- 辅助技能评价 - 千两 - 4361 弹弹乐:弹射数量加X,弹射威力为A%、B%、C%、D% -- 公式: 生成英雄战力*25%*75% function funcs:getAiAssiSkillEvaluate4361(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {num=2}, local newHeroAttack = params.newHeroAttack return math.floor(assistSkillConfig[parValue].ex.damageNums * 0.1 * newHeroAttack * 0.75) end -- 辅助技能评价 - 一叶 - 3361 生成强化:生成的英雄战力加强X% -- 公式: 我方平均技能色块战力*3*65%*40% function funcs:getAiAssiSkillEvaluate3361(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {heroLiveNums=1.4}, local averageBaseAttack = params.averageBaseAttack local averageBaseAttack = skillInfo.skillBase return math.floor(3 * assistSkillConfig[parValue].heroLiveNums * averageBaseAttack * 0.65) end -- 辅助技能评价 - 团团 - 2281 每炸毁一个技能,为团团提升%x技能战力的英雄战力 -- 公式: 敌方技能数量*0.5*英雄基础战力*100% function funcs:getAiAssiSkillEvaluate2281(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {upNums=0.5}, local enemyHeroCount = params.enemyHeroCount local baseAttack = params.baseAttack return math.floor(enemyHeroCount * assistSkillConfig[parValue].upNums * baseAttack * 1) end -- 辅助技能评价 - 烧麦 - 1281 持续恢复期间,随机消除X个色块生成英雄,生成新的英雄的战力为1倍技能战力 -- 公式: 1*英雄基础战力*100% function funcs:getAiAssiSkillEvaluate1281(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {num=1}, local baseAttack = params.baseAttack return math.floor(assistSkillConfig[parValue].num * baseAttack * 1) end -- 辅助技能评价 - 猴宝 - 4281 每转移一个技能,己方英雄战力增加%x倍英雄基础战力 -- 公式: 敌方技能数量*0.5*英雄基础战力*100% function funcs:getAiAssiSkillEvaluate4281(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {upNums=0.5}, local enemyHeroCount = params.enemyHeroCount local baseAttack = params.baseAttack return math.floor(enemyHeroCount * assistSkillConfig[parValue].upNums * baseAttack * 1) end -- 辅助技能评价 - 阿呆 - 3281 抵消对方技能效果后,获得X%的怒气值增涨 -- 公式: 己方英雄技能平均收益*10% function funcs:getAiAssiSkillEvaluate3281(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {ex={upPercent=10}}, local averageBaseAttack = params.averageBaseAttack return math.floor(assistSkillConfig[parValue].ex.upPercent * averageBaseAttack * 0.01) end -- 辅助技能评价 - 夜阑 - 2291 能量转化效果提升X%,若该次伤害超过该英雄的X%,则该次攻击变为一击毙命 -- 公式: 生成英雄战力*5%*100% function funcs:getAiAssiSkillEvaluate2291(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {ex={percent=90}}, local newHeroAttack = params.newHeroAttack return math.floor(assistSkillConfig[parValue].ex.damageNums * 0.01 * newHeroAttack * 1) end -- 辅助技能评价 - 桃桃 - 1291 加强效果增强%s -- 公式: 己方英雄总战力*(30-25%)*100% function funcs:getAiAssiSkillEvaluate1291(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {upPercent=30}, local selfHeroTotalEv = params.selfHeroTotalEv return math.floor((assistSkillConfig[parValue].upPercent - 25) * 0.01 * selfHeroTotalEv * 1) end -- 辅助技能评价 - 倒倒 - 4291 每撤退一个英雄,倒倒的攻击力提升%s倍英雄基础战力 -- 公式: count(我方英雄位置!=5)*1*英雄基础战力 function funcs:getAiAssiSkillEvaluate4291(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {ex={upNums=1}}, local selfHeroList = params.selfHeroList local newBlockXYMap = params.newBlockXYMap local baseAttack = params.baseAttack local count = 0 for _, hero in ipairs(selfHeroList) do if newBlockXYMap[hero.bindBlock.id].y > 0 then count = count + 1 end end return math.floor(assistSkillConfig[parValue].ex.upNums * count * baseAttack) end -- 辅助技能评价 - 咕噜 - 3291 被偷的主动技能可附带本英雄同等级的辅助技能效果 -- 公式: 1*英雄基础战力 function funcs:getAiAssiSkillEvaluate3291(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {assistSkillLevel=1}, local baseAttack = params.baseAttack return math.floor(assistSkillConfig[parValue].assistSkillLevel * baseAttack) end -- 辅助技能评价 - 画意 - 2311 buff生成的万能色块获得增益,消除额外提升X%的基础战力 -- 公式: 0.5*英雄基础战力 function funcs:getAiAssiSkillEvaluate2311(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {upNums=0.5}, local baseAttack = params.baseAttack return math.floor(assistSkillConfig[parValue].upNums * baseAttack) end -- 辅助技能评价 - 糯米 - 1311 破盾后,【护盾值】的s%转化为英雄自身战力 -- 公式: 生成英雄战力*10%*100% function funcs:getAiAssiSkillEvaluate1311(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {ex={percent=10}}, local newHeroAttack = params.newHeroAttack return math.floor(assistSkillConfig[parValue].ex.percent * 0.01 * newHeroAttack * 1) end -- 辅助技能评价 - 纤纤 - 4311 伤害加深:消除色块对敌方主角造成的伤害增加%s -- 公式: 4*对应技能色块战力*(110%-100%)*50% function funcs:getAiAssiSkillEvaluate4311(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {damagePercent=110}, local skillBase = skillInfo.skillBase return math.floor(4 * (assistSkillConfig[parValue].damagePercent - 100) * 0.01 * skillBase * 0.5) end -- 辅助技能评价 - 孤梦 - 3311 被冻结的英雄受到的伤害增加50% -- 公式: if:敌方英雄总战力>1.5倍我方英总z战力,我方英雄总战力*50%*75%,else:敌方英雄总战力*50%*75% function funcs:getAiAssiSkillEvaluate3311(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {defendPercent=-50}, local enemyHeroTotalEv = params.enemyHeroTotalEv local selfHeroTotalEv = params.selfHeroTotalEv local defendPercent = math.abs(assistSkillConfig[parValue].defendPercent) if enemyHeroTotalEv > (1.5 * selfHeroTotalEv) then return math.floor(defendPercent * 0.01 * selfHeroTotalEv * 0.75) else return math.floor(defendPercent * 0.01 * enemyHeroTotalEv * 0.75) end end -- 辅助技能评价 - 不酸 - 2321 单次攻击伤害增加至X% -- 公式: (30-25)%*4*生成英雄战力*75% function funcs:getAiAssiSkillEvaluate2321(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {ex={damagePercent={30, 30, 30, 30}}}, local defendPercent = (assistSkillConfig[parValue].ex.damagePercent or {})[1] or 0 local newHeroAttack = params.newHeroAttack return math.floor((defendPercent - 25) * newHeroAttack * 0.75) end -- 辅助技能评价 - 绿蛛 - 1321 伙伴牺牲的同时为自己主角恢复%s倍技能战力的血量 -- 公式: 1*英雄基础战力*50% function funcs:getAiAssiSkillEvaluate1321(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {upNums=1}, local defendPercent = assistSkillConfig[parValue].upNums local baseAttack = params.baseAttack return math.floor(defendPercent * baseAttack * 0.5) end -- 辅助技能评价 - 云中客 - 4321 缔结对方主角血量,己方主角伤害减免%s,并且接下来一回合内己方主角所受伤害同时反馈%s给对方 -- 公式: 10*0.1*英雄基础战力 function funcs:getAiAssiSkillEvaluate4321(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {defendPercent=10}, local defendPercent = assistSkillConfig[parValue].defendPercent local baseAttack = params.baseAttack return math.floor(defendPercent * baseAttack * 0.1) end -- 辅助技能评价 - 酿酿 - 3321 第二次攻击的攻击比例提升s% -- 公式: 生成英雄战力*(60-50)%*75% function funcs:getAiAssiSkillEvaluate3321(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {ex={damagePercent=60}}, local damagePercent = assistSkillConfig[parValue].ex.damagePercent local newHeroAttack = params.newHeroAttack return math.floor((damagePercent - 50) * newHeroAttack * 0.75) end -- 辅助技能评价 - 阿筝 - 2331 交换获得的英雄获得被换英雄战力的%s -- 公式: 我方最弱英雄*60% function funcs:getAiAssiSkillEvaluate2331(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {ex={percent=60}}, local percent = assistSkillConfig[parValue].ex.percent -- 最弱的自己人 local selfHeroList = params.selfHeroList local selfHeroLowestEv = 0 if #selfHeroList > 0 and selfHeroList[1] then selfHeroLowestEv = self:getHeroEvaluate(core, selfHeroList[1]) or 0 end return math.floor(percent * selfHeroLowestEv * 0.01) end -- 辅助技能评价 - 影生 - 1331 使用影生主动技能时,根据对方棋盘的技能数量提升英雄战力,每个技能提升%x被基础战力 -- 公式: 敌方英雄技能数量*1*英雄基础战力*100% function funcs:getAiAssiSkillEvaluate1331(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {ex={upNums=1}}, local upNums = assistSkillConfig[parValue].ex.upNums local enemyHeroCount = params.enemyHeroCount local baseAttack = params.baseAttack return math.floor(upNums * baseAttack * 1) end -- 辅助技能评价 - 江流儿 - 4331 对面虚弱期间对我方英雄造成伤害值的%s转化为主角气血恢复。 -- 公式: (max{(敌方所有英雄战力总和-我方所有英雄战力总和),0}+5*敌方平均技能色块战力)*50%*10%*50% function funcs:getAiAssiSkillEvaluate4331(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {ex={percent=10}}, local percent = assistSkillConfig[parValue].ex.percent local enemyHeroTotalEv = params.enemyHeroTotalEv local selfHeroTotalEv = params.selfHeroTotalEv local enemyAverageBaseAttack = params.enemyAverageBaseAttack local ev = (max((enemyHeroTotalEv - selfHeroTotalEv), 0) + 5 * enemyAverageBaseAttack) * 0.5 * percent * 0.5 * 0.01 return math.floor(ev) end -- 辅助技能评价 - 烟波 - 3331 因为叛变被杀死英雄属性的%s转化为主角血量 -- 公式: sum(我英雄战力*位置系数)*60%*50% -- 第一排:第二排:第三排:第四排:第五排=100%:70%:50%:30%:10%(第一排为接近中线的那排) function funcs:getAiAssiSkillEvaluate3331(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {ex={percent=50}}, local percent = assistSkillConfig[parValue].ex.percent -- TODO: Debug 测试代码,上线前修改过来. local selfHeroCount = params.selfHeroCount local averageBaseAttack = params.averageBaseAttack return math.floor(percent * selfHeroCount * averageBaseAttack * 0.5) end -- 辅助技能评价 - 含光 - 2341 增加的临时护盾%s转变为装备护盾 -- 公式: 我方全体英雄战力*50%*10%*65% function funcs:getAiAssiSkillEvaluate2341(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {ex={percent=10}}, local percent = assistSkillConfig[parValue].ex.percent local selfHeroTotalEv = params.selfHeroTotalEv return math.floor(percent * 0.01 * selfHeroTotalEv * 0.5 * 0.65) end -- 辅助技能评价 - 暖阳 - 1341 增加的临时攻击力,%s转化为英雄装备武器 -- 公式: 我方全体英雄战力*50%*10%*65% function funcs:getAiAssiSkillEvaluate1341(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {ex={percent=10}}, local percent = assistSkillConfig[parValue].ex.percent local selfHeroTotalEv = params.selfHeroTotalEv return math.floor(percent * 0.01 * selfHeroTotalEv * 0.5 * 0.65) end -- 辅助技能评价 - 蹴鞠 - 4341 使用主动技能受到的伤害的%s转化为主角血量 -- 公式: 3*英雄基础战力*50%*50% function funcs:getAiAssiSkillEvaluate4341(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {ex={percent=50}}, local percent = assistSkillConfig[parValue].ex.percent local baseAttack = params.baseAttack return math.floor(3 * percent * 0.01 * baseAttack * 0.5) end -- 辅助技能评价 - 璨月 - 3341 追击伤害提升%s -- 公式: (55-50)%*敌方英雄数量*英雄基础战力*75% function funcs:getAiAssiSkillEvaluate3341(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- params1 = {ex={damagePercent=55}}, local damagePercent = assistSkillConfig[parValue].ex.damagePercent local enemyHeroCount = params.enemyHeroCount local baseAttack = params.baseAttack return math.floor((damagePercent - 50) * enemyHeroCount * baseAttack * 0.75) end -- 辅助技能评价 - - -- 公式: function funcs:getAiAssiSkillEvaluate1002(core, skillInfo, params, assistSkillConfig) local parValue = string.format("params%s", skillInfo.newHeroAssistSkillLevel) -- local damagePercent = assistSkillConfig[parValue].ex.damagePercent local enemyHeroCount = params.enemyHeroCount local skillBase = skillInfo.skillBase return math.floor(damagePercent * skillBase * 0.75) end -- 获取英雄的战力 function funcs:getHeroEvaluate(core, hero) -- local buffs = hero:getBuffByType(battleConst.BUFF_TYPE.VALUE_SHIELD) -- local shield = 0 -- for _, buff in ipairs(buffs) do -- shield = shield + (buff.hp or 0) -- end -- return hero:getHp() + shield * 0.5 return hero:getHp() end return root