From ae9a74b56e09cfe93f91a3631075581d1230de3b Mon Sep 17 00:00:00 2001 From: suhongyang <1609423485@qq.com> Date: Wed, 10 Jul 2019 19:49:16 +0800 Subject: [PATCH] 返回miss,快速战斗逻辑 --- src/GlobalVar.lua | 1 + src/adv/Adv.lua | 6 +++++- src/adv/AdvBattle.lua | 10 ++++++++-- src/adv/AdvPlayer.lua | 3 ++- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/GlobalVar.lua b/src/GlobalVar.lua index 8f23f8c..8674fff 100644 --- a/src/GlobalVar.lua +++ b/src/GlobalVar.lua @@ -102,6 +102,7 @@ AdvBackEventType = { DefChange = 12, -- 防御变化 Passive = 13, -- 獲得被動 TurnEnd = 14, -- 回合结束 + Miss = 15, -- miss } AdvScoreType = { diff --git a/src/adv/Adv.lua b/src/adv/Adv.lua index 4c6afa5..eb7bfd1 100644 --- a/src/adv/Adv.lua +++ b/src/adv/Adv.lua @@ -700,7 +700,7 @@ end --战斗 普通攻击 local function clickMonster(self, room, block, params) - self.battle:battleBegin(room.roomId, block.blockId) + self.battle:battleBegin(room.roomId, block.blockId, params.quick) return true end @@ -1044,6 +1044,10 @@ end function Adv:backHpChange(enemyId, change, isMax) self:pushBackEvent(AdvBackEventType.HpChange, {enemyId = enemyId, change = change, isMax = isMax}) end + +function Adv:backMiss(enemyId) + self:pushBackEvent(AdvBackEventType.Miss, {enemyId = enemyId}) +end -- if is player enemyId is nil function Adv:backAtkChange(enemyId, change) self:pushBackEvent(AdvBackEventType.AtkChange, {enemyId = enemyId, change = change}) diff --git a/src/adv/AdvBattle.lua b/src/adv/AdvBattle.lua index 41206b6..bebb612 100644 --- a/src/adv/AdvBattle.lua +++ b/src/adv/AdvBattle.lua @@ -112,7 +112,7 @@ function Battle:isBattleEnd() end --战斗开始 -function Battle:battleBegin(roomId, blockId) +function Battle:battleBegin(roomId, blockId, isQuick) self.tempData = {} -- 清理上次战斗数据 if self.enemy then self.player:reset(self.adv.advTeam.player) @@ -123,7 +123,13 @@ function Battle:battleBegin(roomId, blockId) self.enemy = enemy self.player:battleBegin() self.enemy:battleBegin() - self:doBattleTurn() + if not isQuick then + self:doBattleTurn() + return + end + while not enemy.isDead and not self.player.isDead do + self:doBattleTurn() + end end end diff --git a/src/adv/AdvPlayer.lua b/src/adv/AdvPlayer.lua index 65aec9c..5894f9e 100644 --- a/src/adv/AdvPlayer.lua +++ b/src/adv/AdvPlayer.lua @@ -232,7 +232,7 @@ function BaseObject:getInjuredValue(value) return math.max(0, (value + injuredChange[0]) * (1 + injuredChange[1]) - self.def) end ---最终伤害 = [ 敌方攻击 * (1+伤害增加百分比-伤害减少百分比)*(1+受伤增加百分比-受伤减少百分比)+(伤害增加固定值-伤害增加固定值+受伤增加固定值-受伤增加固定值)]*(1+侍宠百分比)-侍宠固定值 +--最终伤害 = [ (敌方攻击 - 己方防御) * (1+伤害增加百分比-伤害减少百分比)*(1+受伤增加百分比-受伤减少百分比)+(伤害增加固定值-伤害增加固定值+受伤增加固定值-受伤增加固定值)]*(1+侍宠百分比)-侍宠固定值 -- params -- hurtType 1 普攻伤害 2 buff伤害 3 反弹伤害 4 真实伤害 --进入这个方法之前计算好释放者加成的伤害 function BaseObject:hurt(value, releaser, params) @@ -246,6 +246,7 @@ function BaseObject:hurt(value, releaser, params) local hit = releaser.hit - self.miss --命中率 if hit < math.randomInt(1, 100) then --miss + self.battle.adv:backMiss(self.id) return end self:triggerPassive(Passive.SELF_HURT, {trigger = releaser}) -- libgit2 0.21.2