Commit e996b82a8b92e1badb2f8624511d87b9423d5df8

Authored by zhouahaihai
1 parent b0fe1817

冒险增加防御属性

@@ -99,6 +99,7 @@ AdvBackEventType = { @@ -99,6 +99,7 @@ AdvBackEventType = {
99 BlockChange = 9, -- 块改变 99 BlockChange = 9, -- 块改变
100 PowerChange = 10, --体力改变 100 PowerChange = 10, --体力改变
101 Dead = 11, --怪死亡 101 Dead = 11, --怪死亡
  102 + DefChange = 12, -- 防御变化
102 } 103 }
103 104
104 AdvScoreType = { 105 AdvScoreType = {
@@ -1010,6 +1010,12 @@ end @@ -1010,6 +1010,12 @@ end
1010 function Adv:backAtkChange(enemyId, change) 1010 function Adv:backAtkChange(enemyId, change)
1011 self:pushBackEvent(AdvBackEventType.AtkChange, {enemyId = enemyId, change = change}) 1011 self:pushBackEvent(AdvBackEventType.AtkChange, {enemyId = enemyId, change = change})
1012 end 1012 end
  1013 +
  1014 +-- if is player enemyId is nil
  1015 +function Adv:backDefChange(enemyId, change)
  1016 + self:pushBackEvent(AdvBackEventType.DefChange, {enemyId = enemyId, change = change})
  1017 +end
  1018 +
1013 -- if is player enemyId is nil 1019 -- if is player enemyId is nil
1014 function Adv:backBuff(enemyId, buffId, isDel) 1020 function Adv:backBuff(enemyId, buffId, isDel)
1015 self:pushBackEvent(AdvBackEventType.Buff, {enemyId = enemyId, buffId = buffId, isDel = isDel}) 1021 self:pushBackEvent(AdvBackEventType.Buff, {enemyId = enemyId, buffId = buffId, isDel = isDel})
src/adv/AdvBattle.lua
@@ -39,6 +39,7 @@ function Battle:initPlayer() @@ -39,6 +39,7 @@ function Battle:initPlayer()
39 end 39 end
40 player.hp = hp 40 player.hp = hp
41 player.atk = tonumber(string.format("%0.0f", player.hp * 0.1)) --todo 系数是临时的 41 player.atk = tonumber(string.format("%0.0f", player.hp * 0.1)) --todo 系数是临时的
  42 + player.def = 0
42 player.miss = 0 43 player.miss = 0
43 player.hit = 100 44 player.hit = 100
44 self.adv.advTeam.player = player 45 self.adv.advTeam.player = player
@@ -64,6 +65,7 @@ function Battle:addEnemy(room, block) @@ -64,6 +65,7 @@ function Battle:addEnemy(room, block)
64 enemy.atk = enemyCsv.atk + enemyCsv.levelatk * self.adv.advInfo.level 65 enemy.atk = enemyCsv.atk + enemyCsv.levelatk * self.adv.advInfo.level
65 enemy.hit = enemyCsv.hit + enemyCsv.levelhit * self.adv.advInfo.level 66 enemy.hit = enemyCsv.hit + enemyCsv.levelhit * self.adv.advInfo.level
66 enemy.miss = enemyCsv.miss + enemyCsv.levelmiss * self.adv.advInfo.level 67 enemy.miss = enemyCsv.miss + enemyCsv.levelmiss * self.adv.advInfo.level
  68 + enemy.def = enemyCsv.def + enemyCsv.leveldef * self.adv.advInfo.level
67 enemy.passives = {} 69 enemy.passives = {}
68 for _, id in ipairs(enemyCsv.passive:toArray(true, "=")) do 70 for _, id in ipairs(enemyCsv.passive:toArray(true, "=")) do
69 table.insert(enemy.passives, {id = id}) 71 table.insert(enemy.passives, {id = id})
src/adv/AdvBuff.lua
@@ -18,6 +18,7 @@ Buff.OPEN_BLOCK = 14 -- 翻开格子(每回合) @@ -18,6 +18,7 @@ Buff.OPEN_BLOCK = 14 -- 翻开格子(每回合)
18 Buff.POWER_CHANGE = 15 -- 体力变化(每回合) 18 Buff.POWER_CHANGE = 15 -- 体力变化(每回合)
19 Buff.HIT_CHANGE = 16 -- 命中变化(状态) 19 Buff.HIT_CHANGE = 16 -- 命中变化(状态)
20 Buff.MISS_CHANGE = 17 -- 闪避变化(状态) 20 Buff.MISS_CHANGE = 17 -- 闪避变化(状态)
  21 +Buff.DEF_CHANGE = 18 -- 防御变化(状态)
21 22
22 --角色一些属性的变化 23 --角色一些属性的变化
23 local function commonAttr(_Buff, attrName) 24 local function commonAttr(_Buff, attrName)
@@ -106,6 +107,10 @@ local BuffFactory = { @@ -106,6 +107,10 @@ local BuffFactory = {
106 [Buff.MISS_CHANGE] = function(_Buff) 107 [Buff.MISS_CHANGE] = function(_Buff)
107 commonAttr(_Buff, "miss") 108 commonAttr(_Buff, "miss")
108 end, 109 end,
  110 +
  111 + [Buff.DEF_CHANGE] = function(_Buff)
  112 + commonAttr(_Buff, "miss")
  113 + end,
109 114
110 [Buff.BACK_HURT] = function(_Buff) 115 [Buff.BACK_HURT] = function(_Buff)
111 _Buff._effectValue = function(self) 116 _Buff._effectValue = function(self)
src/adv/AdvPlayer.lua
@@ -8,6 +8,7 @@ function BaseObject:ctor(battle) @@ -8,6 +8,7 @@ function BaseObject:ctor(battle)
8 self.hpMax = 0 8 self.hpMax = 0
9 self.hp = 0 9 self.hp = 0
10 self.atk = 0 10 self.atk = 0
  11 + self.def = 0
11 self.aType = 0 --攻击类型 12 self.aType = 0 --攻击类型
12 self.lock = nil 13 self.lock = nil
13 self.passives = {} --固有技能 14 self.passives = {} --固有技能
@@ -22,10 +23,12 @@ function BaseObject:initData(data) @@ -22,10 +23,12 @@ function BaseObject:initData(data)
22 self.atk = data.atk 23 self.atk = data.atk
23 self.miss = data.miss 24 self.miss = data.miss
24 self.hit = data.hit 25 self.hit = data.hit
  26 + self.def = data.def
25 --基础值记录 27 --基础值记录
26 self._atk = data._atk or self.atk 28 self._atk = data._atk or self.atk
27 self._miss = data._miss or self.miss 29 self._miss = data._miss or self.miss
28 self._hit = data._hit or self.hit 30 self._hit = data._hit or self.hit
  31 + self._def = data._def or self.def
29 end 32 end
30 -- 角色初始化完以后才是 技能和被动技能 方便初始化 buff 的 释放对象 33 -- 角色初始化完以后才是 技能和被动技能 方便初始化 buff 的 释放对象
31 function BaseObject:initAfter(data) 34 function BaseObject:initAfter(data)
@@ -136,13 +139,15 @@ end @@ -136,13 +139,15 @@ end
136 function BaseObject:reSetAttr(field) 139 function BaseObject:reSetAttr(field)
137 local old = self[field] 140 local old = self[field]
138 self[field] = self["_" .. field] --重置一下 141 self[field] = self["_" .. field] --重置一下
139 - local fieldToBuff = {atk = Buff.IMMNUE_ATK, hit = Buff.HIT_CHANGE, miss = Buff.MISS_CHANGE} 142 + local fieldToBuff = {atk = Buff.IMMNUE_ATK, hit = Buff.HIT_CHANGE, miss = Buff.MISS_CHANGE, def = Buff.DEF_CHANGE}
140 local effect = self:getCommonBuffEffect(fieldToBuff[field]) 143 local effect = self:getCommonBuffEffect(fieldToBuff[field])
141 self[field] = (self[field] + effect[0]) * (1 + effect[1]) 144 self[field] = (self[field] + effect[0]) * (1 + effect[1])
142 local delta = self[field] - old 145 local delta = self[field] - old
143 if delta ~= 0 then 146 if delta ~= 0 then
144 if field == "atk" then 147 if field == "atk" then
145 self.battle.adv:backAtkChange(self.id, delta) 148 self.battle.adv:backAtkChange(self.id, delta)
  149 + elseif field == "def" then
  150 + self.battle.adv:backDefChange(self.id, delta)
146 end 151 end
147 end 152 end
148 end 153 end
@@ -156,7 +161,7 @@ end @@ -156,7 +161,7 @@ end
156 --计算自己伤害减免后的值 161 --计算自己伤害减免后的值
157 function BaseObject:getInjuredValue(value) 162 function BaseObject:getInjuredValue(value)
158 local injuredChange = self:getInjuredChange() 163 local injuredChange = self:getInjuredChange()
159 - return math.max(0, (value + injuredChange[0]) * (1 + injuredChange[1])) 164 + return math.max(0, (value + injuredChange[0]) * (1 + injuredChange[1]) - self.def)
160 end 165 end
161 166
162 --最终伤害 = [ 敌方攻击 * (1+伤害增加百分比-伤害减少百分比)*(1+受伤增加百分比-受伤减少百分比)+(伤害增加固定值-伤害增加固定值+受伤增加固定值-受伤增加固定值)]*(1+侍宠百分比)-侍宠固定值 167 --最终伤害 = [ 敌方攻击 * (1+伤害增加百分比-伤害减少百分比)*(1+受伤增加百分比-受伤减少百分比)+(伤害增加固定值-伤害增加固定值+受伤增加固定值-受伤增加固定值)]*(1+侍宠百分比)-侍宠固定值
@@ -393,7 +398,7 @@ function BaseObject:getDB() @@ -393,7 +398,7 @@ function BaseObject:getDB()
393 local db = {} 398 local db = {}
394 db.hpMax = self.hpMax 399 db.hpMax = self.hpMax
395 db.hp = self.hp 400 db.hp = self.hp
396 - local baseAttr = {"atk", "miss", "hit"} 401 + local baseAttr = {"atk", "miss", "hit", "def"}
397 for _, field in pairs(baseAttr) do 402 for _, field in pairs(baseAttr) do
398 db[field] = self[field] 403 db[field] = self[field]
399 db["_"..field] = self["_" .. field] 404 db["_"..field] = self["_" .. field]