diff --git a/Assets/ManagedResources/~Lua/Modules/Battle/Test/View/SkillSetView.lua b/Assets/ManagedResources/~Lua/Modules/Battle/Test/View/SkillSetView.lua index 25bed7eb3c..d04926159f 100644 --- a/Assets/ManagedResources/~Lua/Modules/Battle/Test/View/SkillSetView.lua +++ b/Assets/ManagedResources/~Lua/Modules/Battle/Test/View/SkillSetView.lua @@ -85,7 +85,7 @@ function SkillSetView:Show(camp, pos, BattleView) self.nt7.text = nCombat.AttackDisplaceTime self.nt8.text = nCombat.AttackDisplaceBackTime self.nt9.text = nCombat.AttackDisplacement - self.nt10.text = nCombat.AttackDisplaceoffset==nil and "" or (nCombat.AttackDisplaceoffset[1].."#"..nCombat.AttackDisplaceoffset[2]) + self.nt10.text = (type(nCombat.AttackDisplaceoffset[1]) == "userdata" ) and "" or self:SetStr(nCombat.AttackDisplaceoffset) self.nt11.text = nCombat.ActionTime self.nt12.text = (type(nCombat.SkillNumbetTime[1][1]) == "userdata" or nCombat.SkillNumbetTime[1][1]==0) and "" or self:SetStr(nCombat.SkillNumbetTime) self.nt14.text = nCombat.EffectType diff --git a/Assets/ManagedResources/~Lua/Modules/Battle/View/Unit/EnemyView.lua b/Assets/ManagedResources/~Lua/Modules/Battle/View/Unit/EnemyView.lua index 97280a3eb3..69c147f1bd 100644 --- a/Assets/ManagedResources/~Lua/Modules/Battle/View/Unit/EnemyView.lua +++ b/Assets/ManagedResources/~Lua/Modules/Battle/View/Unit/EnemyView.lua @@ -587,7 +587,8 @@ function EnemyView:OnDamaged(atkRole, dmg, bCrit, finalDmg, damageType, dotType, -- local delay = combat.DamageDelay or 0 local continue = skill.continueTime or 0 - local count = skill.attackCount or 1 + local count = type(combat.SkillNumbetTime[1][1]) == "userdata" and 1 or combat.SkillNumbetTime[1][1] + local space = continue / count local d = math.floor(dmg / count) -- 如果平均伤害小于0 则 @@ -599,25 +600,39 @@ function EnemyView:OnDamaged(atkRole, dmg, bCrit, finalDmg, damageType, dotType, LogYellow(string.format("目标阵营:%s, 位置:%s, 总伤害:%s, 伤害段数:%s,每段伤害:%s", self.camp, self.role.position, dmg, count, d)) end -- 伤害文字延时,有些受击特效不是立刻播放文字 - self:DelayFunc(delay/1000, function() + -- 伤害文字 - if count ~= 1 and skill.skillnumberTime==nil then - -- 多段伤害 + -- if count ~= 1 and skill.SkillNumbetTime==nil and skill.SkillNumbetTime~=0 then + if count ~=1 then + if combat.SkillNumbetTime and combat.SkillNumbetTime[1] and (type(combat.SkillNumbetTime[1][1]) ~= "userdata" and combat.SkillNumbetTime[1][1]~=0) then + for i = 1, #combat.SkillNumbetTime do + self:DelayFunc(combat.SkillNumbetTime[i][2]/1000, function() + local fd = dmg - d *(count - 1) + self:OnceDamaged(atkRole, fd, bCrit, finalDmg, damageType, dotType, skill) + -- 被伤害卡牌表现 + self:DOHitEffect(continue) + end) + end + end + -- 多段伤害 -- 后续伤害延迟打出 - self:LoopFunc(space, count - 1, function() - self:OnceDamaged(atkRole, d, bCrit, finalDmg, damageType, dotType, skill) - end) - -- 立刻打出第一次伤害 - local fd = dmg - d *(count - 1) - self:OnceDamaged(atkRole, fd, bCrit, finalDmg, damageType, dotType, skill) - -- 被伤害卡牌表现 - self:DOHitEffect(continue) + -- self:LoopFunc(space, count - 1, function() + -- self:OnceDamaged(atkRole, d, bCrit, finalDmg, damageType, dotType, skill) + -- end) + -- -- 立刻打出第一次伤害 + -- local fd = dmg - d *(count - 1) + -- self:OnceDamaged(atkRole, fd, bCrit, finalDmg, damageType, dotType, skill) + -- -- 被伤害卡牌表现 + -- self:DOHitEffect(continue) + else - self:OnceDamaged(atkRole, dmg, bCrit, finalDmg, damageType, dotType, skill) + self:DelayFunc(delay/1000, function() + self:OnceDamaged(atkRole, dmg, bCrit, finalDmg, damageType, dotType, skill) -- 被伤害卡牌表现 - self:DOHitEffect() + self:DOHitEffect() + end) end - end) + -- 播放特效 self.SkillCaster:CheckSkillHitEffect("hit", combat, skill) else diff --git a/Assets/ManagedResources/~Lua/Modules/Battle/View/Unit/PlayerView.lua b/Assets/ManagedResources/~Lua/Modules/Battle/View/Unit/PlayerView.lua index f373de6ffd..860495ed27 100644 --- a/Assets/ManagedResources/~Lua/Modules/Battle/View/Unit/PlayerView.lua +++ b/Assets/ManagedResources/~Lua/Modules/Battle/View/Unit/PlayerView.lua @@ -690,7 +690,8 @@ function PlayerView:OnDamaged(atkRole, dmg, bCrit, finalDmg, damageType, dotType -- local delay = combat.DamageDelay or 0 local continue = skill.continueTime or 0 - local count = skill.attackCount or 1 + --local count = skill.attackCount or 1 + local count = type(combat.SkillNumbetTime[1][1]) == "userdata" and 1 or combat.SkillNumbetTime[1][1] local space = continue / count local d = math.floor(dmg / count) @@ -703,26 +704,38 @@ function PlayerView:OnDamaged(atkRole, dmg, bCrit, finalDmg, damageType, dotType LogYellow(string.format("目标阵营:%s, 位置:%s, 总伤害:%s, 伤害段数:%s,每段伤害:%s", self.camp, self.role.position, dmg, count, d)) end -- 伤害文字延时,有些受击特效不是立刻播放文字 - self:DelayFunc(delay/1000, function() + -- 伤害文字 - -- if count ~= 1 and skill.skillnumberTime==nil and skill.skillnumberTime~=0 then - if count ~= 1 and skill.skillnumberTime==nil then + -- if count ~= 1 and skill.SkillNumbetTime==nil and skill.SkillNumbetTime~=0 then + if combat.SkillNumbetTime and combat.SkillNumbetTime[1] and (type(combat.SkillNumbetTime[1][1]) ~= "userdata" and combat.SkillNumbetTime[1][1]~=0) then + for i = 1, #combat.SkillNumbetTime do + self:DelayFunc(combat.SkillNumbetTime[i][2]/1000, function() + local fd = dmg - d *(count - 1) + self:OnceDamaged(atkRole, fd, bCrit, finalDmg, damageType, dotType, skill) + -- 被伤害卡牌表现 + self:DOHitEffect(continue) + end) + + + end -- 多段伤害 -- 后续伤害延迟打出 - self:LoopFunc(space, count - 1, function() - self:OnceDamaged(atkRole, d, bCrit, finalDmg, damageType, dotType, skill) - end) - -- 立刻打出第一次伤害 - local fd = dmg - d *(count - 1) - self:OnceDamaged(atkRole, fd, bCrit, finalDmg, damageType, dotType, skill) - -- 被伤害卡牌表现 - self:DOHitEffect(continue) + -- self:LoopFunc(space, count - 1, function() + -- self:OnceDamaged(atkRole, d, bCrit, finalDmg, damageType, dotType, skill) + -- end) + -- -- 立刻打出第一次伤害 + -- local fd = dmg - d *(count - 1) + -- self:OnceDamaged(atkRole, fd, bCrit, finalDmg, damageType, dotType, skill) + -- -- 被伤害卡牌表现 + -- self:DOHitEffect(continue) else + self:DelayFunc(delay/1000, function() self:OnceDamaged(atkRole, dmg, bCrit, finalDmg, damageType, dotType, skill) -- 被伤害卡牌表现 self:DOHitEffect() + end) end - end) + -- 播放特效 self.SkillCaster:CheckSkillHitEffect("hit", combat, skill) else diff --git a/Assets/ManagedResources/~Lua/Modules/Battle/View/Unit/SkillCaster.lua b/Assets/ManagedResources/~Lua/Modules/Battle/View/Unit/SkillCaster.lua index fa2ec3be5f..bdf5d74eb7 100644 --- a/Assets/ManagedResources/~Lua/Modules/Battle/View/Unit/SkillCaster.lua +++ b/Assets/ManagedResources/~Lua/Modules/Battle/View/Unit/SkillCaster.lua @@ -789,7 +789,7 @@ end -- 检测技能命中特效显示 function SkillCaster:CheckSkillHitEffect(checkType, combat, skill) - if not combat then return end + if not combat or combat.Hit==nil or combat.Hit=="" then return end if checkType == "skill" then -- 释放技能时检测,如果是范围命中效果 if combat.HitEffectType == 2 and combat.Hit then