Commit e996b82a8b92e1badb2f8624511d87b9423d5df8

Authored by zhouahaihai
1 parent b0fe1817

冒险增加防御属性

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