diff --git a/Assets/ManagedResources/~Lua/Modules/Battle/BattleManager.lua b/Assets/ManagedResources/~Lua/Modules/Battle/BattleManager.lua index 32676adf2b..757819c76c 100644 --- a/Assets/ManagedResources/~Lua/Modules/Battle/BattleManager.lua +++ b/Assets/ManagedResources/~Lua/Modules/Battle/BattleManager.lua @@ -277,7 +277,6 @@ function this.PokemonUnitAdapter(pokemonUnit,camp,_teamDamage) property = {}, } -- 技能 - LogError(pokemonUnit.unitSkillIds) local skills = string.split(pokemonUnit.unitSkillIds, "|") if skills then if skills[1] then diff --git a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Misc/BattleUtil.lua b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Misc/BattleUtil.lua index 0ddc485d18..613cca285c 100644 --- a/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Misc/BattleUtil.lua +++ b/Assets/ManagedResources/~Lua/Modules/Battle/Logic/Misc/BattleUtil.lua @@ -683,17 +683,89 @@ function BattleUtil.ApplyDamageNoPassive(skill, atkRole, defRole, damage, bCrit, damage = damage - dmgDeduction end - atkRole.Event:DispatchEvent(BattleEventName.PassiveDamaging, damagingFunc, defRole, damage, skill, dotType, bCrit,damageType, dotType,isDirect) + --atkRole.Event:DispatchEvent(BattleEventName.PassiveDamaging, damagingFunc, defRole, damage, skill, dotType, bCrit,damageType, dotType,isDirect) defRole.Event:DispatchEvent(BattleEventName.PassiveBeDamaging, damagingFunc, atkRole, damage, skill, dotType, bCrit) - BattleLogic.Event:DispatchEvent(BattleEventName.PassiveDamaging, damagingFunc, atkRole, defRole, damage, skill, dotType, bCrit,damageType, dotType,isDirect) + --BattleLogic.Event:DispatchEvent(BattleEventName.PassiveDamaging, damagingFunc, atkRole, defRole, damage, skill, dotType, bCrit,damageType, dotType,isDirect) - atkRole.Event:DispatchEvent(BattleEventName.FinalDamage, damagingFunc, defRole, damage, skill, dotType, bCrit, damageType) + --atkRole.Event:DispatchEvent(BattleEventName.FinalDamage, damagingFunc, defRole, damage, skill, dotType, bCrit, damageType) defRole.Event:DispatchEvent(BattleEventName.FinalBeDamage, damagingFunc, atkRole, damage, skill, dotType, bCrit, damageType) defRole.Event:DispatchEvent(BattleEventName.FinalBeDamageEnd, damagingFunc, atkRole, damage, skill, dotType, bCrit, damageType,isDirect) - BattleLogic.Event:DispatchEvent(BattleEventName.FinalDamage, damagingFunc, atkRole, defRole, damage, skill, dotType, bCrit, damageType) + --BattleLogic.Event:DispatchEvent(BattleEventName.FinalDamage, damagingFunc, atkRole, defRole, damage, skill, dotType, bCrit, damageType) -- - return BattleUtil.FinalDamage(skill, atkRole, defRole, damage, bCrit, damageType, dotType,isDirect) + -- return BattleUtil.FinalDamage(skill, atkRole, defRole, damage, bCrit, damageType, dotType,isDirect) + if damage < 0 then damage = 0 end + + if skill and skill.type==BattleSkillType.Special then + skill.owner.superSkillDamage=damage + end + --计算血量防护 + local realDamage=damage + --血量防护只会防直接伤害 + if defRole.bloodShield and skill then + realDamage=math.abs(defRole.bloodShield:CountBloodValue(damage,atkRole)) + -- damage=realDamage + end + --检测历战之躯 + -- 造成的最终伤害 + local damagingFunc = function(dmgDeduction) + realDamage = realDamage - dmgDeduction + damage=realDamage + end + defRole.Event:DispatchEvent(BattleEventName.CheckLiZhanZhiQu, damagingFunc, atkRole, realDamage, skill, dotType, bCrit, damageType,isDirect) + local isImmune=BattleUtil.CheckDamageIsImmune(atkRole,defRole) + if isImmune then + realDamage=0 + damage=0 + end + --御甲过滤后的伤害只会处理扣血 by: wangzhenxing shihongyi 2021/09/27 + local finalDmg = defRole.data:SubValue(RoleDataName.Hp,realDamage) + if finalDmg >= 0 then + if defRole:GetRoleData(RoleDataName.Hp) <= 0 and not defRole:IsDead() then + defRole:SetDead(damage) + defRole.Event:DispatchEvent(BattleEventName.RoleDead, atkRole) + --atkRole.Event:DispatchEvent(BattleEventName.RoleKill, defRole,skill) + --BattleLogic.Event:DispatchEvent(BattleEventName.BattleRoleDead, defRole, atkRole,skill,dotType) + end + + --atkRole.Event:DispatchEvent(BattleEventName.RoleDamage, defRole, damage, bCrit, finalDmg, damageType, dotType, skill) + defRole.Event:DispatchEvent(BattleEventName.RoleBeDamaged, atkRole, damage, bCrit, finalDmg, damageType, dotType, skill,isImmune) + --BattleLogic.Event:DispatchEvent(BattleEventName.RoleDamage, atkRole, defRole, damage, bCrit, finalDmg, damageType, dotType, skill) + --BattleLogic.Event:DispatchEvent(BattleEventName.RoleBeDamaged, defRole, atkRole, damage, bCrit, finalDmg, damageType, dotType, skill) + if bCrit then + --atkRole.Event:DispatchEvent(BattleEventName.RoleCrit, defRole, damage, bCrit, finalDmg, damageType, skill) + defRole.Event:DispatchEvent(BattleEventName.RoleBeCrit, atkRole, damage, bCrit, finalDmg, damageType, skill) + end + if skill then + --atkRole.Event:DispatchEvent(BattleEventName.RoleHit, defRole, damage, bCrit, finalDmg, damageType, skill,isDirect) + defRole.Event:DispatchEvent(BattleEventName.RoleBeHit, atkRole, damage, bCrit, finalDmg, damageType, skill,isDirect) + --如果目标是主燃烧目标 or 目标身上有燃烧效果 + if atkRole.curMainTarget==defRole or BattleLogic.BuffMgr:HasBuff(defRole, BuffName.DOT,function(buff) return buff.damageType == 1 end) then + --atkRole.Event:DispatchEvent(BattleEventName.HitRoleInBurn,skill,defRole) + end + end + --如果不是技能带的伤害,并且是直接伤害就,,,,, + --用于处理不触发特性并且是直接伤害的伤害 isDirect 暂时先为bool值,后期可根据需求做修改扩展 by:王振兴 2020/10/12 16:18 + if isDirect and not skill then + --atkRole.Event:DispatchEvent(BattleEventName.RoleHit, defRole, damage, bCrit, finalDmg, damageType, skill,isDirect) + defRole.Event:DispatchEvent(BattleEventName.RoleBeHit, atkRole, damage, bCrit, finalDmg, damageType, skill,isDirect) + end + + end + + -- 战斗记录用 + BattleLogic.Event:DispatchEvent(BattleEventName.RecordDamage, atkRole, defRole, damage) + -- + BattleLogManager.Log( + "Final Damage", + "acamp", atkRole.camp, + "apos", atkRole.position, + "tcamp", defRole.camp, + "tpos", defRole.position, + "damage", damage, + "dotType", tostring(dotType) + ) + return damage end diff --git a/Assets/ManagedResources/~Lua/Modules/Formation/FormationPanelV2.lua b/Assets/ManagedResources/~Lua/Modules/Formation/FormationPanelV2.lua index cbaeea3197..26a640115d 100644 --- a/Assets/ManagedResources/~Lua/Modules/Formation/FormationPanelV2.lua +++ b/Assets/ManagedResources/~Lua/Modules/Formation/FormationPanelV2.lua @@ -184,7 +184,7 @@ function this:BindEvent() this:ClosePanel() end) --筛选按钮 - for i = 0, 4 do + for i = 0, 5 do Util.AddOnceClick(tabs[i], function() if i == proId then proId=ProIdConst.All @@ -270,8 +270,8 @@ function this:OnOpen(_panelType,...) this.formTip:SetActive(false) this.tips:SetActive(false) this.empty:SetActive(false) - this.opView = require(this.PanelOptionView[_panelType]) + LogError("paneltype==".._panelType) this.opView.Init(this, ...) parameter = ... this.SetCurFormationIndex(this.opView:GetFormationIndex()) @@ -1269,19 +1269,22 @@ function this.SetOneKeyGo() end for k, v in ipairs(heros) do local curSingleherodata = HeroManager.GetSingleHeroData(v.dynamicId) - if not upHeroSidTable[curSingleherodata.id] then - if #this.choosedList < 6 then - for n = 1, #posArr do - upHeroSidTable[curSingleherodata.id] = curSingleherodata.id - table.insert(this.choosedList, {heroId = v.dynamicId, position=posArr[n]}) - if this.opView.AddHeroToTeam then - this.opView.AddHeroToTeam(v.dynamicId, posArr[n], this.curFormationIndex) + if curSingleherodata.changeProId~=5 then + if not upHeroSidTable[curSingleherodata.id] then + if #this.choosedList < 6 then + for n = 1, #posArr do + upHeroSidTable[curSingleherodata.id] = curSingleherodata.id + table.insert(this.choosedList, {heroId = v.dynamicId, position=posArr[n]}) + if this.opView.AddHeroToTeam then + this.opView.AddHeroToTeam(v.dynamicId, posArr[n], this.curFormationIndex) + end + table.remove(posArr,n) + break end - table.remove(posArr,n) - break end end end + end this.SetCardsData() this.OnClickTabBtn(proId,false,false)